diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json deleted file mode 100644 index 7b3469501..000000000 --- a/.config/dotnet-tools.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "isRoot": true, - "tools": { - "cake.tool": { - "version": "4.0.0", - "commands": [ - "dotnet-cake" - ] - } - } - } \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index e7d1c5251..baf5828d8 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,10 +1,7 @@ -[*.{sln,resx}] -indent_style = tab - -[*.{cs,sh,py,json,page,cake}] +[*.{h,cpp,py,json,page,txt}] indent_style = space indent_size = 4 -[*.{csproj,xml,css,md,blp,yml}] +[*.{xml,css,md,blp,yml}] indent_style = space indent_size = 2 diff --git a/.gitattributes b/.gitattributes index 02563761b..82673e60e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,5 @@ # Auto detect text files and perform LF normalization * text eol=lf -*.csproj eol=crlf -*.sln eol=crlf *.png binary *.jpg binary *.ico binary @@ -10,4 +8,4 @@ *.otf binary *.ttf binary # Exclude Docs From Stats -NickvisionMoney.Shared/Docs/** linguist-documentation \ No newline at end of file +docs/** linguist-documentation \ No newline at end of file diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml index bf3e5a1f6..a731d8c0a 100644 --- a/.github/workflows/flatpak.yml +++ b/.github/workflows/flatpak.yml @@ -10,7 +10,7 @@ permissions: id-token: write contents: read jobs: - flatpak: + gnome-flatpak: name: "GNOME on Flatpak" runs-on: ubuntu-latest if: ${{ github.event.pull_request.user.login != 'weblate' }} @@ -22,13 +22,11 @@ jobs: arch: [x86_64] fail-fast: false steps: - - uses: actions/checkout@v3 - with: - submodules: recursive + - uses: actions/checkout@v4 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6.3 with: bundle: org.nickvision.money.flatpak manifest-path: flatpak/org.nickvision.money.json cache-key: flatpak-builder-${{ github.sha }} arch: ${{ matrix.arch }} - restore-cache: true + restore-cache: true \ No newline at end of file diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml index 55ff257f5..b7e7618bd 100644 --- a/.github/workflows/snap.yml +++ b/.github/workflows/snap.yml @@ -10,28 +10,21 @@ permissions: id-token: write contents: read jobs: - snap: + gnome-snap: name: "GNOME on Snap" runs-on: ubuntu-latest - strategy: - matrix: - arch: [x86_64] - fail-fast: false steps: - - name: Checkout Git repository - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Build Snap + - uses: actions/checkout@v4 + - name: Build uses: snapcore/action-build@v1 id: snapcraft-build with: snapcraft-args: "-v" - uses: actions/upload-artifact@v4 with: - name: denaro-amd64-snap - path: ${{ steps.snapcraft-build.outputs.snap }} - - name: Upload and release Denaro Snap + name: application-snap + path: ${{ steps.snapcraft-build.outputs.snap }} + - name: Upload and Release Edge uses: snapcore/action-publish@v1 if: ${{ github.event_name != 'pull_request' }} env: diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml index 50cc1697c..5e7a1f491 100644 --- a/.github/workflows/spelling.yml +++ b/.github/workflows/spelling.yml @@ -9,9 +9,9 @@ jobs: codespell: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: codespell-project/actions-codespell@master with: check_filenames: true - skip: cargo-sources.json,.git,*.svg,*.html,*.js,*.po,*.pot,*.page + skip: cargo-sources.json,.git,*.svg,*.html,*.js,*.po,*.pot,*.page,*.map,sqlite3.h,sqlite3.c,pch.h,CONTRIBUTING.md ignore_words_list: gir diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..dc38e8274 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,74 @@ +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + types: [ "review_requested", "ready_for_review" ] + workflow_dispatch: +name: Test +permissions: + id-token: write + contents: read +env: + BUILD_TYPE: Release + GITHUB_ACTIONS: true + VCPKG_ROOT: ${{github.workspace}}/vcpkg +jobs: + windows: + name: "Test on Windows" + runs-on: windows-latest + if: ${{ github.event.pull_request.user.login != 'weblate' }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + - name: "Setup Environment" + run: mkdir build + - name: "Vcpkg" + uses: johnwason/vcpkg-action@v5 + id: vcpkg + with: + pkgs: boost-date-time gtest libnick podofo rapidcsv + triplet: x64-windows + cache-key: windows-latest + revision: 4af63c6f3ed667437b8fe0789a7fbc29936c9802 + token: ${{ secrets.GITHUB_TOKEN }} + - name: "Build" + working-directory: ${{github.workspace}}/build + run: | + cmake -G "Visual Studio 17 2022" .. -DBUILD_TESTING=ON -DBACKEND_ONLY=ON + cmake --build . --config ${{env.BUILD_TYPE}} + - name: Test + run: ${{github.workspace}}/build/libdenaro/Release/libdenaro_test.exe + linux: + name: "Test on Linux" + runs-on: ubuntu-latest + if: ${{ github.event.pull_request.user.login != 'weblate' }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + - name: "Setup Environment" + run: | + mkdir build + sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa -y + sudo apt-get update + sudo apt-get install g++-13 gcc-13 xdg-user-dirs gettext tzdata locales gnuplot -y + xdg-user-dirs-update + sudo locale-gen en_US.UTF-8 + sudo update-locale LANG=en_US.UTF-8 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100 --slave /usr/bin/g++ g++ /usr/bin/g++-13 --slave /usr/bin/gcov gcov /usr/bin/gcov-13 + - name: "Vcpkg" + uses: johnwason/vcpkg-action@v5 + id: vcpkg + with: + pkgs: boost-date-time gtest libnick podofo rapidcsv + triplet: x64-linux + cache-key: ubuntu-latest + revision: 4af63c6f3ed667437b8fe0789a7fbc29936c9802 + token: ${{ secrets.GITHUB_TOKEN }} + - name: "Build" + working-directory: ${{github.workspace}}/build + run: | + cmake .. -DBUILD_TESTING=ON -DBACKEND_ONLY=ON -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + cmake --build . + - name: Test + run: ${{github.workspace}}/build/libdenaro/libdenaro_test diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index bc2a75824..000000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,30 +0,0 @@ -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - types: [ "review_requested", "ready_for_review" ] - workflow_dispatch: -name: Tests -permissions: - id-token: write - contents: read -jobs: - shared: - name: "Test NickvisionMoney.Shared" - runs-on: ubuntu-latest - strategy: - matrix: - dotnet-version: [ '8.0.x' ] - steps: - - uses: actions/checkout@v3 - - name: Setup .NET Core SDK ${{ matrix.dotnet-version }} - uses: actions/setup-dotnet@v3.2.0 - with: - dotnet-version: ${{ matrix.dotnet-version }} - - name: Install dependencies - run: dotnet restore NickvisionMoney.Shared/NickvisionMoney.Shared.csproj - - name: Build - run: dotnet build NickvisionMoney.Shared/NickvisionMoney.Shared.csproj --configuration Release --no-restore - - name: Test - run: dotnet test NickvisionMoney.Shared.Tests/NickvisionMoney.Shared.Tests.csproj --verbosity normal diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 000000000..b32147a7d --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,44 @@ +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + types: [ "review_requested", "ready_for_review" ] + workflow_dispatch: +name: Windows +permissions: + id-token: write + contents: read +env: + BUILD_TYPE: Release + GITHUB_ACTIONS: true + VCPKG_ROOT: ${{github.workspace}}/vcpkg +jobs: + build: + name: "Build on x64" + runs-on: windows-latest + if: ${{ github.event.pull_request.user.login != 'weblate' }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + - name: "Setup Environment" + run: mkdir build + - name: "Vcpkg" + uses: johnwason/vcpkg-action@v5 + id: vcpkg + with: + pkgs: boost-date-time libnick podofo rapidcsv + triplet: x64-windows + cache-key: windows-latest + revision: 4af63c6f3ed667437b8fe0789a7fbc29936c9802 + token: ${{ secrets.GITHUB_TOKEN }} + - name: "Build" + working-directory: ${{github.workspace}}/build + run: | + cmake -G "Visual Studio 17 2022" .. -DBUILD_TESTING=OFF + cmake --build . --config ${{env.BUILD_TYPE}} + - name: Upload + uses: actions/upload-artifact@v4 + with: + path: ${{github.workspace}}/build/org.nickvision.money.winui/Release + name: Windows-x64-${{env.BUILD_TYPE}} diff --git a/.gitignore b/.gitignore index 372327579..92e6526d7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,35 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app # User-specific files *.rsuser @@ -10,347 +38,28 @@ *.userosscache *.sln.docstates -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory +# Directories +out/ +out-linux/ +out-windows/ +build/ +bin/ +.cache/ .vs/ .vscode/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -#Intellij .idea/ .fleet/ - -#Resources -*.Designer.cs - -# Flatpak Builder .flatpak-builder/ .flatpak/ - -# Temporary build files _nickbuild/ -*.ui +*.snap -# Backup files -*.bak +# CMake +CMakeUserPresets.json +compile_commands.json + +# UI Files +*.ui -# Cake tools -tools/ +# Setup Files +inno/*.exe diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 296784f2c..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "CakeScripts"] - path = CakeScripts - url = https://github.com/NickvisionApps/CakeScripts.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..abf30e31b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required (VERSION 3.25) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +if(DEFINED ENV{VCPKG_ROOT}) + file(TO_CMAKE_PATH $ENV{VCPKG_ROOT} VCPKG_ROOT) + if(EXISTS "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") + set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") + set(USING_VCPKG ON) + endif() +endif() +if (POLICY CMP0141) + cmake_policy(SET CMP0141 NEW) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$,$>,$<$:EditAndContinue>,$<$:ProgramDatabase>>") +endif() + +project("org.nickvision.money" LANGUAGES C CXX VERSION 2024.5.0 DESCRIPTION "Manage your personal finances.") +set(SHORT_NAME "denaro") +include(GNUInstallDirs) + +find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext) +find_program(GETTEXT_MSGMERGE_EXECUTABLE msgmerge) +find_program(GETTEXT_MSGFMT_EXECUTABLE msgfmt) +find_program(ITSTOOL_EXECUTABLE itstool) +find_program(YELP_BUILD_EXECUTABLE yelp-build) +file(STRINGS "${CMAKE_SOURCE_DIR}/resources/po/POTFILES" TRANSLATE_FILES) +file(STRINGS "${CMAKE_SOURCE_DIR}/resources/po/LINGUAS" LINGUAS) +set(POT_FILE "${CMAKE_SOURCE_DIR}/resources/po/${SHORT_NAME}.pot") +file(STRINGS "${CMAKE_SOURCE_DIR}/docs/po/LINGUAS" DOC_LINGUAS) +set(DOC_POT_FILE "${CMAKE_SOURCE_DIR}/docs/po/${SHORT_NAME}.pot") +if(EXISTS "${GETTEXT_XGETTEXT_EXECUTABLE}") + if(EXISTS "${GETTEXT_MSGMERGE_EXECUTABLE}") + if(EXISTS "${GETTEXT_MSGFMT_EXECUTABLE}") + set(HAS_GETTEXT TRUE) + endif() + endif() +endif() + +add_subdirectory("libdenaro") +if(NOT BACKEND_ONLY) + if(WIN32) + add_subdirectory("org.nickvision.money.winui") + elseif(LINUX) + add_subdirectory("org.nickvision.money.gnome") + endif() +endif() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6ab097f3f..3c25398d9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,8 +6,8 @@ All types of contributions are encouraged and valued. See the [Table of Contents > And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: > - Star the project -> - Tweet about it -> - Refer this project in your project's readme +> - Post about it +> - Reference this project in your project's readme > - [Sponsor](https://github.com/sponsors/nlogozzo) the lead developer ## Table of Contents @@ -18,16 +18,18 @@ All types of contributions are encouraged and valued. See the [Table of Contents - [Suggesting Enhancements/New Features](#suggesting-enhancements) - [Providing translations](#providing-translations) - [Via Weblate](#via-weblate) - - [Manually - Application](#manually---application) - - [Manually - Documentation](#manually---documentation) + - [Manually](#manually) - [Your First Code Contribution](#your-first-code-contribution) - [Developing on Linux](#developing-on-linux) + - [Developing on Windows](#developing-on-windows) - [Styleguides](#styleguides) - [Join The Project Team](#join-the-project-team) ## I Have a Question -Before you ask a question, it is best to search for existing [Discussions](https://github.com/NickvisionApps/Denaro/discussions) and [Issues](https://github.com/NickvisionApps/Denaro/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this discussion post. It is also advisable to search the internet for answers first. +Before you ask a question, it is best to search for existing [Discussions](https://github.com/NickvisionApps/Denaro/discussions) and [Issues](https://github.com/NickvisionApps/Denaro/issues) that might help you. + +In case you have found a suitable existing issue/discussion and still need clarification, you can write your question in said post. It is also advisable to search the internet for answers first to common error messages. If you then still feel the need to ask a question and need clarification, we recommend the following: @@ -35,52 +37,53 @@ If you then still feel the need to ask a question and need clarification, we rec - Provide as much context as you can about what you're running into. - Provide project and platform versions (windows, gnome, etc...), depending on what seems relevant. -We will then take care of the question as soon as possible. +We will then take care of the question as soon as possible and convert it to a proper issue, if needed. ## I Want To Contribute > ### Legal Notice -> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project [license](LICENSE). +> When contributing to this project, you must agree that you have authored 100% of the content and/or that you have the necessary rights to the content and that the content you contribute may be provided under the project [license](COPYING). ### Reporting Bugs #### Before Submitting a Bug Report -A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible. +A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask that you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible: - Make sure that you are using the latest released version. - Determine if your bug is really a bug and not an error on your side. If you are looking for support, you might want to check [this section](#i-have-a-question). -- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in both the [Discussions](https://github.com/NickvisionApps/Denaro/discussions) and [Issues](https://github.com/NickvisionApps/Denaro/issues) sections. +- See if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in both the [Discussions](https://github.com/NickvisionApps/Denaro/discussions) and [Issues](https://github.com/NickvisionApps/Denaro/issues) sections. - Collect information about the bug: - Debug information provided by the application - - GNOME: from main menu open About Denaro → Troubleshooting → Debugging Information, here you can copy information to clipboard or save to a file. + - GNOME: From the main hamburger menu, open About Denaro → Troubleshooting → Debugging Information and copy the information to the clipboard to paste in your issue. + - WinUI: From the Help item in the left-side navigation, click the gear/wrench icon in the top right corner of the flyout to copy the information to the clipboard to paste in your issue. - Stack trace (Traceback) - Including any error messages thrown by the application - You may need to start the application via the terminal/console to receive an error message for a crash. - - OS, Platform and Version (Linux/Distro, Kernel Version, x64/ARM) - - Possibly your input and the output + - OS, Platform and Version (Distro, Kernel Version, x64/ARM, etc...) + - Your input and the output to the application + - i.e. Steps you took to produce the crash and/or attach any files you may have opened within the app that caused a crash - Can you reliably reproduce the issue? And can you also reproduce it with older versions? #### How Do I Submit a Good Bug Report? -> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to . +> You must never report security related issues, vulnerabilities and bugs (including sensitive information) to the issue tracker nor elsewhere in public. Instead sensitive issues must be reported and handled via email to . We use GitHub issues to track bugs and errors. If you run into an issue with the project: -- Open an [Issue](https://github.com/NickvisionApps/Denaro/issues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.) -- Explain the behavior you would expect and the actual behavior. -- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case. +- Open a [new Issue](https://github.com/NickvisionApps/Denaro/issues/new) and explain the behavior you are experiencing and what you expect to happen. +- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own system. For good bug reports you should isolate the problem and create a reduced test case. - Provide the information you collected in the previous section. -Once it's filed: +Once it has been opened: - The project team will label the issue accordingly. -- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps. Bugs that are not able to be reproduced will not be addressed until they are reproduced. -- If the team is able to reproduce the issue, it will be marked as a `bug` and the issue will be left to be [implemented by someone](#your-first-code-contribution). +- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps. + - Bugs that are not able to be reproduced will not be addressed until they are reproduced. Therefore, it is important to include steps to speed up the fixing process. ### Suggesting Enhancements -This section guides you through submitting an enhancement suggestion for Nickvision Denaro, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions. +This section guides you through submitting an enhancement suggestion for Nickvision Denaro, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community in understanding your suggestion and finding related suggestions. #### Before Submitting an Enhancement @@ -94,9 +97,9 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/Nickvi - Use a **clear and descriptive title** for the issue to identify the suggestion. - Provide a **step-by-step description of the suggested enhancement** in as many details as possible. -- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you. -- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://flathub.org/apps/details/io.github.seadve.Kooha) on Linux. -- **Explain why this enhancement would be useful** to most Nickvision Denaro users. You may also want to point out the other projects that solved it better and which could serve as inspiration. + - For enhancements to existing functionality, **describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you. + - For completely new features, **describe what you would like to see from this new feature** in terms of **both functionality and design**. Providing mockups, even if in sketch format, greatly help the team envision what you would like to see. +- **Explain why this enhancement would be useful** to most Denaro users. You may also want to point out similar projects of other platforms and their solutions to serve as inspiration. ### Providing Translations @@ -106,118 +109,95 @@ Everyone is welcome to translate this app into their native or known languages, Denaro is available to translate on [Weblate](https://hosted.weblate.org/engage/nickvision-money/)! -##### Manually - Application +##### Manually To start translating the app, fork the repository and clone it locally. -In the `NickvisionMoney.Shared/Resources` folder you will see a file called `String.resx`. This is a C# resource file that contains all the strings for the application. Simply copy that file and rename it `String..resx`. For example, if I'm creating an Italian translation, the copied file would be called `Strings.it.resx`. Once you have your copied file, simply replace each `` block of each `` string block with your language's appropriate translation. - -To check your translation file, make sure your system is in the locale of the language you are translating and run the app. You should see your translated strings! - -In case you run the app in GNOME Builder, it will force the app to run in en_US locale. To run the app in your locale without exporting and installing it, follow this steps: - -1. Build the application -2. Press Ctrl+Alt+T to open a terminal inside the application environment -3. Run the application with the following command: `LC_ALL= /app/opt/org.nickvision.money/NickvisionMoney.GNOME`, where `` is your system locale code (e.g. `it_IT.UTF8`). - -Once all changes to your translated file are made, make sure the file is in the path `NickvisionMoney.Shared/Resources/String..resx`, commit these changes and create a pull request to the project. +Denaro uses [gettext](https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files) for translations. In the `resources/po` folder you will find files that can be edited in your favourite `*.po` files editor (or with any plain text editor). -##### Manually - Documentation +If you want to create a new translation, copy the `denaro.pot` file and rename said copy as `.po`, where `` is the language code for your translation. Usually the code is two letters, but it can also be a specific locale code to differentiate between versions of the same language (for example, `pt` and `pt_BR`). **Also, add the language code to `LINGUAS` file** (keeping this file in alphabetical order). -To start translating the documentation, fork the repository and clone it locally. +Edit your new translation file with correct translations for the English messages. -Documentation uses [gettext](https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files) for translations. In the `NickvisionMoney.Shared/Docs/po` you will find files that can be edited in your favourite `*.po` files editor or any text editor. If you want to create a new translation, copy `denaro.pot` file, name the new file `.po`, where `` is the language code for your translation (usually it's 2 letters, but it also can be a locale code to differentiate between different version of the same language, for example `pt` and `pt_BR`) and edit this file. +To check your translation file, make sure your system is in the locale of the language you are translating and [locally build and run the app](README#building-manually). If all steps were carried out successfully, you should see your translation in action! -To see the results of your work, you need to install additional tools in order to regenerate documentation files: -- [just](https://github.com/casey/just) -- gettext -- itstool -- yelp-tools - -Navigate to `NickvisionMoney.Shared/Docs` and run: -- `just docs-update-yelp` to update yelp documentation (used in GNOME version of the app) -- `just docs-update-html` to update html documentation (used in WinUI version of the app) - -Generated docs are located in `yelp` and `html` subfolders respectively. You can open html files in your web browser. - -Once all changes to your translated file are made, make sure the file is in the path, commit these changes and create a pull request to the project. +Once all changes to your translated file are made, commit these changes and create a pull request to the project. ### Your First Code Contribution #### Structure -Denaro is built using .NET 8 and C#. With these technologies, Denaro is built for GNOME (Linux). -The solution is setup into 2 projects: - - NickvisionMoney.Shared - - NickvisionMoney.GNOME - -The whole solution utilizes the [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) pattern for separating data and UI views. - -##### NickvisionMoney.Shared +Denaro is built using C++20 and platform-native user interface libraries. With these technologies, Denaro is built for both GNOME (Linux) and Windows. -This project contains all of the code used by all platforms of the app. -- Models => The data driven objects of the application (i.e. Transaction, Account Database, Configuration, etc...) -- Controllers => The objects used by UI views to receive and manipulate data from the Models -- Helpers => Useful objects such as the Localizer for receiving translated strings throughout the app -- Resources => Strings, icons, and fonts used by the app -- Docs => User documentation files +The project is split up into the following sub-projects: + - [libdenaro](#libdenaro) + - [org.nickvision.money.gnome](#org.nickvision.money.gnome) + - [org.nickvision.money.winui](org.nickvision.money.winui) -##### NickvisionMoney.GNOME +The whole project utilizes the [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) pattern for separating data models and UI views. -This project contains all of the code used for the GNOME platform version of the app, including flathub manifest and desktop files. -Powered by the C# bindings for GTK4/Libadwaita: [gir.core](https://github.com/gircore/gir.core) -- Views => The views (pages, windows, dialogs) of the app that connect to the shared controllers -- Controls => Generic controls for the app - - These controls should not be connected to a controller and should be able to be ported to any other application -- Helpers => Useful objects that are specific for GNOME platform version of the app -- Blueprints => UI files written in [Blueprint markup language](https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/) +##### libdenaro -##### NickvisionMoney.WinUI +This project contains all of the code used by all platforms of the app: +- `controllers` => The objects used by UI views to receive and manipulate data from the models. +- `helpers` => Useful objects and functions specific to the application that can be used by all platforms. +- `models` => The data driven objects of the application (i.e. Configuration, Database, etc...). -This project contains all of the code used for the Windows platform version of the app. -Powered by the [WindowsAppSDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/) -- Views => The views (pages, windows, dialogs) of the app that connect to the shared controllers -- Controls => Generic controls for the app - - These controls should not be connected to a controller and should be able to be ported to any other application +##### org.nickvision.money.gnome -#### Developing on Linux +This project contains all of the code used for the GNOME platform version of the app, including flathub manifest and desktop files: +- `blueprints` => UI design files written in [Blueprint markup language](https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/). +- `controls` => Generic controls for the app. + - These UI objects are separate from views in that they should not be backed by a controller and should be easily ported to any other app. +- `helpers` => Useful objects and functions specific for the GNOME platform version of the app. +- `resources` => Extra icons and other files specific for the GNOME platform version of the app. +- `views` => The views (pages, windows, dialogs, etc...) of the app. -##### GNOME +##### org.nickvision.money.winui -Recommended IDEs: -- GNOME Builder 43 and up. -- VS Code with [flatpak extension](https://github.com/bilelmoussaoui/flatpak-vscode). +This project contains all of the code used for the Windows platform (WinUI) version of the app, including installer scripts: +Powered by the [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/) +- `controls` => Generic controls for the app. + - These UI objects are separate from views in that they should not be backed by a controller and should be easily ported to any other app. +- `helpers` => Useful objects and functions specific for the WinUI platform version of the app. +- `views` => The views (pages, windows, dialogs, etc...) of the app. +- `installer` => Inno installer scripts. -You may also make your changes via any code editor and use [`flatpak-builder`](https://docs.flatpak.org/en/latest/flatpak-builder.html) to run the application locally through flatpak. +#### Developing and Testing -You may also build the app manually without using flatpak. List of dependencies: -- dotnet >=8.0 -- GTK >=4.12 -- libadwaita >=1.4 -- yelp (optional) -- [cake](https://cakebuild.net/) (build only) - - `dotnet tool install --global Cake.Tool` or `dotnet tool restore` (in repository root folder) -- python3 (build only) -- blueprint-compiler, GTK and libadwaita development files (build only) -- glib-compile-resources (build only) +Denaro simply relies on `cmake` to configure and manage the correct projects for the running platform. Meaning, on Linux the `.gnome` variant of the app will be built and on Windows the `.winui` variant. -Use one of the commands to build the app: +Although the Linux version **will not build** on Windows and the Windows version **will not build** on Linux, we ask that in *contributing new features*, you implement the feature for both the Linux and Windows variants and rely on the app's CI pipeline to confirm and test builds for the platforms that you do not have access to. -| Command | Result | -|---|---| -| `dotnet cake --target=Run --ui=gnome` (in repo root folder) or `dotnet run` (in project subfolder) | Builds the application and runs it. Application will not get installed, which might result in some missing icons and lack of desktop integration. | -| `dotnet cake --target=Publish --prefix=PREFIX --ui=gnome` | Builds the application in `_nickbuild` directory, preparing it to be installed in a provided prefix (examples of a valid prefix: `/usr`, `/app`). If `--self-contained` is added, the application will not need dotnet-runtime to run. -| `dotnet cake --target=Install --destdir=DESTDIR` | Copies files to the `DESTDIR`. `--destdir` is optional, by default files are copied to root (`/`). This command should be used after `Publish`. | +[See the readme](README#building-manually) for instructions on building and running the app locally. ## Styleguides -Denaro follows [Microsoft's C# Coding Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions). +Denaro uses the following naming conventions: +- `CamelCase` for namespaces and classes +- `pascalCase` for file names, functions, and variables +- `m_` prefix appended to class member variables +- `get` and `set` prefixes used for accessor and modifiers methods of a class variable respectively + - Exception: For boolean class members, `is` and `setIs` should be used as the prefixes for the accessor and modifier methods of said members. + +Denaro uses the following coding styles: +- ```cpp + #ifndef FILENAME_H + #define FILENAME_H + ... + #endif //FILENAME_H + ``` + used as the guards to a header file. + - `#pragma once` should not be used. +- Brackets `{}` should be placed on individual new lines and never inline. + - This applies for any type of structure (`if`, `switch`, `class`, etc...) that requires brackets. + - *Single-line if statements should also be wrapped by brackets.* +- Proper indentation using tab spacing. -See [Microsoft's C# Identifier Names](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/identifier-names) as well. ## Join The Project Team Join our room ## Attribution -This guide is based on the **contributing-gen**. [Make your own](https://github.com/bttger/contributing-gen)! +This guide was based on a template by [contributing-gen](https://github.com/bttger/contributing-gen). diff --git a/COPYING b/COPYING new file mode 100644 index 000000000..e62ec04cd --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/CakeScripts b/CakeScripts deleted file mode 160000 index cbc0135ee..000000000 --- a/CakeScripts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cbc0135ee8a02f85d6f1a8525096c26d059886e8 diff --git a/Denaro.sln b/Denaro.sln deleted file mode 100644 index 1a03d05a3..000000000 --- a/Denaro.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.7.34031.279 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NickvisionMoney.GNOME", "NickvisionMoney.GNOME\NickvisionMoney.GNOME.csproj", "{6FAD762A-50D8-4CD5-A456-AF795CCEDF65}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NickvisionMoney.Shared", "NickvisionMoney.Shared\NickvisionMoney.Shared.csproj", "{242BF741-BB63-4B0A-9F9C-2E0450C6C6B7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NickvisionMoney.Shared.Tests", "NickvisionMoney.Shared.Tests\NickvisionMoney.Shared.Tests.csproj", "{45FB09D4-0109-4781-A206-A7D864F29791}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6FAD762A-50D8-4CD5-A456-AF795CCEDF65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6FAD762A-50D8-4CD5-A456-AF795CCEDF65}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6FAD762A-50D8-4CD5-A456-AF795CCEDF65}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6FAD762A-50D8-4CD5-A456-AF795CCEDF65}.Release|Any CPU.Build.0 = Release|Any CPU - {242BF741-BB63-4B0A-9F9C-2E0450C6C6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {242BF741-BB63-4B0A-9F9C-2E0450C6C6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {242BF741-BB63-4B0A-9F9C-2E0450C6C6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {242BF741-BB63-4B0A-9F9C-2E0450C6C6B7}.Release|Any CPU.Build.0 = Release|Any CPU - {45FB09D4-0109-4781-A206-A7D864F29791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {45FB09D4-0109-4781-A206-A7D864F29791}.Debug|Any CPU.Build.0 = Debug|Any CPU - {45FB09D4-0109-4781-A206-A7D864F29791}.Release|Any CPU.ActiveCfg = Release|Any CPU - {45FB09D4-0109-4781-A206-A7D864F29791}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {5B6A6EEF-CDC6-444E-92EB-070FE6B032E8} - EndGlobalSection -EndGlobal diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4f59b640b..000000000 --- a/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) 2021-2023 Nicholas Logozzo - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp b/NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp deleted file mode 100644 index 51b5170d0..000000000 --- a/NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp +++ /dev/null @@ -1,280 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 440; - modal: true; - resizable: false; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar _header { - title-widget: Gtk.Label {}; - - [start] - Gtk.Button _btnBack { - halign: start; - valign: center; - visible: false; - child: Adw.ButtonContent { - icon-name: "go-previous-symbolic"; - label: _("Back"); - }; - } - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - spacing: 24; - - Gtk.Label _titleLabel { - label: _("Account Settings"); - - styles ["title-2"] - } - - Adw.ViewStack _viewStack { - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Adw.ViewStackPage { - name: "main"; - child: Gtk.Box { - orientation: vertical; - spacing: 24; - margin-top: 4; - - Adw.PreferencesGroup { - Adw.EntryRow _nameRow { - title: _("Name"); - activates-default: true; - } - - Adw.ComboRow _accountTypeRow { - title: _("Account Type"); - model: Gtk.StringList { - strings [_("Checking"), _("Savings"), _("Business")] - }; - } - - Adw.ActionRow { - title: _("Default Transaction Type"); - - [suffix] - Gtk.Box { - orientation: horizontal; - valign: center; - - Gtk.ToggleButton _incomeButton { - label: _("Income"); - } - - Gtk.ToggleButton _expenseButton { - label: _("Expense"); - } - - styles ["linked"] - } - } - - Adw.ComboRow _transactionRemindersRow { - title: _("Transaction Reminders Threshold"); - model: Gtk.StringList { - strings [_("Never"), _("One Day Before"), _("One Week Before"), _("One Month Before"), _("Two Months Before")] - }; - } - } - - Adw.PreferencesGroup { - Adw.ActionRow _customCurrencyRow { - title: _("Currency"); - subtitle: _("Manage the currency used by the account."); - - [prefix] - Gtk.Image { - icon-name: "money-symbolic"; - } - - [suffix] - Gtk.Image _imgCustomCurrency { - icon-name: "go-next-symbolic"; - valign: center; - } - - activatable-widget: _imgCustomCurrency; - } - - Adw.ActionRow _managePasswordRow { - title: _("Change Password"); - subtitle: _("Set a new password or remove one."); - - [prefix] - Gtk.Image { - icon-name: "dialog-password-symbolic"; - } - - [suffix] - Gtk.Image _imgManagePassword { - icon-name: "go-next-symbolic"; - valign: center; - } - - activatable-widget: _imgManagePassword; - } - } - - Gtk.Button _applyButton { - halign: center; - valign: center; - margin-top: 24; - label: _("Apply"); - - styles ["pill", "suggested-action"] - } - }; - } - - Adw.ViewStackPage { - name: "currency"; - child: Gtk.Box { - visible: false; - orientation: vertical; - spacing: 24; - - Gtk.Label _reportedCurrencyLabel { - use-markup: true; - justify: center; - } - - Adw.PreferencesGroup { - Adw.SwitchRow _useCustomCurrencyRow { - title: _("Use Custom Currency"); - } - } - - Adw.PreferencesGroup { - sensitive: bind _useCustomCurrencyRow.active; - - Adw.EntryRow _customSymbolRow { - title: _("Currency Symbol"); - } - - Adw.EntryRow _customCodeRow { - title: _("Currency Code"); - } - - Adw.ComboRow _customAmountStyleRow { - title: _("Amount Display Style"); - model: Gtk.StringList { - strings ["$100", "100$", "$ 100", "100 $"] - }; - } - - Adw.ComboRow _customDecimalSeparatorRow { - title: _("Decimal Separator"); - model: Gtk.StringList { - strings [" . ", " , ", _("Other")] - }; - - [suffix] - Gtk.Entry _customDecimalSeparatorText { - visible: false; - valign: center; - halign: end; - max-length: 2; - max-width-chars: 4; - } - } - - Adw.ComboRow _customGroupSeparatorRow { - title: _("Group Separator"); - model: Gtk.StringList { - strings [" . ", " , ", " ' ", _("None"), _("Other")] - }; - - [suffix] - Gtk.Entry _customGroupSeparatorText { - visible: false; - valign: center; - halign: end; - max-length: 2; - max-width-chars: 4; - } - } - - Adw.ComboRow _customDecimalDigitsRow { - title: _("Decimal Digits"); - model: Gtk.StringList { - strings [_("Two"), _("Three"), _("Four"), _("Five"), _("Six"), _("Unlimited")] - }; - } - } - }; - } - - Adw.ViewStackPage { - name: "password"; - child: Gtk.Box { - visible: false; - orientation: vertical; - spacing: 24; - - Adw.PreferencesGroup { - Adw.PasswordEntryRow _newPasswordRow { - title: _("New Password"); - } - - Adw.PasswordEntryRow _newPasswordConfirmRow { - title: _("Confirm Password"); - } - - Adw.ActionRow { - title: _("Password Strength"); - - [suffix] - Gtk.LevelBar _passwordStrengthBar { - hexpand: true; - valign: center; - - styles ["strength"] - } - } - - Adw.ActionRow { - subtitle: _("If the password is lost, there is no way to restore the file!"); - - [suffix] - Gtk.Button _removePasswordButton { - label: _("Remove"); - valign: center; - - styles ["destructive-action"] - } - - styles ["warning"] - } - } - - Gtk.Label _lblPasswordStatus { - hexpand: true; - - styles ["error"] - } - }; - } - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } - - default-widget: _applyButton; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/account_view.blp b/NickvisionMoney.GNOME/Blueprints/account_view.blp deleted file mode 100644 index e5d62fe95..000000000 --- a/NickvisionMoney.GNOME/Blueprints/account_view.blp +++ /dev/null @@ -1,498 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -menu actionsMenu { - item(_("Transfer Money"), "account.transferMoney") - - section { - item(_("Import from File"), "account.importFromFile") - - submenu { - label: _("Export to File"); - - submenu { - label: _("CSV"); - - item(_("Export All Information"), "account.exportToCSVAll") - item(_("Export Current View"), "account.exportToCSVCurrent") - } - - submenu { - label: _("PDF"); - - item(_("Export All Information"), "account.exportToPDFAll") - item(_("Export Current View"), "account.exportToPDFCurrent") - } - } - } - - section { - item(_("Account Settings"), "account.accountSettings") - } -} - -Adw.BreakpointBin _root { - width-request: 360; - height-request: 420; - - Adw.Breakpoint { - condition ("max-width: 660sp") - - setters { - _splitView.collapsed: true; - } - } - - child: Adw.OverlaySplitView _splitView { - min-sidebar-width: 320; - max-sidebar-width: 360; - - sidebar: Gtk.ScrolledWindow _paneScroll { - hscrollbar-policy: never; - - Gtk.Box { - orientation: vertical; - spacing: 10; - hexpand: false; - vexpand: true; - margin-start: 10; - margin-end: 10; - margin-top: 10; - margin-bottom: 10; - - Gtk.SearchEntry _searchDescriptionEntry { - placeholder-text: _("Search by description"); - } - - Adw.PreferencesGroup { - title: _("Today's Overview"); - header-suffix: Gtk.Box { - orientation: horizontal; - - Gtk.Button _remindersButton { - icon-name: "bell-outline-symbolic"; - tooltip-text: _("Reminders"); - - styles ["flat"] - } - - Gtk.MenuButton { - menu-model: actionsMenu; - - Adw.ButtonContent { - icon-name: "document-properties-symbolic"; - label: _("Actions"); - } - - styles ["flat"] - } - - Gtk.Button _resetOverviewFilterButton { - icon-name: "edit-select-all-symbolic"; - tooltip-text: _("Select All Overview Filters"); - - styles ["flat"] - } - }; - - Adw.ActionRow { - title: _("Total"); - - [suffix] - Gtk.Label _totalLabel { - valign: center; - - styles ["denaro-total"] - } - } - - Adw.ActionRow { - title: _("Income"); - activatable-widget: _incomeCheck; - - [prefix] - Gtk.CheckButton _incomeCheck { - active: true; - valign: center; - - styles ["selection-mode"] - } - - [suffix] - Gtk.Label _incomeLabel { - valign: center; - visible: bind _incomeCheck.active; - - styles ["denaro-income"] - } - } - - Adw.ActionRow { - title: _("Expense"); - activatable-widget: _expenseCheck; - - [prefix] - Gtk.CheckButton _expenseCheck { - active: true; - valign: center; - - styles ["selection-mode"] - } - - [suffix] - Gtk.Label _expenseLabel { - valign: center; - visible: bind _expenseCheck.active; - - styles ["denaro-expense"] - } - } - } - - Adw.PreferencesGroup { - title: _("Groups"); - header-suffix: Gtk.Box { - Gtk.Button { - tooltip-text: _("New Group (Ctrl+G)"); - action-name: "account.newGroup"; - - Adw.ButtonContent { - icon-name: "list-add-symbolic"; - label: C_("Group", "New"); - } - - styles ["flat"] - } - - Gtk.Button _toggleGroupsButton { - tooltip-text: _("Toggle Groups Visibility"); - icon-name: "view-conceal-symbolic"; - - styles ["flat"] - } - - Gtk.Button _resetGroupsFilterButton { - icon-name: "edit-select-all-symbolic"; - tooltip-text: _("Select All Groups Filters"); - - styles ["flat"] - } - - Gtk.Button _unselectAllGroupsFilterButton { - icon-name: "edit-select-none-symbolic"; - tooltip-text: _("Unselect Groups Filters"); - - styles ["flat"] - } - }; - - Gtk.ListBox _groupsList { - selection-mode: none; - - styles ["boxed-list"] - } - } - - Adw.PreferencesGroup { - title: _("Tags"); - header-suffix: Gtk.Box { - Gtk.Button _toggleTagsButton { - tooltip-text: _("Toggle Tags Visibility"); - icon-name: "view-conceal-symbolic"; - - styles ["flat"] - } - - Gtk.Button _resetTagsFilterButton { - icon-name: "edit-select-all-symbolic"; - tooltip-text: _("Select All Tags Filters"); - - styles ["flat"] - } - - Gtk.Button _unselectAllTagsFilterButton { - icon-name: "edit-select-none-symbolic"; - tooltip-text: _("Unselect Tags Filters"); - - styles ["flat"] - } - }; - - Adw.Bin _tagsBin { - Gtk.FlowBox _tagsFlowBox { - valign: start; - margin-top: 6; - margin-start: 6; - margin-end: 6; - margin-bottom: 6; - column-spacing: 2; - row-spacing: 2; - selection-mode: none; - } - - styles ["card"] - } - } - - Adw.PreferencesGroup { - title: _("Calendar"); - header-suffix: Gtk.Box { - orientation: horizontal; - - Gtk.Button _selectMonthButton { - tooltip-text: _("Select Current Month"); - icon-name: "month-symbolic"; - styles ["flat"] - } - - Gtk.Button _resetCalendarFilterButton { - tooltip-text: _("Reset To Today"); - Adw.ButtonContent { - icon-name: "today-symbolic"; - label: _("Today"); - } - - styles ["flat"] - } - }; - - - Gtk.Calendar _calendar { - name: "calendarAccount"; - focusable: false; - - styles ["card"] - } - } - - Adw.PreferencesGroup { - Adw.ExpanderRow _rangeExpander { - title: _("Select Range"); - enable-expansion: false; - show-enable-switch: true; - - Adw.ActionRow { - title: C_("DateRange", "Start"); - - [suffix] - Gtk.Box { - orientation: horizontal; - spacing: 6; - - Gtk.DropDown _startYearDropDown { - valign: center; - show-arrow: false; - } - - Gtk.DropDown _startMonthDropDown { - valign: center; - show-arrow: false; - } - - Gtk.DropDown _startDayDropDown { - valign: center; - show-arrow: false; - } - } - } - - Adw.ActionRow { - title: C_("DateRange", "End"); - - [suffix] - Gtk.Box { - orientation: horizontal; - spacing: 6; - - Gtk.DropDown _endYearDropDown { - valign: center; - show-arrow: false; - } - - Gtk.DropDown _endMonthDropDown { - valign: center; - show-arrow: false; - } - - Gtk.DropDown _endDayDropDown { - valign: center; - show-arrow: false; - } - } - } - } - } - } - }; - - content: Gtk.Overlay { - vexpand: true; - - child: Adw.ViewStack _viewStack { - Adw.ViewStackPage { - name: "spinner"; - child: Gtk.Spinner { - hexpand: true; - vexpand: true; - halign: center; - valign: center; - spinning: true; - width-request: 40; - height-request: 40; - }; - } - - Adw.ViewStackPage { - name: "no-transactions"; - child: Adw.StatusPage _noTransactionsStatusPage { - icon-name: "money-none-symbolic"; - hexpand: true; - vexpand: true; - }; - } - - Adw.ViewStackPage { - name: "transactions"; - child: Gtk.Box { - orientation: vertical; - hexpand: true; - vexpand: true; - - Adw.PreferencesGroup _visualizeGroup { - title: _("Visualize"); - margin-top: 4; - margin-start: 10; - margin-end: 10; - header-suffix: Gtk.Box { - orientation: horizontal; - - Gtk.Button _graphBackButton { - valign: center; - icon-name: "go-previous-symbolic"; - tooltip-text: _("Back"); - - styles ["flat"] - } - - Gtk.Button _graphNextButton { - valign: center; - icon-name: "go-next-symbolic"; - tooltip-text: _("Next"); - - styles ["flat"] - } - }; - - Gtk.Box { - orientation: vertical; - spacing: 6; - - Adw.Carousel _carousel { - Gtk.DrawingArea _incomeExpenseOverTimeImage { - height-request: 300; - hexpand: true; - } - - Gtk.DrawingArea _incomeExpensePieImage { - height-request: 200; - hexpand: true; - } - - Gtk.DrawingArea _incomeExpensePerGroupImage { - height-request: 300; - hexpand: true; - } - - Gtk.DrawingArea _incomeExpensePerGroupPieImage { - height-request: 300; - hexpand: true; - } - - styles ["card"] - } - - Adw.CarouselIndicatorDots { - halign: center; - carousel: _carousel; - } - } - } - - Gtk.Separator _visualizeSeparator { - orientation: horizontal; - margin-top: 10; - } - - Gtk.Box { - orientation: vertical; - - Adw.PreferencesGroup _transactionsGroup { - margin-top: 8; - margin-start: 10; - margin-end: 10; - header-suffix: Gtk.Box { - orientation: horizontal; - spacing: 6; - - Gtk.DropDown _sortTransactionByDropDown {} - - Gtk.Box _transactionsHeaderBox { - orientation: horizontal; - valign: center; - - Gtk.ToggleButton _sortFirstToLastButton { - icon-name: "view-sort-descending-symbolic"; - tooltip-text: _("Sort From First To Last"); - active: bind _sortLastToFirstButton.active inverted bidirectional; - } - - Gtk.ToggleButton _sortLastToFirstButton { - icon-name: "view-sort-ascending-symbolic"; - tooltip-text: _("Sort From Last To First"); - } - - styles ["linked"] - } - }; - } - - Gtk.ScrolledWindow _transactionsScroll { - width-request: 300; - min-content-height: 142; - vexpand: true; - - Gtk.FlowBox _transactionsFlowBox { - margin-start: 10; - margin-end: 10; - margin-bottom: 62; - homogeneous: true; - column-spacing: 10; - row-spacing: 10; - halign: fill; - valign: start; - selection-mode: none; - } - } - } - }; - } - }; - - [overlay] - Gtk.Button { - tooltip-text: _("New Transaction (Ctrl+Shift+N)"); - action-name: "account.newTransaction"; - halign: center; - valign: end; - margin-bottom: 10; - - Adw.ButtonContent { - icon-name: "list-add-symbolic"; - label: C_("Transaction", "New"); - } - - styles ["pill", "suggested-action"] - } - }; - }; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp b/NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp deleted file mode 100644 index 0a01dad14..000000000 --- a/NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp +++ /dev/null @@ -1,27 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.Box _root { - orientation: vertical; - spacing: 12; - visible: false; - halign: center; - valign: start; - - Gtk.Label { - margin-start: 12; - margin-top: 12; - halign: start; - label: _("Suggestions"); - - styles ["dim-label"] - } - - Adw.PreferencesGroup _group { - margin-start: 12; - margin-end: 12; - margin-bottom: 12; - } - - styles ["card", "view"] -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp b/NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp deleted file mode 100644 index 565174a2b..000000000 --- a/NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp +++ /dev/null @@ -1,105 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - width-request: 360; - default-width: 440; - modal: true; - resizable: true; - - content: Adw.ToastOverlay _toastOverlay { - Adw.ToolbarView { - [top] - Adw.HeaderBar _header { - title-widget: Gtk.Label {}; - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - spacing: 24; - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Label _titleLabel { - label: _("Converter"); - - styles ["title-2"] - } - - Adw.PreferencesGroup { - title: _("Currency"); - - header-suffix: Gtk.Box { - orientation: horizontal; - spacing: 6; - - Gtk.Button _switchButton { - valign: center; - tooltip-text: _("Switch currencies"); - - Adw.ButtonContent { - label: _("Switch"); - icon-name: "update-symbolic"; - } - - styles ["flat"] - } - - Gtk.Box _loadingBox { - orientation: horizontal; - spacing: 6; - visible: false; - - Gtk.Separator { - orientation: vertical; - } - - Gtk.Label { - label: _("Loading..."); - } - - Gtk.Spinner { - spinning: true; - } - } - }; - - Adw.ComboRow _sourceCurrencyRow { - title: _("Source"); - } - - Adw.ComboRow _resultCurrencyRow { - title: _("Result"); - } - } - - Adw.PreferencesGroup { - Adw.EntryRow _sourceAmountRow { } - - Adw.EntryRow _resultAmountRow { - editable: false; - - [suffix] - Gtk.Button _copyResultButton { - valign: center; - tooltip-text: _("Copy Result Amount"); - icon-name: "edit-copy-symbolic"; - - styles ["flat"] - } - } - } - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/dashboard_view.blp b/NickvisionMoney.GNOME/Blueprints/dashboard_view.blp deleted file mode 100644 index e15798b7d..000000000 --- a/NickvisionMoney.GNOME/Blueprints/dashboard_view.blp +++ /dev/null @@ -1,95 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.ScrolledWindow _root { - hscrollbar-policy: never; - vexpand: true; - - Gtk.Box { - orientation: vertical; - spacing: 12; - - Gtk.Label { - label: _("All Accounts"); - halign: start; - margin-top: 12; - margin-start: 12; - - styles ["heading"] - } - - Gtk.FlowBox { - homogeneous: true; - max-children-per-line: 3; - column-spacing: 10; - row-spacing: 10; - margin-start: 10; - margin-end: 10; - halign: fill; - valign: start; - selection-mode: none; - - Adw.ActionRow _incomeRow { - title: _("Income"); - - [suffix] - Gtk.Label _incomeSuffix { - valign: center; - justify: right; - - styles ["denaro-income"] - } - - styles ["card"] - } - - Adw.ActionRow _expenseRow { - title: _("Expense"); - - [suffix] - Gtk.Label _expenseSuffix { - valign: center; - justify: right; - - styles ["denaro-expense"] - } - - styles ["card"] - } - - Adw.ActionRow _totalRow { - title: _("Total"); - - [suffix] - Gtk.Label _totalSuffix { - valign: center; - justify: right; - - styles ["denaro-total"] - } - - styles ["card"] - } - } - - Gtk.Label { - label: _("Groups"); - halign: start; - margin-top: 12; - margin-start: 12; - - styles ["heading"] - } - - Gtk.FlowBox _groupsFlowbox { - homogeneous: true; - column-spacing: 10; - row-spacing: 10; - margin-start: 10; - margin-end: 10; - halign: fill; - valign: start; - selection-mode: none; - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/group_dialog.blp b/NickvisionMoney.GNOME/Blueprints/group_dialog.blp deleted file mode 100644 index 2dcb44400..000000000 --- a/NickvisionMoney.GNOME/Blueprints/group_dialog.blp +++ /dev/null @@ -1,83 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 360; - modal: true; - resizable: false; - default-widget: _applyButton; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Gtk.Label {}; - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - spacing: 24; - - Gtk.Label _titleLabel { - styles ["title-2"] - } - - Adw.PreferencesGroup { - margin-start: 24; - margin-end: 24; - - Adw.EntryRow _nameRow { - title: _("Name"); - input-hints: spellcheck; - activates-default: true; - } - - Adw.EntryRow _descriptionRow { - title: _("Description"); - input-hints: spellcheck; - activates-default: true; - } - - Adw.ActionRow { - title: _("Color"); - activatable-widget: _colorButton; - - [suffix] - Gtk.ColorDialogButton _colorButton { - valign: center; - } - } - } - - Gtk.Box { - orientation: horizontal; - spacing: 24; - halign: center; - homogeneous: true; - margin-top: 24; - margin-bottom: 24; - - Gtk.Button _deleteButton { - valign: center; - label: _("Delete"); - - styles ["pill", "destructive-action"] - } - - Gtk.Button _applyButton { - valign: center; - - styles ["pill", "suggested-action"] - } - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/group_row.blp b/NickvisionMoney.GNOME/Blueprints/group_row.blp deleted file mode 100644 index cb7242586..000000000 --- a/NickvisionMoney.GNOME/Blueprints/group_row.blp +++ /dev/null @@ -1,56 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.ActionRow _root { - use-markup: false; - title-lines: 1; - subtitle-lines: 2; - activatable-widget: _filterCheckButton; - - [prefix] - Gtk.Overlay _filterOverlay { - valign: center; - - child: Gtk.Image _filterCheckBackground { - halign: fill; - valign: fill; - overflow: hidden; - margin-top: 2; - margin-start: 2; - margin-end: 2; - margin-bottom: 2; - - styles ["group-filter-bg"] - }; - - [overlay] - Gtk.CheckButton _filterCheckButton { - valign: center; - - styles ["selection-mode", "group-filter-check"] - } - } - - [suffix] - Gtk.Box { - orientation: horizontal; - valign: center; - margin-top: 4; - spacing: 6; - - Gtk.Label _amountLabel { - halign: end; - valign: center; - margin-end: 6; - visible: bind _filterCheckButton.active; - } - - Gtk.Button _editButton { - icon-name: "document-edit-symbolic"; - valign: center; - tooltip-text: _("Edit Group"); - - styles ["flat"] - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp b/NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp deleted file mode 100644 index 2f39ae7cd..000000000 --- a/NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp +++ /dev/null @@ -1,365 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - height-request: 440; - width-request: 320; - default-width: 460; - modal: true; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Adw.CarouselIndicatorDots { - carousel: _carousel; - }; - - [start] - Gtk.Button _backButton { - halign: start; - valign: center; - visible: false; - child: Adw.ButtonContent { - icon-name: "go-previous-symbolic"; - label: _("Back"); - }; - } - } - - Gtk.WindowHandle { - vexpand: true; - - Adw.ToastOverlay _toastOverlay { - Gtk.Box { - orientation: vertical; - vexpand: true; - hexpand: true; - spacing: 24; - - Adw.Carousel _carousel { - allow-scroll-wheel: false; - allow-mouse-drag: false; - allow-long-swipes: false; - - Adw.StatusPage _page1 { - vexpand: true; - hexpand: true; - icon-name: "org.nickvision.money"; - title: _("New Account"); - description: _("Use this wizard to get the most out of your account"); - - child: Gtk.Button _startButton { - halign: center; - valign: center; - label: _("Let's Start"); - - styles ["pill", "suggested-action"] - }; - - styles ["icon-dropshadow"] - } - - Gtk.Box _page2 { - vexpand: true; - hexpand: true; - orientation: vertical; - spacing: 24; - margin-top: 24; - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Label { - label: _("Storage Location"); - - styles ["title-2"] - } - - Adw.PreferencesGroup { - vexpand: true; - - Adw.EntryRow _accountNameRow { - title: _("Account Name"); - } - - Adw.PasswordEntryRow _accountPasswordRow { - title: _("Account Password (Optional)"); - } - - Adw.ActionRow _accountPasswordStrengthRow { - title: _("Password Strength"); - visible: false; - - [suffix] - Gtk.LevelBar _accountPasswordStrengthBar { - hexpand: true; - valign: center; - - styles ["strength"] - } - } - - Adw.EntryRow _folderRow { - title: _("Folder"); - editable: false; - - [suffix] - Gtk.Button _selectFolderButton { - valign: center; - icon-name: "folder-open-symbolic"; - tooltip-text: _("Select Folder"); - - styles ["flat"] - } - } - - Adw.SwitchRow _overwriteRow { - title: _("Overwrite Existing Accounts"); - } - } - - Gtk.Button _nextButton1 { - halign: center; - valign: center; - margin-bottom: 12; - sensitive: false; - label: _("Next"); - - styles ["pill", "suggested-action"] - } - } - - Gtk.Box _page3 { - vexpand: true; - hexpand: true; - orientation: vertical; - spacing: 24; - margin-top: 24; - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Label { - label: _("Account Options"); - - styles ["title-2"] - } - - Adw.PreferencesGroup { - vexpand: true; - - Adw.ComboRow _accountTypeRow { - title: _("Account Type"); - subtitle: _("This is only a useful label that doesn't affect how the app works."); - subtitle-lines: 4; - model: Gtk.StringList { - strings [_("Checking"), _("Savings"), _("Business")] - }; - } - - Adw.ActionRow { - title: _("Default Transaction Type"); - - [suffix] - Gtk.Box { - orientation: horizontal; - valign: center; - - Gtk.ToggleButton _incomeButton { - label: _("Income"); - } - - Gtk.ToggleButton _expenseButton { - label: _("Expense"); - } - - styles ["linked"] - } - } - - Adw.ComboRow _transactionRemindersRow { - title: _("Transaction Reminders Threshold"); - model: Gtk.StringList { - strings [_("Never"), _("One Day Before"), _("One Week Before"), _("One Month Before"), _("Two Months Before")] - }; - } - } - - Gtk.Button _nextButton2 { - halign: center; - valign: center; - margin-bottom: 12; - label: _("Next"); - - styles ["pill", "suggested-action"] - } - } - - Gtk.Box _page4 { - vexpand: true; - hexpand: true; - orientation: vertical; - spacing: 24; - margin-top: 24; - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Label { - label: _("Account Currency"); - - styles ["title-2"] - } - - Gtk.Label _reportedCurrencyLabel { - use-markup: true; - justify: center; - } - - Adw.PreferencesGroup { - vexpand: true; - - Adw.ExpanderRow _rowCustomCurrency { - title: _("Use Custom Currency"); - show-enable-switch: true; - enable-expansion: false; - - Adw.EntryRow _customSymbolRow { - title: _("Currency Symbol"); - } - - Adw.EntryRow _customCodeRow { - title: _("Currency Code"); - } - - Adw.ComboRow _customAmountStyleRow { - title: _("Amount Display Style"); - model: Gtk.StringList { - strings ["$100", "100$", "$ 100", "100 $"] - }; - } - - Adw.ComboRow _customDecimalSeparatorRow { - title: _("Decimal Separator"); - model: Gtk.StringList { - strings [" . ", " , ", _("Other")] - }; - - [suffix] - Gtk.Entry _customDecimalSeparatorText { - visible: false; - valign: center; - halign: end; - max-length: 2; - max-width-chars: 4; - } - } - - Adw.ComboRow _customGroupSeparatorRow { - title: _("Group Separator"); - model: Gtk.StringList { - strings [" . ", " , ", " ' ", _("None"), _("Other")] - }; - - [suffix] - Gtk.Entry _customGroupSeparatorText { - visible: false; - valign: center; - halign: end; - max-length: 2; - max-width-chars: 4; - } - } - - Adw.ComboRow _customDecimalDigitsRow { - title: _("Decimal Digits"); - model: Gtk.StringList { - strings [_("Two"), _("Three"), _("Four"), _("Five"), _("Six"), _("Unlimited")] - }; - } - } - } - - Gtk.Button _nextButton3 { - halign: center; - valign: center; - margin-bottom: 12; - label: _("Next"); - - styles ["pill", "suggested-action"] - } - } - - Gtk.Box _page5 { - vexpand: true; - hexpand: true; - orientation: vertical; - spacing: 24; - margin-top: 24; - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Label { - label: _("Import Existing Information"); - - styles ["title-2"] - } - - Gtk.Label { - justify: center; - wrap: true; - wrap-mode: char; - label: _("Upload a valid file to use to import existing information into the new account."); - } - - Adw.PreferencesGroup { - vexpand: true; - - Adw.EntryRow _importRow { - title: _("Import File"); - editable: false; - - [suffix] - Gtk.Button _selectImportFileButton { - valign: center; - icon-name: "document-open-symbolic"; - tooltip-text: _("Select File"); - - styles ["flat"] - } - - [suffix] - Gtk.Button _clearImportFileButton { - valign: center; - visible: false; - icon-name: "larger-brush-symbolic"; - tooltip-text: _("Clear File"); - - styles ["flat"] - } - } - } - - Gtk.Button _createButton { - halign: center; - valign: center; - margin-bottom: 12; - label: _("Create"); - - styles ["pill", "suggested-action"] - } - } - } - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp b/NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp deleted file mode 100644 index 35105e5fc..000000000 --- a/NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp +++ /dev/null @@ -1,60 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 400; - modal: true; - resizable: false; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Gtk.Label {}; - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - spacing: 24; - - Gtk.Label _titleLabel { - styles ["title-2"] - } - - Adw.PreferencesGroup { - margin-start: 24; - margin-end: 24; - - Adw.PasswordEntryRow _newPasswordEntry { - title: _("New Password"); - activates-default: true; - } - - Adw.PasswordEntryRow _confirmPasswordEntry { - title: _("Confirm Password"); - activates-default: true; - } - } - - Gtk.Button _addButton { - halign: center; - valign: center; - margin-top: 24; - margin-bottom: 24; - label: _("Add"); - - styles ["pill", "suggested-action"] - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } - - default-widget: _addButton; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/password_dialog.blp b/NickvisionMoney.GNOME/Blueprints/password_dialog.blp deleted file mode 100644 index c2569b8d1..000000000 --- a/NickvisionMoney.GNOME/Blueprints/password_dialog.blp +++ /dev/null @@ -1,70 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 500; - modal: true; - resizable: false; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Gtk.Label {}; - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - spacing: 24; - margin-start: 24; - margin-end: 24; - - Gtk.Image { - icon-name: "dialog-password-symbolic"; - pixel-size: 128; - - styles ["dim-label"] - } - - Gtk.Label { - label: _("Enter Password To Login:"); - wrap: true; - justify: center; - - styles ["title-1"] - } - - Gtk.Label _filenameLabel { - wrap: true; - justify: center; - } - - Adw.PasswordEntryRow _passwordEntry { - title: _("Password"); - activates-default: true; - - styles ["card"] - } - - Gtk.Button _unlockButton { - halign: center; - valign: center; - margin-top: 24; - margin-bottom: 24; - label: _("Unlock"); - - styles ["pill", "suggested-action"] - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } - - default-widget: _unlockButton; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp b/NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp deleted file mode 100644 index d9712d5e8..000000000 --- a/NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp +++ /dev/null @@ -1,166 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.PreferencesWindow _root { - default-width: 600; - default-height: 540; - width-request: 360; - modal: true; - destroy-with-parent: false; - hide-on-close: true; - title: _("Preferences"); - - Adw.PreferencesPage { - vexpand: true; - - Adw.PreferencesGroup { - title: _("User Interface"); - - Adw.ComboRow _themeRow { - title: _("Theme"); - model: Gtk.StringList { - strings [C_("Theme", "Light"), C_("Theme", "Dark"), C_("Theme", "System")] - }; - - [prefix] - Gtk.Image { - icon-name: "dark-mode-symbolic"; - } - } - - Adw.ExpanderRow { - title: _("Colors"); - subtitle: _("Customize the colors used by Denaro."); - - [prefix] - Gtk.Image { - icon-name: "preferences-color-symbolic"; - } - - Adw.ActionRow { - title: _("Transaction Default Color"); - subtitle: _("A change in this setting will only be applied to newly added transactions."); - activatable-widget: _transactionColorButton; - - [suffix] - Gtk.ColorDialogButton _transactionColorButton { - valign: center; - } - } - - Adw.ActionRow { - title: _("Transfer Default Color"); - subtitle: _("A change in this setting will only be applied to new transfers."); - activatable-widget: _transferColorButton; - - [suffix] - Gtk.ColorDialogButton _transferColorButton { - valign: center; - } - } - - Adw.ActionRow { - title: _("Group Default Color"); - subtitle: _("A change in this setting will only be applied to new groups."); - activatable-widget: _groupColorButton; - - [suffix] - Gtk.ColorDialogButton _groupColorButton { - valign: center; - } - } - - Adw.ActionRow { - title: _("Checking Account Color"); - activatable-widget: _accountCheckingColorButton; - - [suffix] - Gtk.ColorDialogButton _accountCheckingColorButton { - valign: center; - } - } - - Adw.ActionRow { - title: _("Savings Account Color"); - activatable-widget: _accountSavingsColorButton; - - [suffix] - Gtk.ColorDialogButton _accountSavingsColorButton { - valign: center; - } - } - - Adw.ActionRow { - title: _("Business Account Color"); - activatable-widget: _accountBusinessColorButton; - - [suffix] - Gtk.ColorDialogButton _accountBusinessColorButton { - valign: center; - } - } - } - } - - Adw.PreferencesGroup { - title: _("Locale"); - - Adw.SwitchRow _nativeDigitsRow { - title: _("Use Native Digits"); - subtitle: _("Whether to use numerals that are native for your locale instead of latin digits."); - - [prefix] - Gtk.Image { - icon-name: "preferences-desktop-locale-symbolic"; - } - } - - Adw.ComboRow _insertSeparatorRow { - title: _("Insert Decimal Separator"); - subtitle: _("Set for which keys pressed will the locale's decimal separator be inserted into an amount field."); - subtitle-lines: 3; - model: Gtk.StringList { - strings [C_("InsertSeparator", "Off"), _("Numpad period only"), _("Period and Comma")] - }; - - [prefix] - Gtk.Image { - icon-name: "input-keyboard-symbolic"; - } - } - } - - Adw.PreferencesGroup { - title: _("Backup"); - - Adw.EntryRow _csvBackupRow { - title: _("CSV Backup Folder"); - tooltip-text: _("Unencrypted accounts will automatically export as CSV files to this folder when a change is made."); - editable: false; - - [prefix] - Gtk.Image { - icon-name: "folder-download-symbolic"; - } - - [suffix] - Gtk.Button _selectBackupFolderButton { - valign: center; - tooltip-text: _("Select Backup Folder"); - icon-name: "folder-open-symbolic"; - - styles ["flat"] - } - - [suffix] - Gtk.Button _unsetBackupFolderButton { - valign: center; - icon-name: "larger-brush-symbolic"; - tooltip-text: _("Clear Backup Folder"); - - styles ["flat"] - } - } - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/recent_account_row.blp b/NickvisionMoney.GNOME/Blueprints/recent_account_row.blp deleted file mode 100644 index 57a9956a9..000000000 --- a/NickvisionMoney.GNOME/Blueprints/recent_account_row.blp +++ /dev/null @@ -1,56 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.ActionRow _root { - [prefix] - Gtk.Overlay { - width-request: 34; - height-request: 34; - halign: center; - valign: center; - - child: Gtk.Image _prefixColor { - overflow: hidden; - pixel-size: 1; - - styles ["wallet-bg"] - }; - - [overlay] - Gtk.Button _prefixButton { - halign: center; - valign: center; - icon-name: "wallet2-symbolic"; - - styles ["wallet-button"] - } - } - - [suffix] - Gtk.Overlay { - valign: center; - - child: Gtk.DrawingArea _tagArea { - height-request: 32; - width-request: 32; - }; - - [overlay] - Gtk.Label _tagLabel { - use-markup: true; - margin-start: 12; - margin-end: 12; - } - } - - [suffix] - Gtk.Button _removeButton { - valign: center; - icon-name: "cross-symbolic"; - tooltip-text: _("Remove"); - - styles ["flat"] - } - - activatable-widget: _prefixButton; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp b/NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp deleted file mode 100644 index 5609ccabe..000000000 --- a/NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp +++ /dev/null @@ -1,75 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 400; - modal: true; - resizable: false; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Gtk.Label { }; - - styles ["flat"] - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - - Gtk.Label { - label: _("Reminders"); - styles ["title-2"] - } - - Gtk.Label _descriptionLabel { - wrap: true; - margin-top: 24; - margin-start: 12; - margin-end: 12; - margin-bottom: 24; - justify: center; - } - - Gtk.Separator {} - - Adw.ViewStack _viewStack { - Adw.ViewStackPage { - name: "no-reminders"; - child: Adw.StatusPage { - title: _("No Reminders"); - icon-name: "bell-outline-symbolic"; - - styles ["compact"] - }; - } - - Adw.ViewStackPage { - name: "reminders"; - child: Gtk.ScrolledWindow _scrolledWindow { - propagate-natural-height: true; - max-content-height: 300; - - child: Adw.PreferencesGroup _remindersGroup { - margin-top: 12; - margin-start: 12; - margin-end: 12; - margin-bottom: 12; - }; - }; - } - - styles ["view"] - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp b/NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp deleted file mode 100644 index 9736787d4..000000000 --- a/NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp +++ /dev/null @@ -1,93 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.ShortcutsWindow _root { - default-width: 600; - default-height: 500; - modal: true; - resizable: true; - destroy-with-parent: false; - - Gtk.ShortcutsSection { - Gtk.ShortcutsGroup { - title: _("Account"); - - Gtk.ShortcutsShortcut { - title: _("New Account"); - accelerator: "n"; - } - - Gtk.ShortcutsShortcut { - title: _("Open Account"); - accelerator: "o"; - } - - Gtk.ShortcutsShortcut { - title: _("Close Account"); - accelerator: "w"; - } - } - - Gtk.ShortcutsGroup { - title: _("Actions"); - - Gtk.ShortcutsShortcut { - title: C_("Title", "Transfer"); - accelerator: "t"; - } - - Gtk.ShortcutsShortcut { - title: _("Import from File"); - accelerator: "i"; - } - } - - Gtk.ShortcutsGroup { - title: _("Group"); - - Gtk.ShortcutsShortcut { - title: _("New Group"); - accelerator: "g"; - } - } - - Gtk.ShortcutsGroup { - title: _("Transaction"); - - Gtk.ShortcutsShortcut { - title: _("New Transaction"); - accelerator: "n"; - } - } - - Gtk.ShortcutsGroup { - title: _("Application"); - - Gtk.ShortcutsShortcut { - title: _("Preferences"); - accelerator: "comma"; - } - - - Gtk.ShortcutsShortcut { - title: _("Keyboard Shortcuts"); - accelerator: "question"; - } - - Gtk.ShortcutsShortcut { - title: _("Help"); - accelerator: "F1"; - } - - Gtk.ShortcutsShortcut { - title: _("Toggle Sidebar"); - accelerator: "F9"; - } - - Gtk.ShortcutsShortcut { - title: _("Quit"); - accelerator: "q"; - } - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp b/NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp deleted file mode 100644 index dd842afd2..000000000 --- a/NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp +++ /dev/null @@ -1,380 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 450; - resizable: false; - modal: true; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Gtk.Label {}; - - [start] - Gtk.Button _backButton { - visible: false; - child: Adw.ButtonContent { - icon-name: "go-previous-symbolic"; - label: _("Back"); - }; - } - - [start] - Gtk.Button _copyButton { - child: Adw.ButtonContent { - icon-name: "edit-copy-symbolic"; - label: _("Make a Copy"); - }; - } - } - - Gtk.WindowHandle { - Adw.ViewStack _stack { - Adw.ViewStackPage { - name: "main"; - - child: Gtk.Box { - orientation: vertical; - spacing: 18; - - Gtk.Label _titleLabel { - styles ["title-2"] - } - - Gtk.ScrolledWindow _scrolledWindow { - propagate-natural-width: true; - propagate-natural-height: true; - hscrollbar-policy: never; - - Gtk.Overlay _overlay { - Gtk.Box { - orientation: vertical; - spacing: 24; - margin-top: 6; - margin-start: 24; - margin-end: 24; - margin-bottom: 6; - - Adw.PreferencesGroup { - Adw.EntryRow _descriptionRow { - title: _("Description"); - input-hints: spellcheck; - activates-default: true; - } - } - - Gtk.Box { - spacing: 12; - - Adw.Bin { - Adw.EntryRow _amountRow { - title: _("Amount"); - input-purpose: number; - activates-default: true; - hexpand: true; - - [suffix] - Gtk.Label _currencyLabel { - styles ["dim-label"] - } - - styles ["transaction-amount"] - } - - styles ["card"] - } - - Gtk.Box { - orientation: vertical; - halign: center; - - Gtk.ToggleButton _incomeButton { - label: _("Income"); - } - - Gtk.ToggleButton _expenseButton { - label: _("Expense"); - } - - styles ["linked"] - } - } - - Adw.PreferencesGroup { - Adw.ActionRow { - title: _("Date"); - activatable-widget: _dateCalendarButton; - - [suffix] - Gtk.Box { - spacing: 4; - - Gtk.MenuButton _dateCalendarButton { - valign: center; - direction: none; - popover: Gtk.Popover { - Gtk.Calendar _dateCalendar { - name: "calendarTransactions"; - } - }; - - styles ["calendar-button"] - } - - Gtk.Label _dateDashLabel { - label: " — "; - } - - Gtk.MenuButton _repeatEndDateCalendarButton { - valign: center; - direction: none; - tooltip-text: _("Repeat End Date"); - popover: Gtk.Popover { - Gtk.Box { - orientation: vertical; - spacing: 6; - - Gtk.Button _repeatEndDateClearButton { - halign: center; - - child: Adw.ButtonContent { - icon-name: "larger-brush-symbolic"; - label: _("Clear End Date"); - }; - } - - Gtk.Calendar _repeatEndDateCalendar { - name: "calendarTransactions"; - } - } - }; - - styles ["calendar-button"] - } - } - } - - Adw.ComboRow _repeatIntervalRow { - title: _("Repeat Interval"); - model: Gtk.StringList { - strings [_("Never"), _("Daily"), _("Weekly"), _("Biweekly"), _("Monthly"), _("Quarterly"), _("Yearly"), _("Biyearly")] - }; - } - } - - Adw.PreferencesGroup { - hexpand: true; - - Adw.ComboRow _groupRow { - title: _("Group"); - title-lines: 1; - } - - Adw.ActionRow { - title: _("Color"); - - [suffix] - Gtk.ColorDialogButton _colorButton { - valign: center; - margin-start: 4; - margin-end: 4; - } - - [suffix] - Gtk.DropDown _colorDropDown { - valign: center; - model: Gtk.StringList { - strings [_("Use group color"), _("Use unique color")] - }; - - styles ["color-dropdown"] - } - } - - Adw.ActionRow { - title: _("Tags"); - - [suffix] - Gtk.MenuButton _tagsButton { - valign: center; - direction: none; - popover: Gtk.Popover { - Gtk.Box { - orientation: vertical; - spacing: 6; - - Gtk.ScrolledWindow _tagsScrolledWindow { - hscrollbar-policy: never; - height-request: 124; - width-request: 300; - - Gtk.FlowBox _tagsFlowBox { - valign: start; - margin-top: 4; - margin-start: 4; - margin-end: 4; - column-spacing: 2; - row-spacing: 2; - selection-mode: none; - } - - styles ["card"] - } - - Gtk.Box { - Gtk.Entry _addTagEntry { - hexpand: true; - placeholder-text: _("Enter a new tag name..."); - } - - Gtk.Button _addTagButton { - child: Adw.ButtonContent { - label: _("Add Tag"); - icon-name: "list-add-symbolic"; - }; - } - - styles ["linked"] - } - } - }; - } - } - } - - Adw.PreferencesGroup { - hexpand: true; - - Adw.ActionRow _extrasRow { - title: _("Extras"); - subtitle: _("Manage extra fields of the transaction."); - - [prefix] - Gtk.Image { - icon-name: "view-grid-symbolic"; - } - - [suffix] - Gtk.Image _imgExtras { - icon-name: "go-next-symbolic"; - valign: center; - } - - activatable-widget: _imgExtras; - } - } - } - } - } - - Gtk.Box { - orientation: horizontal; - spacing: 24; - halign: center; - homogeneous: true; - margin-start: 24; - margin-top: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Button _deleteButton { - valign: center; - label: _("Delete"); - - styles ["pill", "destructive-action"] - } - - Gtk.Button _applyButton { - valign: center; - - styles ["pill", "suggested-action"] - } - } - }; - } - - Adw.ViewStackPage { - name: "extras"; - - child: Gtk.Box { - orientation: vertical; - spacing: 18; - margin-start: 24; - margin-end: 24; - margin-bottom: 24; - - Gtk.Label { - label: _("Extras"); - margin-bottom: 6; - - styles ["title-2"] - } - - Adw.PreferencesGroup { - Adw.ActionRow _receiptRow { - title: _("Receipt"); - - [suffix] - Gtk.Box { - orientation: horizontal; - spacing: 6; - - Gtk.Button _viewReceiptButton { - valign: center; - tooltip-text: _("View"); - - Adw.ButtonContent _viewReceiptButtonContent { - icon-name: "image-x-generic-symbolic"; - } - - styles ["flat"] - } - - Gtk.Button _deleteReceiptButton { - valign: center; - tooltip-text: _("Delete"); - - Adw.ButtonContent { - icon-name: "user-trash-symbolic"; - } - - styles ["flat"] - } - - Gtk.Button _uploadReceiptButton { - valign: center; - tooltip-text: _("Upload"); - - Adw.ButtonContent _uploadReceiptButtonContent { - icon-name: "denaro-upload-symbolic"; - } - - styles ["flat"] - } - } - } - } - - Adw.PreferencesGroup { - title: _("Notes"); - description: _("Enter notes here"); - - Gtk.TextView _notesView { - vexpand: true; - top-margin: 12; - left-margin: 12; - right-margin: 12; - bottom-margin: 12; - - styles ["card"] - } - } - }; - } - } - } - }; - - default-widget: _applyButton; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/transaction_id.blp b/NickvisionMoney.GNOME/Blueprints/transaction_id.blp deleted file mode 100644 index d070bc028..000000000 --- a/NickvisionMoney.GNOME/Blueprints/transaction_id.blp +++ /dev/null @@ -1,17 +0,0 @@ -using Gtk 4.0; - -Gtk.Overlay _root { - child: Gtk.Image _colorImage { - overflow: hidden; - pixel-size: 1; - halign: center; - valign: center; - - styles ["id-image"] - }; - - [overlay] - Gtk.Label _idLabel { - use-markup: true; - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/transaction_row.blp b/NickvisionMoney.GNOME/Blueprints/transaction_row.blp deleted file mode 100644 index 9abb5601e..000000000 --- a/NickvisionMoney.GNOME/Blueprints/transaction_row.blp +++ /dev/null @@ -1,38 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.FlowBoxChild _root { - focusable: false; - - Adw.PreferencesGroup { - Adw.ActionRow _row { - use-markup: false; - title-lines: 1; - subtitle-lines: 1; - width-request: 300; - height-request: 78; - activatable-widget: _editButton; - - [suffix] - Gtk.Box _suffixBox { - orientation: horizontal; - spacing: 2; - valign: center; - - Gtk.Label _amountLabel { - valign: center; - margin-end: 6; - } - - Gtk.Button _editButton { - icon-name: "document-edit-symbolic"; - halign: end; - valign: center; - tooltip-text: _("Edit Transaction"); - - styles ["flat"] - } - } - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp b/NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp deleted file mode 100644 index a31958d88..000000000 --- a/NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp +++ /dev/null @@ -1,133 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window _root { - default-width: 420; - modal: true; - resizable: false; - - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - title-widget: Gtk.Label {}; - } - - Gtk.WindowHandle { - Gtk.Box { - orientation: vertical; - spacing: 24; - margin-start: 24; - margin-end: 24; - - Gtk.Label { - label: C_("Title", "Transfer"); - - styles ["title-2"] - } - - Gtk.Label { - label: _("Transferring money will create an expense transaction with the given amount in this account and an income transaction with the given amount in the account to transfer to."); - wrap: true; - justify: center; - } - - Adw.PreferencesGroup { - Adw.ActionRow _destinationAccountRow { - title: _("Destination Account"); - subtitle: _("No Account Selected"); - activatable-widget: _selectAccountButton; - - [suffix] - Gtk.Box { - orientation: horizontal; - valign: center; - - Gtk.Button _selectAccountButton { - icon-name: "document-open-symbolic"; - tooltip-text: _("Select a destination account"); - } - - Gtk.MenuButton _recentAccountsButton { - icon-name: "document-open-recent-symbolic"; - tooltip-text: _("Recent Accounts"); - popover: Gtk.Popover _recentAccountsPopover { - Adw.PreferencesGroup _recentAccountsGroup { - title: _("Recents"); - width-request: 200; - height-request: 55; - } - }; - } - - styles ["linked"] - } - } - - Adw.PasswordEntryRow _destinationPasswordRow { - title: _("Destination Account Password"); - show-apply-button: true; - visible: false; - } - - Adw.EntryRow _amountRow { - title: _("Amount"); - input-purpose: number; - activates-default: true; - - [suffix] - Gtk.Label _currencyLabel { - styles ["dim-label"] - } - } - - Adw.PreferencesGroup _conversionRateGroup { - margin-top: 24; - title: _("Conversion Needed"); - visible: false; - - Adw.ExpanderRow _rowUseCustomRates { - title: _("Use Custom Rates"); - subtitle: _("Enter the conversion rates manually"); - enable-expansion: false; - show-enable-switch: true; - - Adw.EntryRow _sourceCurrencyRow { - activates-default: true; - } - - Adw.EntryRow _destinationCurrencyRow { - activates-default: true; - } - } - - Adw.ActionRow { - title:_("Result"); - - [suffix] - Gtk.Label _conversionResultLabel {} - } - } - } - - Gtk.Button _transferButton { - halign: center; - valign: center; - margin-top: 24; - margin-bottom: 24; - label: C_("Button", "Transfer"); - - styles ["pill", "suggested-action"] - } - } - } - }; - - Gtk.ShortcutController { - Gtk.Shortcut { - trigger: "Escape"; - action: "action(window.close)"; - } - } - - default-widget: _transferButton; -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Blueprints/window.blp b/NickvisionMoney.GNOME/Blueprints/window.blp deleted file mode 100644 index e1287e82e..000000000 --- a/NickvisionMoney.GNOME/Blueprints/window.blp +++ /dev/null @@ -1,254 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -menu mainMenu { - item (_("Currency Converter"), "win.currencyConverter") - - section { - item(_("Preferences"), "win.preferences") - item(_("Keyboard Shortcuts"), "win.keyboardShortcuts") - item(_("Help"), "win.help") - item(_("About Denaro"), "win.about") - } -} - -Adw.ApplicationWindow _root { - default-width: 900; - default-height: 720; - width-request: 360; - - Adw.ToolbarView _toolbarView { - [top] - Adw.HeaderBar { - title-widget: Adw.WindowTitle _windowTitle {}; - - [start] - Gtk.MenuButton _accountMenuButton { - icon-name: "bank-symbolic"; - tooltip-text: _("Account Menu"); - visible: false; - popover: Gtk.Popover _accountPopover { - Gtk.Box { - orientation: vertical; - spacing: 10; - margin-start: 5; - margin-end: 5; - margin-top: 5; - margin-bottom: 5; - width-request: 300; - - Gtk.Box { - orientation: horizontal; - hexpand: true; - - Gtk.Label { - halign: start; - hexpand: true; - label: _("Recents"); - - styles ["title-4"] - } - - Gtk.Box { - halign: end; - margin-start: 6; - - Gtk.Button { - tooltip-text: _("New Account (Ctrl+N)"); - action-name: "win.newAccount"; - - Adw.ButtonContent { - label: C_("Account", "New"); - icon-name: "document-new-symbolic"; - } - - styles ["suggested-action"] - } - - Gtk.Button { - icon-name: "document-open-symbolic"; - tooltip-text: _("Open Account (Ctrl+O)"); - action-name: "win.openAccount"; - } - - styles ["linked"] - } - } - - Gtk.Separator { - - } - - Adw.ViewStack _viewStackAccountPopover { - Adw.ViewStackPage { - name: "no-recents"; - child: Adw.StatusPage { - title: _("No Recent Accounts"); - icon-name: "document-open-recent-symbolic"; - - styles ["compact"] - }; - } - - Adw.ViewStackPage { - name: "recents"; - child: Adw.PreferencesGroup _recentAccountsGroup { - - }; - } - } - } - }; - } - - [start] - Gtk.ToggleButton _flapToggleButton { - icon-name: "sidebar-show-symbolic"; - tooltip-text: _("Toggle Sidebar"); - active: true; - visible: false; - } - - [start] - Gtk.ToggleButton _graphToggleButton { - icon-name: "dock-top-symbolic"; - tooltip-text: _("Toggle Graphs"); - active: true; - visible: false; - } - - - [end] - Gtk.MenuButton { - direction: none; - menu-model: mainMenu; - tooltip-text: _("Main Menu"); - primary: true; - } - - [end] - Gtk.ToggleButton _dashboardButton { - icon-name: "resources-symbolic"; - tooltip-text: _("Dashboard"); - visible: false; - } - - styles ["flat"] - } - - content: Adw.ToastOverlay _toastOverlay { - hexpand: true; - vexpand: true; - - Adw.ViewStack _viewStack { - Adw.ViewStackPage { - name:"pageNoAccounts"; - child: Gtk.ScrolledWindow { - Adw.Clamp { - maximum-size: 420; - valign: center; - margin-start: 12; - margin-end: 12; - margin-top: 12; - margin-bottom: 12; - - Gtk.Box { - orientation: vertical; - spacing: 12; - hexpand: true; - halign: fill; - - Gtk.Box { - halign: center; - margin-top: 24; - margin-bottom: 14; - - Gtk.Image _greetingIcon { - pixel-size: 48; - margin-end: 12; - } - - Gtk.Label _greetingLabel { - styles ["greeting-title"] - } - } - - Gtk.Label _dragLabel { - label: _("Create or open an account to get started. You may also drag a file into the app from your file browser."); - wrap: true; - justify: center; - visible: bind _startPageRecentAccountsGroup.visible inverted; - - styles ["dim-label"] - } - - Adw.PreferencesGroup _startPageRecentAccountsGroup { - title: _("Recent Accounts"); - width-request: 200; - height-request: 55; - margin-top: 24; - margin-bottom: 24; - visible: false; - } - - Gtk.FlowBox { - margin-bottom: 12; - column-spacing: 4; - row-spacing: 4; - max-children-per-line: 2; - homogeneous: true; - hexpand: true; - halign: fill; - selection-mode: none; - - Gtk.FlowBoxChild { - focusable: false; - - Gtk.Button _newAccountButton { - label: _("New Account"); - action-name: "win.newAccount"; - halign: center; - - styles ["pill", "suggested-action"] - } - } - - Gtk.FlowBoxChild { - focusable: false; - - Gtk.Button _openAccountButton { - label: _("Open Account"); - action-name: "win.openAccount"; - halign: center; - - styles ["pill"] - } - } - } - } - } - }; - } - - Adw.ViewStackPage { - name: "pageTabs"; - child: Gtk.Box { - orientation: vertical; - - Adw.TabBar { - view: _tabView; - } - - Adw.TabView _tabView {} - }; - } - - Adw.ViewStackPage { - name: "dashboard"; - child: Adw.Bin _dashboardBin { - }; - } - } - }; - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/AutocompleteBox.cs b/NickvisionMoney.GNOME/Controls/AutocompleteBox.cs deleted file mode 100644 index 90479d03d..000000000 --- a/NickvisionMoney.GNOME/Controls/AutocompleteBox.cs +++ /dev/null @@ -1,148 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using System; -using System.Collections.Generic; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A dialog for showing autocomplete suggestions -/// -public class AutocompleteBox : Gtk.Box -{ - private readonly Adw.EntryRow _parent; - private readonly List _rows; - private readonly Gtk.EventControllerKey _parentKeyController; - private bool _canHide; - private int _downCount; - - [Gtk.Connect] private readonly Adw.PreferencesGroup _group; - - public event EventHandler<(string, T)>? SuggestionAccepted; - - /// - /// Constructs an AutocompleteDialog - /// - /// Gtk.Builder - /// Adw.EntryRow - private AutocompleteBox(Gtk.Builder builder, Adw.EntryRow parent) : base(builder.GetPointer("_root"), false) - { - _parent = parent; - _rows = new List(); - _canHide = true; - _downCount = 0; - //Build UI - builder.Connect(this); - _parentKeyController = Gtk.EventControllerKey.New(); - _parentKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _parentKeyController.OnKeyPressed += (sender, e) => - { - if (e.Keyval == 65293 || e.Keyval == 65421) //enter | keypad enter - { - if (GetVisible()) - { - AcceptSuggestion(0); - return true; - } - } - if (e.Keyval == 65364) //down arrow - { - if (GetVisible()) - { - _downCount = 1; - _canHide = false; - GrabFocus(); - return true; - } - } - return false; - }; - _parent.AddController(_parentKeyController); - _parent.OnStateFlagsChanged += (sender, e) => - { - if (!_canHide) - { - _canHide = true; - } - else if (e.Flags.HasFlag(Gtk.StateFlags.FocusWithin) && !_parent.GetStateFlags().HasFlag(Gtk.StateFlags.FocusWithin)) - { - _parent.SetActivatesDefault(true); - SetVisible(false); - } - }; - } - - /// - /// Constructs an AutocompleteDialog - /// - /// Adw.EntryRow - public AutocompleteBox(Adw.EntryRow parent) : this(Builder.FromFile("autocomplete_box.ui"), parent) - { - } - - /// - /// Grabs focus for the box - /// - public new void GrabFocus() => _rows[0].GrabFocus(); - - /// - /// Updates the list of suggestions - /// - /// A list of suggestions and their subtext and models - public void UpdateSuggestions(List<(string, string, T)> suggestions) - { - foreach (var row in _rows) - { - _group.Remove(row); - } - _rows.Clear(); - _downCount = 0; - foreach (var suggestion in suggestions) - { - var row = Adw.ActionRow.New(); - row.SetTitle(suggestion.Item1); - row.SetSubtitle(suggestion.Item2); - row.SetActivatable(true); - row.OnActivated += (sender, e) => - { - SuggestionAccepted?.Invoke(this, (suggestion.Item1, suggestion.Item3)); - SetVisible(false); - }; - var keyController = Gtk.EventControllerKey.New(); - keyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - keyController.OnKeyPressed += (sender, e) => - { - if (e.Keyval == 65293 || e.Keyval == 65421) //enter | keypad enter - { - row.Activate(); - return true; - } - if (e.Keyval == 65364) //down arrow - { - _downCount++; - _canHide = _downCount > _rows.Count; - } - return false; - }; - row.AddController(keyController); - row.OnStateFlagsChanged += (sender, e) => - { - if (!_canHide) - { - _canHide = true; - } - else if (e.Flags.HasFlag(Gtk.StateFlags.FocusWithin) && !_parent.GetStateFlags().HasFlag(Gtk.StateFlags.FocusWithin)) - { - SetVisible(false); - } - }; - _rows.Add(row); - _group.Add(row); - } - } - - /// - /// Accepts a suggestion - /// - /// The index of the suggestion to accept - public void AcceptSuggestion(int index) => _rows[index].Activate(); -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs b/NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs deleted file mode 100644 index 14e66456e..000000000 --- a/NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs +++ /dev/null @@ -1,162 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Controls; - -public class CurrencyConverterDialog : Adw.Window -{ - private readonly string _iconName; - private readonly bool _useNativeDigits; - private string[]? _currencies; - - [Gtk.Connect] private readonly Adw.ToastOverlay _toastOverlay; - [Gtk.Connect] private readonly Gtk.Button _switchButton; - [Gtk.Connect] private readonly Gtk.Box _loadingBox; - [Gtk.Connect] private readonly Adw.ComboRow _sourceCurrencyRow; - [Gtk.Connect] private readonly Adw.ComboRow _resultCurrencyRow; - [Gtk.Connect] private readonly Adw.EntryRow _sourceAmountRow; - [Gtk.Connect] private readonly Adw.EntryRow _resultAmountRow; - [Gtk.Connect] private readonly Gtk.Button _copyResultButton; - - /// - /// Constructs a CurrencyConverterDialog - /// - /// Gtk.Builder - /// Gtk.Window - /// The name of the icon for the dialog - /// Whether or not to use native digits when displaying the result amount - private CurrencyConverterDialog(Gtk.Builder builder, Gtk.Window parent, string iconName, bool useNativeDigits) : base(builder.GetPointer("_root"), false) - { - _iconName = iconName; - _useNativeDigits = useNativeDigits; - builder.Connect(this); - //Dialog Settings - SetTransientFor(parent); - SetIconName(_iconName); - _switchButton.OnClicked += (sender, e) => - { - var temp = _sourceCurrencyRow.GetSelected(); - _sourceCurrencyRow.SetSelected(_resultCurrencyRow.GetSelected()); - _resultCurrencyRow.SetSelected(temp); - }; - _sourceCurrencyRow.OnNotify += async (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - _sourceAmountRow.SetTitle(_currencies[_sourceCurrencyRow.GetSelected()]); - await OnAmountRowChangedAsync(); - } - }; - _sourceAmountRow.OnNotify += async (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - await OnAmountRowChangedAsync(); - } - }; - _resultCurrencyRow.OnNotify += async (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - _resultAmountRow.SetTitle(_currencies[_resultCurrencyRow.GetSelected()]); - await OnAmountRowChangedAsync(); - } - }; - _copyResultButton.OnClicked += (sender, e) => - { - if (!string.IsNullOrWhiteSpace(_resultAmountRow.GetText())) - { - _resultAmountRow.GetClipboard().SetText(_resultAmountRow.GetText()); - _toastOverlay.AddToast(Adw.Toast.New(_("Result was copied to clipboard."))); - } - }; - } - - /// - /// Constructs a CurrencyConverterDialog - /// - /// Gtk.Window - /// The name of the icon for the dialog - /// Whether or not to use native digits when displaying the result amount - public CurrencyConverterDialog(Gtk.Window parent, string iconName, bool useNativeDigits) : this(Builder.FromFile("currency_converter_dialog.ui"), parent, iconName, useNativeDigits) - { - } - - /// - /// Presents the dialog - /// - public async Task PresentAsync() - { - base.Present(); - _loadingBox.SetVisible(true); - _currencies = (await CurrencyConversionService.GetConversionRatesAsync("USD") ?? new Dictionary()).Keys - .OrderByDescending(x => x == "USD") - .ThenByDescending(x => x == "EUR") - .ThenByDescending(x => x == "JPY") - .ThenByDescending(x => x == "GBP") - .ThenByDescending(x => x == "CNY") - .ThenByDescending(x => x == "CAD") - .ThenByDescending(x => x == "AUD") - .ToArray(); - if (_currencies.Length == 0) - { - var messageDialog = Adw.MessageDialog.New(this, _("Error"), _("Unable to load currency data. Please try again. If the error still persists, report a bug.")); - messageDialog.SetIconName(_iconName); - messageDialog.AddResponse("close", _("Close")); - messageDialog.SetDefaultResponse("close"); - messageDialog.SetCloseResponse("close"); - messageDialog.OnResponse += async (ss, exx) => - { - messageDialog.Destroy(); - Close(); - }; - messageDialog.Present(); - } - else - { - var currenciesList = Gtk.StringList.New(_currencies); - _loadingBox.SetVisible(false); - _sourceCurrencyRow.SetModel(currenciesList); - _resultCurrencyRow.SetModel(currenciesList); - _resultCurrencyRow.SetSelected(1); - _sourceAmountRow.SetText("1"); - _sourceAmountRow.SetPosition(-1); - } - } - - /// - /// Occurs when the source amount row changes - /// - private async Task OnAmountRowChangedAsync() - { - _sourceAmountRow.RemoveCssClass("error"); - if (string.IsNullOrWhiteSpace(_sourceAmountRow.GetText())) - { - _resultAmountRow.SetText(""); - } - else - { - _loadingBox.SetVisible(true); - if (decimal.TryParse(_sourceAmountRow.GetText(), out var amount)) - { - var res = await CurrencyConversionService.ConvertAsync(_currencies![_sourceCurrencyRow.GetSelected()], amount, _currencies[_resultCurrencyRow.GetSelected()]); - if (res != null) - { - _resultAmountRow.SetText(res.ResultAmount.ToAmountString(CultureInfo.CurrentCulture, _useNativeDigits, false, true)); - } - } - else - { - _sourceAmountRow.AddCssClass("error"); - _resultAmountRow.SetText(""); - } - _loadingBox.SetVisible(false); - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/GroupRow.cs b/NickvisionMoney.GNOME/Controls/GroupRow.cs deleted file mode 100644 index a4fc8c5bd..000000000 --- a/NickvisionMoney.GNOME/Controls/GroupRow.cs +++ /dev/null @@ -1,148 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.Globalization; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A row for displaying a group -/// -public partial class GroupRow : Adw.ActionRow -{ - private Group _group; - private bool _filterActive; - private string _defaultColor; - private CultureInfo _cultureAmount; - private bool _useNativeDigits; - - [Gtk.Connect] private readonly Gtk.Overlay _filterOverlay; - [Gtk.Connect] private readonly Gtk.Image _filterCheckBackground; - [Gtk.Connect] private readonly Gtk.CheckButton _filterCheckButton; - [Gtk.Connect] private readonly Gtk.Label _amountLabel; - [Gtk.Connect] private readonly Gtk.Button _editButton; - - /// - /// The Id of the Group the row represents - /// - public uint Id => _group.Id; - - /// - /// Occurs when the filter checkbox is changed on the row - /// - public event EventHandler<(uint Id, bool Filter)>? FilterChanged; - /// - /// Occurs when the edit button on the row is clicked - /// - public event EventHandler? EditTriggered; - - private GroupRow(Gtk.Builder builder, Group group, CultureInfo cultureAmount, bool useNativeDigits, bool filterActive, string defaultColor) : base(builder.GetPointer("_root"), false) - { - _cultureAmount = cultureAmount; - _defaultColor = defaultColor; - _useNativeDigits = useNativeDigits; - //Build UI - builder.Connect(this); - var sizeGroup = Gtk.SizeGroup.New(Gtk.SizeGroupMode.Both); - sizeGroup.AddWidget(_filterOverlay); - sizeGroup.AddWidget(_filterCheckButton); - //Filter Checkbox - _filterCheckButton.OnToggled += FilterToggled; - _filterCheckButton.OnToggled += (sender, e) => - { - if (_filterCheckButton.GetActive()) - { - _filterCheckBackground.SetVisible(true); - _filterCheckButton.RemoveCssClass("group-filter-disabled"); - } - else - { - _filterCheckBackground.SetVisible(false); - _filterCheckButton.AddCssClass("group-filter-disabled"); - } - }; - //Buttons - _editButton.SetVisible(group.Id != 0); - _amountLabel.SetVexpand(group.Id == 0); - _editButton.OnClicked += Edit; - UpdateRow(group, defaultColor, cultureAmount, filterActive); - } - - /// - /// Constructs a group row - /// - /// The Group to display - /// The CultureInfo to use for the amount string - /// Whether to use native digits - /// Whether or not the filter checkbutton should be active - /// The default group color - public GroupRow(Group group, CultureInfo cultureAmount, bool useNativeDigits, bool filterActive, string defaultColor) : this(Builder.FromFile("group_row.ui"), group, cultureAmount, useNativeDigits, filterActive, defaultColor) - { - } - - /// - /// Whether or not the filter checkbox is checked - /// - public bool FilterChecked - { - get => _filterCheckButton.GetActive(); - - set => _filterCheckButton.SetActive(value); - } - - /// - /// Updates the row with the new model - /// - /// The new Group model - /// The default color for the row - /// The culture to use for displaying amount strings - /// Whether or not the filter checkbox is active - public void UpdateRow(Group group, string defaultColor, CultureInfo cultureAmount, bool filterActive) - { - _group = group; - _defaultColor = defaultColor; - _filterActive = filterActive; - _cultureAmount = cultureAmount; - //Color - if (!GdkHelpers.RGBA.Parse(out var color, _group.RGBA)) - { - GdkHelpers.RGBA.Parse(out color, _defaultColor); - } - //Row Settings - SetTitle(_group.Name); - SetSubtitle(_group.Description); - //Filter Checkbox - var red = (int)(color!.Value.Red * 255); - var green = (int)(color.Value.Green * 255); - var blue = (int)(color.Value.Blue * 255); - using var pixbuf = GdkPixbuf.Pixbuf.New(GdkPixbuf.Colorspace.Rgb, false, 8, 1, 1); - if (uint.TryParse(red.ToString("X2") + green.ToString("X2") + blue.ToString("X2") + "FF", NumberStyles.HexNumber, null, out var colorPixbuf)) - { - pixbuf.Fill(colorPixbuf); - _filterCheckBackground.SetFromPixbuf(pixbuf); - } - var luma = color.Value.Red * 0.2126 + color.Value.Green * 0.7152 + color.Value.Blue * 0.0722; - _filterCheckButton.AddCssClass(luma > 0.5 ? "group-filter-check-dark" : "group-filter-check-light"); - _filterCheckButton.RemoveCssClass(luma > 0.5 ? "group-filter-check-light" : "group-filter-check-dark"); - _filterCheckButton.SetActive(_filterActive); - //Amount Label - _amountLabel.SetLabel($"{(_group.Balance >= 0 ? "+ " : "− ")}{_group.Balance.ToAmountString(_cultureAmount, _useNativeDigits)}"); - _amountLabel.AddCssClass(_group.Balance >= 0 ? "denaro-income" : "denaro-expense"); - _amountLabel.RemoveCssClass(_group.Balance >= 0 ? "denaro-expense" : "denaro-income"); - } - - /// - /// Occurs when the filter checkbutton is toggled - /// - /// Gtk.CheckButton - /// EventArgs - private void FilterToggled(Gtk.CheckButton sender, EventArgs e) => FilterChanged?.Invoke(this, (Id, _filterCheckButton.GetActive())); - - /// - /// Occurs when the edit button is clicked - /// - /// Gtk.Button - /// EventArgs - private void Edit(Gtk.Button sender, EventArgs e) => EditTriggered?.Invoke(this, Id); -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/NewPasswordDialog.cs b/NickvisionMoney.GNOME/Controls/NewPasswordDialog.cs deleted file mode 100644 index 514c4558d..000000000 --- a/NickvisionMoney.GNOME/Controls/NewPasswordDialog.cs +++ /dev/null @@ -1,74 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using System.Threading.Tasks; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A dialog for creating a password -/// -public partial class NewPasswordDialog : Adw.Window -{ - [Gtk.Connect] private readonly Gtk.Label _titleLabel; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _newPasswordEntry; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _confirmPasswordEntry; - [Gtk.Connect] private readonly Gtk.Button _addButton; - - private NewPasswordDialog(Gtk.Builder builder, Gtk.Window parent, string title, TaskCompletionSource tcs) : base(builder.GetPointer("_root"), false) - { - var setPassword = false; - builder.Connect(this); - //Dialog Settings - SetTransientFor(parent); - _titleLabel.SetLabel(title); - _newPasswordEntry.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - Validate(); - } - }; - _confirmPasswordEntry.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - Validate(); - } - }; - _addButton.SetSensitive(false); - _addButton.OnClicked += (sender, e) => - { - setPassword = true; - Close(); - }; - OnCloseRequest += (sender, e) => - { - tcs.SetResult(setPassword ? _newPasswordEntry.GetText() : null); - return false; - }; - } - - /// - /// Constructs a NewPasswordDialog - /// - /// Gtk.Window - /// The title of the dialog - /// TaskCompletionSource used to pass result to the controller - public NewPasswordDialog(Gtk.Window parent, string title, TaskCompletionSource tcs) : this(Builder.FromFile("new_password_dialog.ui"), parent, title, tcs) - { - } - - /// - /// Validates the user input - /// - private void Validate() - { - if (_newPasswordEntry.GetText() != _confirmPasswordEntry.GetText() || string.IsNullOrEmpty(_newPasswordEntry.GetText())) - { - _addButton.SetSensitive(false); - } - else - { - _addButton.SetSensitive(true); - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/PasswordDialog.cs b/NickvisionMoney.GNOME/Controls/PasswordDialog.cs deleted file mode 100644 index 0e60cbab0..000000000 --- a/NickvisionMoney.GNOME/Controls/PasswordDialog.cs +++ /dev/null @@ -1,43 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using System.Threading.Tasks; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A dialog for receiving a password -/// -public partial class PasswordDialog : Adw.Window -{ - [Gtk.Connect] private readonly Gtk.Label _filenameLabel; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _passwordEntry; - [Gtk.Connect] private readonly Gtk.Button _unlockButton; - - private PasswordDialog(Gtk.Builder builder, Gtk.Window parent, string accountTitle, TaskCompletionSource tcs) : base(builder.GetPointer("_root"), false) - { - var unlock = false; - builder.Connect(this); - //Dialog Settings - SetTransientFor(parent); - _filenameLabel.SetLabel(accountTitle); - _unlockButton.OnClicked += (sender, e) => - { - unlock = true; - Close(); - }; - OnCloseRequest += (sender, e) => - { - tcs.SetResult(unlock ? _passwordEntry.GetText() : null); - return false; - }; - } - - /// - /// Constructs a PasswordDialog - /// - /// Gtk.Window - /// The title of the account requiring the password - /// TaskCompletionSource used to pass result to the controller - public PasswordDialog(Gtk.Window parent, string accountTitle, TaskCompletionSource tcs) : this(Builder.FromFile("password_dialog.ui"), parent, accountTitle, tcs) - { - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/RecentAccountRow.cs b/NickvisionMoney.GNOME/Controls/RecentAccountRow.cs deleted file mode 100644 index 63bc52ebc..000000000 --- a/NickvisionMoney.GNOME/Controls/RecentAccountRow.cs +++ /dev/null @@ -1,95 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A row for displaying recent accounts -/// -public partial class RecentAccountRow : Adw.ActionRow -{ - private readonly RecentAccount _recentAccount; - private readonly GdkHelpers.RGBA _color; - - [Gtk.Connect] private readonly Gtk.Image _prefixColor; - [Gtk.Connect] private readonly Gtk.Button _prefixButton; - [Gtk.Connect] private readonly Gtk.DrawingArea _tagArea; - [Gtk.Connect] private readonly Gtk.Label _tagLabel; - [Gtk.Connect] private readonly Gtk.Button _removeButton; - - public event EventHandler? Selected; - public event EventHandler? RemoveRequested; - - /// - /// Constructs a RecentAccountRow - /// - /// Gtk.Builder - /// The RecentAccount model - /// The color string of the recent account - /// Whether or not the row is being shown on the start screen - /// Whether or not the recent account can be removed - private RecentAccountRow(Gtk.Builder builder, RecentAccount account, string colorString, bool onStartScreen, bool canRemove) : base(builder.GetPointer("_root"), false) - { - _recentAccount = account; - builder.Connect(this); - SetTitle(account.Name); - SetSubtitle(account.Path); - _prefixButton.OnClicked += (sender, e) => Selected?.Invoke(this, _recentAccount); - _removeButton.SetVisible(canRemove); - _removeButton.OnClicked += (sender, e) => RemoveRequested?.Invoke(this, _recentAccount); - GdkHelpers.RGBA.Parse(out var color, colorString); - _color = color!.Value; - var luma = _color.Red * 0.2126 + _color.Green * 0.7152 + _color.Blue * 0.0722; - if (onStartScreen) - { - var sizeGroup = Gtk.SizeGroup.New(Gtk.SizeGroupMode.Horizontal); - sizeGroup.AddWidget(_tagArea); - sizeGroup.AddWidget(_tagLabel); - var fgcolor = luma > 0.5 ? "#000000cc" : "#ffffff"; - _tagLabel.SetLabel($"{_(account.Type.ToString())}"); - _tagArea.SetDrawFunc(DrawTag); - } - else - { - using var pixbuf = GdkPixbuf.Pixbuf.New(GdkPixbuf.Colorspace.Rgb, false, 8, 1, 1); - var red = (int)(_color.Red * 255); - var green = (int)(_color.Green * 255); - var blue = (int)(_color.Blue * 255); - if (uint.TryParse(red.ToString("X2") + green.ToString("X2") + blue.ToString("X2") + "FF", System.Globalization.NumberStyles.HexNumber, null, out var colorPixbuf)) - { - pixbuf.Fill(colorPixbuf); - _prefixColor.SetFromPixbuf(pixbuf); - _prefixButton.AddCssClass(luma > 0.5 ? "tag-dark" : "tag-light"); - } - } - } - - /// - /// Constructs a RecentAccountRow - /// - /// The RecentAccount model - /// The color string of the recent account - /// Whether or not the row is being shown on the start screen - /// Whether or not the recent account can be removed - public RecentAccountRow(RecentAccount account, string colorString, bool onStartScreen, bool canRemove) : this(Builder.FromFile("recent_account_row.ui"), account, colorString, onStartScreen, canRemove) - { - } - - /// - /// Draws the tag icon - /// - /// Gtk.DrawingArea - /// Cairo.Context - /// The width of the tag - /// The height of the tag - private void DrawTag(Gtk.DrawingArea area, Cairo.Context cr, int width, int height) - { - cr.SetSourceRgba(_color.Red, _color.Green, _color.Blue, 1); - cr.Arc(height / 2, height / 2, height / 2, 0.5 * Math.PI, 1.5 * Math.PI); - cr.Arc(width - height / 2, height / 2, height / 2, -0.5 * Math.PI, 0.5 * Math.PI); - cr.ClosePath(); - cr.Fill(); - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/RemindersDialog.cs b/NickvisionMoney.GNOME/Controls/RemindersDialog.cs deleted file mode 100644 index 8c2d5e4de..000000000 --- a/NickvisionMoney.GNOME/Controls/RemindersDialog.cs +++ /dev/null @@ -1,52 +0,0 @@ - -using NickvisionMoney.GNOME.Helpers; -using System.Collections.Generic; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A dialog showing a list of reminders -/// -public partial class RemindersDialog : Adw.Window -{ - [Gtk.Connect] private readonly Gtk.Label _descriptionLabel; - [Gtk.Connect] private readonly Adw.ViewStack _viewStack; - [Gtk.Connect] private readonly Gtk.ScrolledWindow _scrolledWindow; - [Gtk.Connect] private readonly Adw.PreferencesGroup _remindersGroup; - - /// - /// Constructs a RemindersDialog - /// - /// Gtk.Builder - /// Gtk.Window - /// Icon name for the window - /// The description of the reminders - /// The list of reminders - private RemindersDialog(Gtk.Builder builder, Gtk.Window parent, string iconName, string description, List<(string Title, string Subtitle)> reminders) : base(builder.GetPointer("_root"), false) - { - builder.Connect(this); - //Dialog Settings - SetIconName(iconName); - SetTransientFor(parent); - _descriptionLabel.SetLabel(description); - _viewStack.SetVisibleChildName(reminders.Count > 0 ? "reminders" : "no-reminders"); - foreach (var reminder in reminders) - { - var row = new Adw.ActionRow(); - row.SetTitle(reminder.Title); - row.SetSubtitle(reminder.Subtitle); - _remindersGroup.Add(row); - } - } - - /// - /// Constructs a RemindersDialog - /// - /// Gtk.Window - /// Icon name for the window - /// The description of the reminders - /// The list of reminders - public RemindersDialog(Gtk.Window parent, string iconName, string description, List<(string Title, string Subtitle)> reminders) : this(Builder.FromFile("reminders_dialog.ui"), parent, iconName, description, reminders) - { - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/TagButton.cs b/NickvisionMoney.GNOME/Controls/TagButton.cs deleted file mode 100644 index 379b64b9e..000000000 --- a/NickvisionMoney.GNOME/Controls/TagButton.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// Tag toggle button -/// -public class TagButton : Gtk.ToggleButton -{ - /// - /// Tag string - /// - public string Tag { get; init; } - - /// - /// Occurs when toggle state has changed - /// - public event EventHandler<(string Tag, bool Filter)>? FilterChanged; - - /// - /// Construct TagButton - /// - /// The tag - public TagButton(string tag) - { - Tag = tag; - SetLabel(tag); - SetCanShrink(true); - OnToggled += (sender, e) => FilterChanged?.Invoke(this, (Tag, GetActive())); - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/TransactionId.cs b/NickvisionMoney.GNOME/Controls/TransactionId.cs deleted file mode 100644 index b6530cc62..000000000 --- a/NickvisionMoney.GNOME/Controls/TransactionId.cs +++ /dev/null @@ -1,94 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using System.Globalization; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A widget showing transaction Id (or only color in compact mode) -/// -public partial class TransactionId : Gtk.Overlay -{ - private readonly Gtk.SizeGroup _sizeGroup; - private readonly GdkPixbuf.Pixbuf _pixbuf; - private readonly uint _id; - - [Gtk.Connect] private readonly Gtk.Image _colorImage; - [Gtk.Connect] private readonly Gtk.Label _idLabel; - - private TransactionId(Gtk.Builder builder, uint id) : base(builder.GetPointer("_root"), false) - { - _id = id; - builder.Connect(this); - OnDestroy += (sender, e) => _pixbuf.Dispose(); - _pixbuf = GdkPixbuf.Pixbuf.New(GdkPixbuf.Colorspace.Rgb, false, 8, 1, 1); - _sizeGroup = Gtk.SizeGroup.New(Gtk.SizeGroupMode.Horizontal); - _sizeGroup.AddWidget(this); - _sizeGroup.AddWidget(_idLabel); - } - - /// - /// Constructs a TransactionId widget - /// - /// Transaction Id - public TransactionId(uint id) : this(Builder.FromFile("transaction_id.ui"), id) - { - } - - /// - /// Updates the color of widget - /// - /// Transaction color - /// A default color - public void UpdateColor(string colorString, string defaultColor, bool useNativeDigits) - { - if (!GdkHelpers.RGBA.Parse(out var color, colorString)) - { - GdkHelpers.RGBA.Parse(out color, defaultColor); - } - var red = (int)(color!.Value.Red * 255); - var green = (int)(color.Value.Green * 255); - var blue = (int)(color.Value.Blue * 255); - var idString = _id.ToString(); - var nativeDigits = CultureInfo.CurrentCulture.NumberFormat.NativeDigits; - if (useNativeDigits && "0" != nativeDigits[0]) - { - idString = idString.Replace("0", nativeDigits[0]) - .Replace("1", nativeDigits[1]) - .Replace("2", nativeDigits[2]) - .Replace("3", nativeDigits[3]) - .Replace("4", nativeDigits[4]) - .Replace("5", nativeDigits[5]) - .Replace("6", nativeDigits[6]) - .Replace("7", nativeDigits[7]) - .Replace("8", nativeDigits[8]) - .Replace("9", nativeDigits[9]); - } - var luma = color.Value.Red * 0.2126 + color.Value.Green * 0.7152 + color.Value.Blue * 0.0722; - var fgcolor = luma > 0.5 ? "#000000cc" : "#ffffff"; - _idLabel.SetLabel($"{idString}"); - if (uint.TryParse(red.ToString("X2") + green.ToString("X2") + blue.ToString("X2") + "FF", System.Globalization.NumberStyles.HexNumber, null, out var colorPixbuf)) - { - _pixbuf.Fill(colorPixbuf); - _colorImage.SetFromPixbuf(_pixbuf); - } - } - - /// - /// Occurs when the row toggles compact mode - /// - /// Whether the compact mode is required - public void SetCompact(bool isSmall) - { - _idLabel.SetVisible(!isSmall); - if (isSmall) - { - _colorImage.SetSizeRequest(12, 12); - _sizeGroup.RemoveWidget(_idLabel); - } - else - { - _sizeGroup.AddWidget(_idLabel); - _colorImage.SetSizeRequest(34, 34); - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Controls/TransactionRow.cs b/NickvisionMoney.GNOME/Controls/TransactionRow.cs deleted file mode 100644 index 4196d4b67..000000000 --- a/NickvisionMoney.GNOME/Controls/TransactionRow.cs +++ /dev/null @@ -1,131 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.Globalization; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Controls; - -/// -/// A row for displaying a transaction -/// -public partial class TransactionRow : Gtk.FlowBoxChild -{ - private Transaction _transaction; - private string _defaultColor; - private CultureInfo _cultureAmount; - private bool _isSmall; - private Dictionary _groups; - private TransactionId _idWidget; - private bool _useNativeDigits; - - [Gtk.Connect] private readonly Adw.ActionRow _row; - [Gtk.Connect] private readonly Gtk.Label _amountLabel; - [Gtk.Connect] private readonly Gtk.Button _editButton; - [Gtk.Connect] private readonly Gtk.Box _suffixBox; - - /// - /// The id of the Transaction - /// - public uint Id => _transaction.Id; - - /// - /// Occurs when the edit button on the row is clicked - /// - public event EventHandler? EditTriggered; - - /// - /// Constructs a TransactionRow - /// - /// Gtk.Builder - /// The Transaction to display - /// The groups in the account - /// The CultureInfo to use for the amount string - /// Whether to use native digits - /// Default transaction color - private TransactionRow(Gtk.Builder builder, Transaction transaction, Dictionary groups, CultureInfo cultureAmount, bool useNativeDigits, string defaultColor) : base(builder.GetPointer("_root"), false) - { - _transaction = transaction; - _defaultColor = defaultColor; - _cultureAmount = cultureAmount; - _useNativeDigits = useNativeDigits; - _isSmall = false; - _groups = groups; - //Build UI - builder.Connect(this); - _editButton.OnClicked += Edit; - _idWidget = new TransactionId(transaction.Id); - _row.AddPrefix(_idWidget); - //Group Settings - UpdateRow(transaction, defaultColor, cultureAmount); - } - - /// - /// Constructs a TransactionRow - /// - /// The Transaction to display - /// The groups in the account - /// The CultureInfo to use for the amount string - /// Whether to use native digits - /// Default transaction color - public TransactionRow(Transaction transaction, Dictionary groups, CultureInfo cultureAmount, bool useNativeDigits, string defaultColor) : this(Builder.FromFile("transaction_row.ui"), transaction, groups, cultureAmount, useNativeDigits, defaultColor) - { - } - - /// - /// Whether or not the row uses a small style - /// - public bool IsSmall - { - get => _isSmall; - - set - { - _isSmall = value; - if (_isSmall) - { - _suffixBox.SetOrientation(Gtk.Orientation.Vertical); - _suffixBox.SetMarginTop(4); - } - else - { - _suffixBox.SetOrientation(Gtk.Orientation.Horizontal); - _suffixBox.SetMarginTop(0); - } - _idWidget.SetCompact(_isSmall); - } - } - - /// - /// Updates the row with the new model - /// - /// The new Transaction model - /// The default color for the row - /// The culture to use for displaying amount strings - public void UpdateRow(Transaction transaction, string defaultColor, CultureInfo cultureAmount) - { - _transaction = transaction; - _defaultColor = defaultColor; - _cultureAmount = cultureAmount; - //Row Settings - _row.SetTitle(_transaction.Description); - _row.SetSubtitle($"{_transaction.Date.ToString("d", CultureHelpers.DateCulture)}{(_transaction.RepeatInterval != TransactionRepeatInterval.Never ? $"\n{_("Repeat Interval")}: {_(_transaction.RepeatInterval.ToString())}" : "")}"); - _idWidget.UpdateColor(_transaction.UseGroupColor ? _groups[_transaction.GroupId <= 0 ? 0u : (uint)_transaction.GroupId].RGBA : _transaction.RGBA, _defaultColor, _useNativeDigits); - //Amount Label - _amountLabel.SetLabel($"{(_transaction.Type == TransactionType.Income ? "+ " : "− ")}{_transaction.Amount.ToAmountString(_cultureAmount, _useNativeDigits)}"); - _amountLabel.RemoveCssClass(_transaction.Type == TransactionType.Income ? "denaro-expense" : "denaro-income"); - _amountLabel.AddCssClass(_transaction.Type == TransactionType.Income ? "denaro-income" : "denaro-expense"); - //Buttons Box - _editButton.SetVisible(_transaction.RepeatFrom <= 0); - _editButton.SetSensitive(_transaction.RepeatFrom <= 0); - } - - /// - /// Occurs when the edit button is clicked - /// - /// Gtk.Button - /// EventArgs - private void Edit(Gtk.Button sender, EventArgs e) => EditTriggered?.Invoke(this, Id); -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Helpers/Builder.cs b/NickvisionMoney.GNOME/Helpers/Builder.cs deleted file mode 100644 index 164fbb5c8..000000000 --- a/NickvisionMoney.GNOME/Helpers/Builder.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.IO; -using System.Reflection; -using System.Xml; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Helpers; - -public class Builder -{ - /// - /// Creates a Gtk.Builder from an embedded resource and replaces all translatable strings with the localized version - /// - /// The name of the embedded resource - /// Gtk.Builder - public static Gtk.Builder FromFile(string name) - { - using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name); - using var reader = new StreamReader(stream!); - var uiContents = reader.ReadToEnd(); - var xml = new XmlDocument(); - xml.LoadXml(uiContents); - var elements = xml.GetElementsByTagName("*"); - foreach (XmlElement element in elements) - { - if (element.HasAttribute("translatable")) - { - element.RemoveAttribute("translatable"); - if (element.HasAttribute("context")) - { - var context = element.GetAttribute("context"); - element.InnerText = _p(context, element.InnerText); - } - else - { - element.InnerText = _(element.InnerText); - } - } - } - return Gtk.Builder.NewFromString(xml.OuterXml, -1); - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Helpers/GdkHelpers.Cs b/NickvisionMoney.GNOME/Helpers/GdkHelpers.Cs deleted file mode 100644 index 9eff58000..000000000 --- a/NickvisionMoney.GNOME/Helpers/GdkHelpers.Cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Runtime.InteropServices; - -namespace NickvisionMoney.GNOME.Helpers; - -/// -/// Helper methods for GDK -/// -public static partial class GdkHelpers -{ - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] // Using "gdk" doesn't work here for some reason - [return: MarshalAs(UnmanagedType.I1)] - private static partial bool gdk_rgba_parse(out RGBA rgba, string spec); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] // Using "gdk" doesn't work here for some reason - private static partial string gdk_rgba_to_string(ref RGBA rgba); - - /// - /// Helper RGBA struct. Used instead of Gdk.RGBA - /// - [StructLayout(LayoutKind.Sequential)] - public struct RGBA - { - /// - /// Red channel (0.0-1.0) - /// - public float Red; - /// - /// Green channel (0.0-1.0) - /// - public float Green; - /// - /// Blue channel (0.0-1.0) - /// - public float Blue; - /// - /// Alpha channel (0.0-1.0) - /// - public float Alpha; - - /// - /// Helper method to parse color string to GdkExt.RGBA struct - /// - /// Struct to write to - /// Color string - /// Whether or not the string was parsed successfully - public static bool Parse(out RGBA? colorRGBA, string spec) - { - if (gdk_rgba_parse(out var val, spec)) - { - colorRGBA = val; - return true; - } - colorRGBA = null; - return false; - } - - /// - /// Gets a string representation of the RGBA - /// - /// The string representation of the RGBA - public override string ToString() => gdk_rgba_to_string(ref this); - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Helpers/GtkHelpers.Cs b/NickvisionMoney.GNOME/Helpers/GtkHelpers.Cs deleted file mode 100644 index 648477757..000000000 --- a/NickvisionMoney.GNOME/Helpers/GtkHelpers.Cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Threading.Tasks; - -namespace NickvisionMoney.GNOME.Helpers; - -/// -/// Helper methods for GTK -/// -public unsafe static partial class GtkHelpers -{ - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial void gtk_color_dialog_button_set_rgba(nint button, ref GdkHelpers.RGBA rgba); - - /// - /// Helper extension method for Gtk.ColorButton to get color as GdkHelpers.RGBA - /// - /// Color button - /// Color as GdkHelpers.RGBA - public static GdkHelpers.RGBA GetExtRgba(this Gtk.ColorDialogButton button) => Marshal.PtrToStructure(button.GetRgba().Handle.DangerousGetHandle()); - - /// - /// Helper extension method for Gtk.ColorButton to set color as GdkHelpers.RGBA - /// - /// Color button - /// Color as GdkHelpers.RGBA - public static void SetExtRgba(this Gtk.ColorDialogButton button, GdkHelpers.RGBA color) => gtk_color_dialog_button_set_rgba(button.Handle, ref color); - - /// - /// Extension method for Gtk.ColorDialog to choose a color - /// - /// Color dialog - /// Parent window - /// Thrown if failed to choose a color - /// Color struct if successful, or null - public static Task ChooseRgbaAsync(this Gtk.ColorDialog dialog, Gtk.Window parent) - { - var tcs = new TaskCompletionSource(); - - var callback = new Gio.Internal.AsyncReadyCallbackAsyncHandler((sourceObject, res, data) => - { - if (sourceObject is null) - { - tcs.SetException(new Exception("Missing source object")); - } - else - { - var color = Gtk.Internal.ColorDialog.ChooseRgbaFinish(sourceObject.Handle, res.Handle, out var error); - if (!error.IsInvalid) - { - tcs.SetException(new Exception(error.ToString() ?? "")); - } - else if (color.DangerousGetHandle() == IntPtr.Zero) - { - tcs.SetResult(null); - } - else - { - tcs.SetResult(Marshal.PtrToStructure(color.DangerousGetHandle())); - } - } - }); - - Gtk.Internal.ColorDialog.ChooseRgba( - self: dialog.Handle, - parent: parent.Handle, - initialColor: new Gdk.Internal.RGBAOwnedHandle(IntPtr.Zero), - cancellable: IntPtr.Zero, - callback: callback.NativeCallback, - userData: IntPtr.Zero - ); - - return tcs.Task; - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/NickvisionMoney.GNOME.csproj b/NickvisionMoney.GNOME/NickvisionMoney.GNOME.csproj deleted file mode 100644 index 1de121214..000000000 --- a/NickvisionMoney.GNOME/NickvisionMoney.GNOME.csproj +++ /dev/null @@ -1,43 +0,0 @@ - - - - Exe - net8.0 - enable - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/NickvisionMoney.GNOME/Program.cs b/NickvisionMoney.GNOME/Program.cs deleted file mode 100644 index 86fedd0d9..000000000 --- a/NickvisionMoney.GNOME/Program.cs +++ /dev/null @@ -1,112 +0,0 @@ -using NickvisionMoney.GNOME.Views; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Reflection; - -namespace NickvisionMoney.GNOME; - -/// -/// The Program -/// -public partial class Program -{ - private readonly Adw.Application _application; - private MainWindow? _mainWindow; - private MainWindowController _mainWindowController; - - /// - /// Main method - /// - /// string[] - /// Return code from Adw.Application.Run() - public static int Main(string[] args) => new Program(args).Run(args); - - /// - /// Constructs a Program - /// - public Program(string[] args) - { - if (CultureInfo.CurrentCulture.Equals(CultureInfo.InvariantCulture)) - { - CultureInfo.CurrentCulture = new CultureInfo("en-US"); // Fix #465 - } - else if (CultureInfo.CurrentCulture.ToString() == "ar-RG") - { - CultureInfo.CurrentCulture = new CultureInfo("ar-EG"); // Fix #211 - } - _application = Adw.Application.New("org.nickvision.money", Gio.ApplicationFlags.NonUnique); - _mainWindow = null; - _mainWindowController = new MainWindowController(args); - _mainWindowController.AppInfo.Changelog = - @"* Improved importing of QIF files - * Fixed a bug where the app would crash when filtering transactions for certain dates - * Updated and added translations (Thanks to everyone on Weblate)!"; - _application.OnActivate += OnActivate; - if (File.Exists(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)) + "/org.nickvision.money.gresource")) - { - //Load file from program directory, required for `dotnet run` - Gio.Functions.ResourcesRegister(Gio.Functions.ResourceLoad(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)) + "/org.nickvision.money.gresource")); - } - else - { - var prefixes = new List { - Directory.GetParent(Directory.GetParent(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))).FullName).FullName, - Directory.GetParent(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))).FullName, - "/usr" - }; - foreach (var prefix in prefixes) - { - if (File.Exists(prefix + "/share/org.nickvision.money/org.nickvision.money.gresource")) - { - Gio.Functions.ResourcesRegister(Gio.Functions.ResourceLoad(Path.GetFullPath(prefix + "/share/org.nickvision.money/org.nickvision.money.gresource"))); - break; - } - } - } - } - - /// - /// Runs the program - /// - /// string[] - /// Return code from Adw.Application.Run() - public int Run(string[] args) - { - try - { - var argv = new string[args.Length + 1]; - argv[0] = "org.nickvision.money"; - args.CopyTo(argv, 1); - return _application.RunWithSynchronizationContext(argv); - } - catch (Exception ex) - { - Console.Error.WriteLine(ex); - return -1; - } - } - - /// - /// Occurs when the application is activated - /// - /// Gio.Application - /// EventArgs - private async void OnActivate(Gio.Application sender, EventArgs e) - { - //Set Adw Theme - _application.StyleManager!.ColorScheme = _mainWindowController.Theme switch - { - Theme.System => Adw.ColorScheme.PreferLight, - Theme.Light => Adw.ColorScheme.ForceLight, - Theme.Dark => Adw.ColorScheme.ForceDark, - _ => Adw.ColorScheme.PreferLight - }; - //Main Window - _mainWindow = new MainWindow(_mainWindowController, _application); - await _mainWindow.StartupAsync(); - } -} diff --git a/NickvisionMoney.GNOME/Resources/moon-outline-symbolic.svg b/NickvisionMoney.GNOME/Resources/moon-outline-symbolic.svg deleted file mode 100644 index 01ebc3428..000000000 --- a/NickvisionMoney.GNOME/Resources/moon-outline-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/NickvisionMoney.GNOME/Resources/org.nickvision.money.gresource.xml b/NickvisionMoney.GNOME/Resources/org.nickvision.money.gresource.xml deleted file mode 100644 index 2ab3bc9fe..000000000 --- a/NickvisionMoney.GNOME/Resources/org.nickvision.money.gresource.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - org.nickvision.money.css - org.nickvision.money-dark.css - - - bank-symbolic.svg - bell-outline-symbolic.svg - bell-symbolic.svg - cross-symbolic.svg - dark-mode-symbolic.svg - dock-top-symbolic.svg - document-send-symbolic.svg - edit-select-all-symbolic.svg - edit-select-none-symbolic.svg - larger-brush-symbolic.svg - money-none-symbolic.svg - money-symbolic.svg - month-symbolic.svg - moon-outline-symbolic.svg - resources-symbolic.svg - sun-outline-symbolic.svg - today-symbolic.svg - update-symbolic.svg - wallet2-symbolic.svg - document-send-symbolic.svg - - diff --git a/NickvisionMoney.GNOME/Resources/resources-symbolic.svg b/NickvisionMoney.GNOME/Resources/resources-symbolic.svg deleted file mode 100644 index 5e9609f79..000000000 --- a/NickvisionMoney.GNOME/Resources/resources-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/NickvisionMoney.GNOME/Resources/sun-outline-symbolic.svg b/NickvisionMoney.GNOME/Resources/sun-outline-symbolic.svg deleted file mode 100644 index a80f75b7e..000000000 --- a/NickvisionMoney.GNOME/Resources/sun-outline-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/NickvisionMoney.GNOME/Screenshots/AccountSettings.png b/NickvisionMoney.GNOME/Screenshots/AccountSettings.png deleted file mode 100644 index a6ca1262d..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/AccountSettings.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/CompactMode.png b/NickvisionMoney.GNOME/Screenshots/CompactMode.png deleted file mode 100644 index 39f7d1bfe..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/CompactMode.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/CurrencyConverter.png b/NickvisionMoney.GNOME/Screenshots/CurrencyConverter.png deleted file mode 100644 index 6b5f5fff0..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/CurrencyConverter.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/Dashboard.png b/NickvisionMoney.GNOME/Screenshots/Dashboard.png deleted file mode 100644 index bd1373d15..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/Dashboard.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/MainWindow.png b/NickvisionMoney.GNOME/Screenshots/MainWindow.png deleted file mode 100644 index bd68a1427..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/MainWindow.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/OpenAccount.png b/NickvisionMoney.GNOME/Screenshots/OpenAccount.png deleted file mode 100644 index 898538e5e..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/OpenAccount.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/OpenAccountDark.png b/NickvisionMoney.GNOME/Screenshots/OpenAccountDark.png deleted file mode 100644 index 6d510c624..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/OpenAccountDark.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Screenshots/Transaction.png b/NickvisionMoney.GNOME/Screenshots/Transaction.png deleted file mode 100644 index 11a09b3b9..000000000 Binary files a/NickvisionMoney.GNOME/Screenshots/Transaction.png and /dev/null differ diff --git a/NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs b/NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs deleted file mode 100644 index 993b21921..000000000 --- a/NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs +++ /dev/null @@ -1,499 +0,0 @@ -using Nickvision.Aura.Keyring; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// A dialog to configure account -/// -public partial class AccountSettingsDialog : Adw.Window -{ - private bool _constructing; - private readonly AccountSettingsDialogController _controller; - - [Gtk.Connect] private readonly Adw.HeaderBar _header; - [Gtk.Connect] private readonly Gtk.Button _btnBack; - [Gtk.Connect] private readonly Gtk.Label _titleLabel; - [Gtk.Connect] private readonly Adw.ViewStack _viewStack; - [Gtk.Connect] private readonly Adw.EntryRow _nameRow; - [Gtk.Connect] private readonly Adw.ComboRow _accountTypeRow; - [Gtk.Connect] private readonly Gtk.ToggleButton _incomeButton; - [Gtk.Connect] private readonly Gtk.ToggleButton _expenseButton; - [Gtk.Connect] private readonly Adw.ComboRow _transactionRemindersRow; - [Gtk.Connect] private readonly Gtk.Label _reportedCurrencyLabel; - [Gtk.Connect] private readonly Adw.ActionRow _customCurrencyRow; - [Gtk.Connect] private readonly Adw.SwitchRow _useCustomCurrencyRow; - [Gtk.Connect] private readonly Adw.EntryRow _customSymbolRow; - [Gtk.Connect] private readonly Adw.EntryRow _customCodeRow; - [Gtk.Connect] private readonly Adw.ComboRow _customAmountStyleRow; - [Gtk.Connect] private readonly Adw.ComboRow _customDecimalSeparatorRow; - [Gtk.Connect] private readonly Gtk.Entry _customDecimalSeparatorText; - [Gtk.Connect] private readonly Adw.ComboRow _customGroupSeparatorRow; - [Gtk.Connect] private readonly Gtk.Entry _customGroupSeparatorText; - [Gtk.Connect] private readonly Adw.ComboRow _customDecimalDigitsRow; - [Gtk.Connect] private readonly Adw.ActionRow _managePasswordRow; - [Gtk.Connect] private readonly Gtk.Label _lblPasswordStatus; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _newPasswordRow; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _newPasswordConfirmRow; - [Gtk.Connect] private readonly Gtk.LevelBar _passwordStrengthBar; - [Gtk.Connect] private readonly Gtk.Button _removePasswordButton; - [Gtk.Connect] private readonly Gtk.Button _applyButton; - - public event EventHandler? OnApply; - - private AccountSettingsDialog(Gtk.Builder builder, AccountSettingsDialogController controller, Gtk.Window parent) : base(builder.GetPointer("_root"), false) - { - _constructing = true; - _controller = controller; - //Dialog Settings - SetTransientFor(parent); - SetIconName(_controller.AppInfo.ID); - //Build UI - builder.Connect(this); - _viewStack.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "visible-child") - { - if (!_constructing) - { - _btnBack.SetVisible(_viewStack.GetVisibleChildName() != "main"); - } - } - }; - _btnBack.OnClicked += (sender, e) => - { - _viewStack.GetChildByName("main").SetVisible(true); - _viewStack.SetVisibleChildName("main"); - _viewStack.GetChildByName("currency").SetVisible(false); - _viewStack.GetChildByName("password").SetVisible(false); - _titleLabel.SetLabel(_("Account Settings")); - SetDefaultWidget(_applyButton); - }; - //Account Name - _nameRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - //Account Type - _accountTypeRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - if (!_constructing) - { - Validate(); - } - } - }; - //Default Transaction Type - _incomeButton.OnToggled += OnTransactionTypeChanged; - _expenseButton.OnToggled += OnTransactionTypeChanged; - _expenseButton.BindProperty("active", _incomeButton, "active", (GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate | GObject.BindingFlags.InvertBoolean)); - //Transaction Reminders - _transactionRemindersRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - if (!_constructing) - { - Validate(); - } - } - }; - //Reported Currency - _reportedCurrencyLabel.SetLabel($"{_("Your system reported that your currency is")}\n{CultureHelpers.ReportedCurrencyString}"); - //Custom Currency - _customCurrencyRow.OnActivated += (sender, e) => - { - _viewStack.GetChildByName("currency").SetVisible(true); - _viewStack.SetVisibleChildName("currency"); - _viewStack.GetChildByName("main").SetVisible(false); - _titleLabel.SetLabel(_("Currency")); - }; - _useCustomCurrencyRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "state") - { - _useCustomCurrencyRow.GrabFocus(); - } - else if (e.Pspec.GetName() == "active") - { - if (!_constructing) - { - Validate(); - } - } - }; - _customSymbolRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (_customSymbolRow.GetText().Length > 3) - { - _customSymbolRow.SetText(_customSymbolRow.GetText().Substring(0, 3)); - _customSymbolRow.SetPosition(-1); - } - if (!_constructing) - { - Validate(); - } - } - }; - _customCodeRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (_customCodeRow.GetText().Length > 3) - { - _customCodeRow.SetText(_customCodeRow.GetText().Substring(0, 3)); - _customCodeRow.SetPosition(-1); - } - if (!_constructing) - { - Validate(); - } - } - }; - _customAmountStyleRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - Validate(); - } - }; - _customDecimalSeparatorRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - if (!_constructing) - { - if (_customDecimalSeparatorRow.GetSelected() == 2) - { - _customDecimalSeparatorText.SetVisible(true); - _customDecimalSeparatorText.GrabFocus(); - } - else - { - _customDecimalSeparatorText.SetVisible(false); - } - Validate(); - } - } - }; - _customDecimalSeparatorText.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - _customGroupSeparatorRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - if (!_constructing) - { - if (_customGroupSeparatorRow.GetSelected() == 4) - { - _customGroupSeparatorText.SetVisible(true); - _customGroupSeparatorText.GrabFocus(); - } - else - { - _customGroupSeparatorText.SetVisible(false); - } - Validate(); - } - } - }; - _customGroupSeparatorText.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - _customDecimalDigitsRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - if (!_constructing) - { - Validate(); - } - } - }; - //Password - _managePasswordRow.OnActivated += (sender, e) => - { - _viewStack.GetChildByName("password").SetVisible(true); - _viewStack.SetVisibleChildName("password"); - _viewStack.GetChildByName("main").SetVisible(false); - _titleLabel.SetLabel(_("Change Password")); - }; - _newPasswordRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - ShowPasswordStrength(); - Validate(); - } - } - }; - _newPasswordConfirmRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - _passwordStrengthBar.SetMinValue(Convert.ToDouble((int)PasswordStrength.Blank)); - _passwordStrengthBar.SetMaxValue(Convert.ToDouble((int)PasswordStrength.VeryStrong)); - _passwordStrengthBar.AddOffsetValue("veryweak", 1); - _passwordStrengthBar.AddOffsetValue("weak", 2); - _passwordStrengthBar.AddOffsetValue("medium", 3); - _passwordStrengthBar.AddOffsetValue("strong", 4); - _passwordStrengthBar.AddOffsetValue("verystrong", 5); - _removePasswordButton.SetVisible(_controller.IsEncrypted); - _removePasswordButton.OnClicked += OnRemovePassword; - //Apply Button - _applyButton.OnClicked += (sender, e) => OnApply?.Invoke(this, EventArgs.Empty); - //Load - _nameRow.SetText(_controller.Metadata.Name); - _accountTypeRow.SetSelected((uint)_controller.Metadata.AccountType); - _incomeButton.SetActive(_controller.Metadata.DefaultTransactionType == TransactionType.Income); - _transactionRemindersRow.SetSelected((uint)_controller.Metadata.TransactionRemindersThreshold); - _useCustomCurrencyRow.SetActive(_controller.Metadata.UseCustomCurrency); - _customSymbolRow.SetText(_controller.Metadata.CustomCurrencySymbol ?? ""); - _customCodeRow.SetText(_controller.Metadata.CustomCurrencyCode ?? ""); - _customAmountStyleRow.SetModel(Gtk.StringList.New(_controller.CustomCurrencyAmountStyleStrings)); - _customAmountStyleRow.SetSelected(_controller.Metadata.CustomCurrencyAmountStyle.HasValue ? (uint)_controller.Metadata.CustomCurrencyAmountStyle.Value : 0u); - _customDecimalSeparatorRow.SetSelected(_controller.Metadata.CustomCurrencyDecimalSeparator switch - { - null => 0, - "." => 0, - "," => 1, - _ => 2 - }); - if (_customDecimalSeparatorRow.GetSelected() == 2) - { - _customDecimalSeparatorText.SetVisible(true); - _customDecimalSeparatorText.SetText(_controller.Metadata.CustomCurrencyDecimalSeparator); - } - _customGroupSeparatorRow.SetSelected(_controller.Metadata.CustomCurrencyGroupSeparator switch - { - null => 1, - "." => 0, - "," => 1, - "'" => 2, - "" => 3, - _ => 4 - }); - if (_customGroupSeparatorRow.GetSelected() == 4) - { - _customGroupSeparatorText.SetVisible(true); - _customGroupSeparatorText.SetText(_controller.Metadata.CustomCurrencyGroupSeparator); - } - _customDecimalDigitsRow.SetSelected(_controller.Metadata.CustomCurrencyDecimalDigits switch - { - null => 0, - 99 => 5, - _ => (uint)_controller.Metadata.CustomCurrencyDecimalDigits - 2 - }); - Validate(); - _constructing = false; - _nameRow.GrabFocus(); - } - - - /// - /// Constructs an AccountSettingsDialog - /// - /// AccountSettingsDialogController - /// Gtk.Window - public AccountSettingsDialog(AccountSettingsDialogController controller, Gtk.Window parent) : this(Builder.FromFile("account_settings_dialog.ui"), controller, parent) - { - } - - /// - /// Validates the dialog's input - /// - private void Validate() - { - var transactionType = _incomeButton.GetActive() ? TransactionType.Income : TransactionType.Expense; - var customDecimalSeparator = _customDecimalSeparatorRow.GetSelected() switch - { - 0 => ".", - 1 => ",", - 2 => _customDecimalSeparatorText.GetText() - }; - var customGroupSeparator = _customGroupSeparatorRow.GetSelected() switch - { - 0 => ".", - 1 => ",", - 2 => "'", - 3 => "", - 4 => _customGroupSeparatorText.GetText() - }; - var customDecimalDigits = _customDecimalDigitsRow.GetSelected() == 5 ? 99 : _customDecimalDigitsRow.GetSelected() + 2; - var oldSymbol = _controller.Metadata.CustomCurrencySymbol; - var checkStatus = _controller.UpdateMetadata(_nameRow.GetText().Trim(), (AccountType)_accountTypeRow.GetSelected(), _useCustomCurrencyRow.GetActive(), _customSymbolRow.GetText(), _customCodeRow.GetText(), (int?)_customAmountStyleRow.GetSelected(), customDecimalSeparator, customGroupSeparator, (int?)customDecimalDigits, transactionType, (RemindersThreshold)_transactionRemindersRow.GetSelected(), _newPasswordRow.GetText(), _newPasswordConfirmRow.GetText()); - _nameRow.RemoveCssClass("error"); - _nameRow.SetTitle(_("Name")); - _customCurrencyRow.RemoveCssClass("error"); - _customSymbolRow.RemoveCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol")); - _customCodeRow.RemoveCssClass("error"); - _customCodeRow.SetTitle(_("Currency Code")); - _customDecimalSeparatorRow.RemoveCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator")); - _customGroupSeparatorRow.RemoveCssClass("error"); - _customGroupSeparatorRow.SetTitle(_("Group Separator")); - _managePasswordRow.RemoveCssClass("error"); - _lblPasswordStatus.SetText(""); - if (checkStatus == AccountMetadataCheckStatus.Valid) - { - if (oldSymbol != _controller.Metadata.CustomCurrencySymbol) - { - _customAmountStyleRow.SetModel(Gtk.StringList.New(_controller.CustomCurrencyAmountStyleStrings)); - } - _applyButton.SetSensitive(true); - } - else - { - if (checkStatus.HasFlag(AccountMetadataCheckStatus.EmptyName)) - { - _nameRow.AddCssClass("error"); - _nameRow.SetTitle(_("Name (Empty)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.EmptyCurrencySymbol)) - { - _customSymbolRow.AddCssClass("error"); - _customCurrencyRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Empty)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.InvalidCurrencySymbol)) - { - _customSymbolRow.AddCssClass("error"); - _customCurrencyRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Invalid)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.EmptyCurrencyCode)) - { - _customCodeRow.AddCssClass("error"); - _customCurrencyRow.AddCssClass("error"); - _customCodeRow.SetTitle(_("Currency Code (Empty)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.EmptyDecimalSeparator)) - { - _customDecimalSeparatorRow.AddCssClass("error"); - _customCurrencyRow.AddCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator (Empty)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.SameSeparators)) - { - _customCurrencyRow.AddCssClass("error"); - _customDecimalSeparatorRow.AddCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator (Invalid)")); - _customGroupSeparatorRow.AddCssClass("error"); - _customGroupSeparatorRow.SetTitle(_("Group Separator (Invalid)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.SameSymbolAndDecimalSeparator)) - { - _customCurrencyRow.AddCssClass("error"); - _customSymbolRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Invalid)")); - _customDecimalSeparatorRow.AddCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator (Invalid)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.SameSymbolAndGroupSeparator)) - { - _customCurrencyRow.AddCssClass("error"); - _customSymbolRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Invalid)")); - _customGroupSeparatorRow.AddCssClass("error"); - _customGroupSeparatorRow.SetTitle(_("Group Separator (Invalid)")); - } - if (checkStatus.HasFlag(AccountMetadataCheckStatus.NonMatchingPasswords)) - { - _managePasswordRow.AddCssClass("error"); - _lblPasswordStatus.SetText(_("The passwords do not match.")); - } - _applyButton.SetSensitive(false); - } - } - - /// - /// Calculates and shows the password's strength - /// - private void ShowPasswordStrength() - { - var strength = Credential.GetPasswordStrength(_newPasswordRow.GetText()); - _passwordStrengthBar.SetValue((double)strength); - } - - /// - /// Occurs when either Income or Expense button is toggled - /// - /// Gtk.ToggleButton - /// EventArgs - private void OnTransactionTypeChanged(Gtk.ToggleButton sender, EventArgs e) - { - if (_incomeButton.GetActive()) - { - _incomeButton.AddCssClass("denaro-income"); - _expenseButton.RemoveCssClass("denaro-expense"); - } - else - { - _incomeButton.RemoveCssClass("denaro-income"); - _expenseButton.AddCssClass("denaro-expense"); - } - if (!_constructing) - { - Validate(); - } - } - - /// - /// Occurs when the remove password button is clicked - /// - /// Gtk.Button - /// EventArgs - private void OnRemovePassword(Gtk.Button sender, EventArgs e) - { - _controller.SetRemovePassword(); - _newPasswordRow.SetText(""); - _newPasswordConfirmRow.SetText(""); - _viewStack.GetChildByName("main").SetVisible(true); - _viewStack.SetVisibleChildName("main"); - _viewStack.GetChildByName("password").SetVisible(false); - _titleLabel.SetLabel(_("Account Settings")); - SetDefaultWidget(_applyButton); - _managePasswordRow.SetSensitive(false); - _managePasswordRow.SetTitle(_("The password will be removed upon closing this dialog.")); - _managePasswordRow.SetSubtitle(""); - } -} diff --git a/NickvisionMoney.GNOME/Views/AccountView.cs b/NickvisionMoney.GNOME/Views/AccountView.cs deleted file mode 100644 index e8eb6c96c..000000000 --- a/NickvisionMoney.GNOME/Views/AccountView.cs +++ /dev/null @@ -1,1381 +0,0 @@ -using Nickvision.Aura.Events; -using NickvisionMoney.GNOME.Controls; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Events; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// The AccountView for the application -/// -public partial class AccountView : Adw.BreakpointBin -{ - [StructLayout(LayoutKind.Sequential)] - public struct MoneyDateTime - { - ulong Usec; - nint Tz; - int Interval; - int Days; - int RefCount; - } - - [DllImport("libadwaita-1.so.0")] - private static extern ref MoneyDateTime gtk_calendar_get_date(nint calendar); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial void gtk_calendar_select_day(nint calendar, ref MoneyDateTime datetime); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial int g_date_time_get_year(ref MoneyDateTime datetime); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial int g_date_time_get_month(ref MoneyDateTime datetime); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial int g_date_time_get_day_of_month(ref MoneyDateTime datetime); - [DllImport("libadwaita-1.so.0")] - private static extern ref MoneyDateTime g_date_time_add_years(ref MoneyDateTime datetime, int years); - [DllImport("libadwaita-1.so.0")] - private static extern ref MoneyDateTime g_date_time_new_now_local(); - - private readonly AccountViewController _controller; - private bool _isAccountLoading; - private readonly MainWindow _parentWindow; - private readonly Adw.Breakpoint _compactBreakpoint; - private readonly Gtk.Adjustment _transactionsScrollAdjustment; - private readonly Gtk.ShortcutController _shortcutController; - private readonly Action _updateSubtitle; - private Dictionary _groupRows; - private Dictionary _tagButtons; - private Dictionary _transactionRows; - private uint _currentGraphPage; - - [Gtk.Connect] private readonly Adw.OverlaySplitView _splitView; - [Gtk.Connect] private readonly Gtk.ScrolledWindow _paneScroll; - [Gtk.Connect] private readonly Gtk.SearchEntry _searchDescriptionEntry; - [Gtk.Connect] private readonly Gtk.Label _totalLabel; - [Gtk.Connect] private readonly Gtk.Label _incomeLabel; - [Gtk.Connect] private readonly Gtk.CheckButton _incomeCheck; - [Gtk.Connect] private readonly Gtk.Label _expenseLabel; - [Gtk.Connect] private readonly Gtk.CheckButton _expenseCheck; - [Gtk.Connect] private readonly Gtk.Button _remindersButton; - [Gtk.Connect] private readonly Gtk.Button _resetOverviewFilterButton; - [Gtk.Connect] private readonly Gtk.Button _toggleGroupsButton; - [Gtk.Connect] private readonly Gtk.Button _resetGroupsFilterButton; - [Gtk.Connect] private readonly Gtk.Button _unselectAllGroupsFilterButton; - [Gtk.Connect] private readonly Gtk.ListBox _groupsList; - [Gtk.Connect] private readonly Gtk.Button _toggleTagsButton; - [Gtk.Connect] private readonly Gtk.Button _resetTagsFilterButton; - [Gtk.Connect] private readonly Gtk.Button _unselectAllTagsFilterButton; - [Gtk.Connect] private readonly Adw.Bin _tagsBin; - [Gtk.Connect] private readonly Gtk.FlowBox _tagsFlowBox; - [Gtk.Connect] private readonly Gtk.Calendar _calendar; - [Gtk.Connect] private readonly Gtk.Button _selectMonthButton; - [Gtk.Connect] private readonly Gtk.Button _resetCalendarFilterButton; - [Gtk.Connect] private readonly Gtk.DropDown _startYearDropDown; - [Gtk.Connect] private readonly Gtk.DropDown _startMonthDropDown; - [Gtk.Connect] private readonly Gtk.DropDown _startDayDropDown; - [Gtk.Connect] private readonly Gtk.DropDown _endYearDropDown; - [Gtk.Connect] private readonly Gtk.DropDown _endMonthDropDown; - [Gtk.Connect] private readonly Gtk.DropDown _endDayDropDown; - [Gtk.Connect] private readonly Adw.ExpanderRow _rangeExpander; - [Gtk.Connect] private readonly Adw.ViewStack _viewStack; - [Gtk.Connect] private readonly Adw.StatusPage _noTransactionsStatusPage; - [Gtk.Connect] private readonly Adw.PreferencesGroup _visualizeGroup; - [Gtk.Connect] private readonly Gtk.Button _graphBackButton; - [Gtk.Connect] private readonly Gtk.Button _graphNextButton; - [Gtk.Connect] private readonly Adw.Carousel _carousel; - [Gtk.Connect] private readonly Gtk.DrawingArea _incomeExpenseOverTimeImage; - [Gtk.Connect] private readonly Gtk.DrawingArea _incomeExpensePieImage; - [Gtk.Connect] private readonly Gtk.DrawingArea _incomeExpensePerGroupImage; - [Gtk.Connect] private readonly Gtk.DrawingArea _incomeExpensePerGroupPieImage; - [Gtk.Connect] private readonly Gtk.Separator _visualizeSeparator; - [Gtk.Connect] private readonly Gtk.DropDown _sortTransactionByDropDown; - [Gtk.Connect] private readonly Gtk.ToggleButton _sortFirstToLastButton; - [Gtk.Connect] private readonly Gtk.ToggleButton _sortLastToFirstButton; - [Gtk.Connect] private readonly Adw.PreferencesGroup _transactionsGroup; - [Gtk.Connect] private readonly Gtk.Box _transactionsHeaderBox; - [Gtk.Connect] private readonly Gtk.ScrolledWindow _transactionsScroll; - [Gtk.Connect] private readonly Gtk.FlowBox _transactionsFlowBox; - - /// - /// The Page widget - /// - public Adw.TabPage Page { get; init; } - - public AccountView(Gtk.Builder builder, AccountViewController controller, MainWindow parentWindow, Adw.TabView parentTabView, Gtk.ToggleButton btnFlapToggle, Gtk.ToggleButton btnGraphToggle, Action updateSubtitle) : base(builder.GetPointer("_root"), false) - { - _controller = controller; - _parentWindow = parentWindow; - _isAccountLoading = false; - _updateSubtitle = updateSubtitle; - _groupRows = new Dictionary(); - _tagButtons = new Dictionary(); - _transactionRows = new Dictionary(); - _currentGraphPage = 0; - //Register Controller Events - _controller.AccountInformationChanged += (sender, e) => GLib.Functions.IdleAdd(0, AccountInformationChanged); - _controller.GroupCreated += (sender, e) => GLib.Functions.IdleAdd(0, () => CreateGroupRow(e)); - _controller.GroupDeleted += (sender, e) => GLib.Functions.IdleAdd(0, () => DeleteGroupRow(e)); - _controller.GroupUpdated += (sender, e) => GLib.Functions.IdleAdd(0, () => UpdateGroupRow(e)); - _controller.TagCreated += (sender, e) => GLib.Functions.IdleAdd(0, () => CreateTagButton(e)); - _controller.TagUpdated += (sender, e) => GLib.Functions.IdleAdd(0, () => UpdateTagButton(e)); - _controller.TransactionCreated += (sender, e) => GLib.Functions.IdleAdd(0, () => CreateTransactionRow(e)); - _controller.TransactionMoved += (sender, e) => GLib.Functions.IdleAdd(0, () => MoveTransactionRow(e)); - _controller.TransactionDeleted += (sender, e) => GLib.Functions.IdleAdd(0, () => DeleteTransactionRow(e)); - _controller.TransactionUpdated += (sender, e) => GLib.Functions.IdleAdd(0, () => UpdateTransactionRow(e)); - Adw.StyleManager.GetDefault().OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "dark") - { - _incomeExpenseOverTimeImage.QueueDraw(); - _incomeExpensePieImage.QueueDraw(); - _incomeExpensePerGroupImage.QueueDraw(); - _incomeExpensePerGroupPieImage.QueueDraw(); - } - }; - //Build UI - builder.Connect(this); - btnFlapToggle.BindProperty("active", _splitView, "show-sidebar", GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate); - btnGraphToggle.BindProperty("active", _visualizeGroup, "visible", GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate); - btnGraphToggle.BindProperty("active", _visualizeSeparator, "visible", GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate); - //Compact Breakpoint - _compactBreakpoint = Adw.Breakpoint.New(Adw.BreakpointCondition.Parse("max-width: 450sp")); - _compactBreakpoint.AddSetter(_splitView, "collapsed", GObject.Value.From(true)); - _compactBreakpoint.OnApply += (sender, e) => - { - _transactionsGroup.SetTitle(""); - foreach (var pair in _transactionRows) - { - pair.Value.IsSmall = true; - } - }; - _compactBreakpoint.OnUnapply += (sender, e) => - { - _transactionsGroup.SetTitle(_n("{0} transaction", "{0} transactions", _controller.FilteredTransactionsCount, _controller.FilteredTransactionsCount)); - foreach (var pair in _transactionRows) - { - pair.Value.IsSmall = false; - } - }; - AddBreakpoint(_compactBreakpoint); - //Search Description Text - _searchDescriptionEntry.OnSearchChanged += (sender, e) => _controller.SearchDescription = _searchDescriptionEntry.GetText(); - //Account Income - _incomeCheck.OnToggled += (sender, e) => _controller.UpdateGroupFilterValue(-3, _incomeCheck.GetActive()); - //Account Expense - _expenseCheck.OnToggled += (sender, e) => _controller.UpdateGroupFilterValue(-2, _expenseCheck.GetActive()); - //Reminders - _remindersButton.OnClicked += OnTransactionReminders; - //Button Reset Overview Filter - _resetOverviewFilterButton.OnClicked += OnResetOverviewFilter; - //Button Toggle Groups - _toggleGroupsButton.OnClicked += (sender, e) => - { - _controller.ShowGroupsList = !_controller.ShowGroupsList; - OnToggleGroups(); - }; - //Button Reset Groups Filter - _resetGroupsFilterButton.OnClicked += (Gtk.Button sender, EventArgs e) => _controller.ResetGroupFilters(); - //Button Reset Groups Filter - _unselectAllGroupsFilterButton.OnClicked += (Gtk.Button sender, EventArgs e) => _controller.UnselectAllGroupFilters(); - //Tags FlowBox - _tagsFlowBox.SetSortFunc((box1, box2) => - { - var tag1 = (TagButton)box1.GetChild(); - var tag2 = (TagButton)box2.GetChild(); - if (tag1.Tag == _("Untagged")) - { - return -1; - } - return string.Compare(tag1.Tag, tag2.Tag); - }); - //Button Toggle Tags - _toggleTagsButton.OnClicked += (sender, e) => - { - _controller.ShowTagsList = !_controller.ShowTagsList; - OnToggleTags(); - }; - //Button Reset Tags Filter - _resetTagsFilterButton.OnClicked += (Gtk.Button sender, EventArgs e) => _controller.ResetTagFilters(); - //Button Reset Tags Filter - _unselectAllTagsFilterButton.OnClicked += (Gtk.Button sender, EventArgs e) => _controller.UnselectAllTagFilters(); - //Calendar Widget - _calendar.OnPrevMonth += OnCalendarMonthYearChanged; - _calendar.OnPrevYear += OnCalendarMonthYearChanged; - _calendar.OnNextMonth += OnCalendarMonthYearChanged; - _calendar.OnNextYear += OnCalendarMonthYearChanged; - _calendar.OnDaySelected += OnCalendarSelectedDateChanged; - //Button select current month as filter - _selectMonthButton.OnClicked += OnSelectCurrentMonth; - //Button Reset Calendar Filter - _resetCalendarFilterButton.OnClicked += OnResetCalendarFilter; - //Start Range DropDowns - _startYearDropDown.SetModel(Gtk.StringList.New(new string[1] { "" })); - _startYearDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - OnDateRangeStartYearChanged(); - } - }; - var dtFormatInfo = CultureInfo.CurrentCulture.DateTimeFormat; - _startMonthDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 12).Select(x => dtFormatInfo.GetMonthName(x)).ToArray())); - _startMonthDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - OnDateRangeStartMonthChanged(); - } - }; - _startDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 31).Select(x => x.ToString()).ToArray())); - _startDayDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - OnDateRangeStartDayChanged(); - } - }; - //End Range DropDowns - _endYearDropDown.SetModel(Gtk.StringList.New(new string[1] { "" })); - _endYearDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - OnDateRangeEndYearChanged(); - } - }; - _endMonthDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 12).Select(x => dtFormatInfo.GetMonthName(x)).ToArray())); - _endMonthDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - OnDateRangeEndMonthChanged(); - } - }; - _endDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 31).Select(x => x.ToString()).ToArray())); - _endDayDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - OnDateRangeEndDayChanged(); - } - }; - //Expander Row Select Range - _rangeExpander.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "enable-expansion") - { - OnDateRangeToggled(); - } - }; - //Sort Box And Buttons - _sortTransactionByDropDown.SetModel(Gtk.StringList.New(new string[3] { _("Sort By Id"), _("Sort By Date"), _("Sort By Amount") })); - _sortTransactionByDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - _controller.SortTransactionsBy = (SortBy)_sortTransactionByDropDown.GetSelected(); - } - }; - _sortFirstToLastButton.OnToggled += (Gtk.ToggleButton sender, EventArgs e) => _controller.SortFirstToLast = _sortFirstToLastButton.GetActive(); - //Graphs images - _incomeExpenseOverTimeImage.SetDrawFunc((area, ctx, width, height) => - { - if (_currentGraphPage == 0) - { - DrawGraph(ctx, GraphType.IncomeExpenseOverTime, width, height); - } - }); - _incomeExpensePieImage.SetDrawFunc((area, ctx, width, height) => - { - if (_currentGraphPage == 1) - { - DrawGraph(ctx, GraphType.IncomeExpensePie, width, height); - } - }); - _incomeExpensePerGroupImage.SetDrawFunc((area, ctx, width, height) => - { - if (_currentGraphPage == 2) - { - DrawGraph(ctx, GraphType.IncomeExpensePerGroup, width, height); - } - }); - _incomeExpensePerGroupPieImage.SetDrawFunc((area, ctx, width, height) => - { - if (_currentGraphPage == 3) - { - DrawDoubleGraphs(ctx, GraphType.IncomeByGroup, GraphType.ExpenseByGroup, width, height); - } - }); - //Graph Carousel Buttons - _graphBackButton.OnClicked += (sender, e) => - { - if (_currentGraphPage > 0) - { - _currentGraphPage--; - _carousel.ScrollTo(_carousel.GetNthPage(_currentGraphPage), true); - } - }; - _graphNextButton.OnClicked += (sender, e) => - { - if (_currentGraphPage < _carousel.GetNPages() - 1) - { - _currentGraphPage++; - _carousel.ScrollTo(_carousel.GetNthPage(_currentGraphPage), true); - } - }; - _carousel.OnPageChanged += (sender, e) => - { - _currentGraphPage = e.Index; - _incomeExpenseOverTimeImage.QueueDraw(); - _incomeExpensePieImage.QueueDraw(); - _incomeExpensePerGroupImage.QueueDraw(); - _incomeExpensePerGroupPieImage.QueueDraw(); - }; - //Transactions Scrolled Window - _transactionsScrollAdjustment = _transactionsScroll.GetVadjustment(); - _transactionsScrollAdjustment.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "value") - { - if (_transactionsScrollAdjustment.GetValue() == 0.0) - { - _transactionsScroll.RemoveCssClass("transactions-scroll"); - } - else - { - _transactionsScroll.AddCssClass("transactions-scroll"); - } - } - }; - //Tab Page - Page = parentTabView.Append(this); - Page.SetTitle(_controller.AccountTitle); - //Action Map - var actionMap = Gio.SimpleActionGroup.New(); - _splitView.InsertActionGroup("account", actionMap); - //New Transaction Action - var actNewTransaction = Gio.SimpleAction.New("newTransaction", null); - actNewTransaction.OnActivate += NewTransaction; - actionMap.AddAction(actNewTransaction); - //New Group Action - var actNewGroup = Gio.SimpleAction.New("newGroup", null); - actNewGroup.OnActivate += NewGroup; - actionMap.AddAction(actNewGroup); - //Transfer Action - var actTransfer = Gio.SimpleAction.New("transferMoney", null); - actTransfer.OnActivate += TransferMoney; - actionMap.AddAction(actTransfer); - //Export To CSV All Action - var actExportCSVAll = Gio.SimpleAction.New("exportToCSVAll", null); - actExportCSVAll.OnActivate += async (sender, e) => await ExportToCSVAsync(ExportMode.All); - actionMap.AddAction(actExportCSVAll); - //Export To CSV Current Action - var actExportCSVCurrent = Gio.SimpleAction.New("exportToCSVCurrent", null); - actExportCSVCurrent.OnActivate += async (sender, e) => await ExportToCSVAsync(ExportMode.CurrentView); - actionMap.AddAction(actExportCSVCurrent); - //Export To PDF All Action - var actExportPDFAll = Gio.SimpleAction.New("exportToPDFAll", null); - actExportPDFAll.OnActivate += async (sender, e) => await ExportToPDFAsync(ExportMode.All); - actionMap.AddAction(actExportPDFAll); - //Export To PDF Current Action - var actExportPDFCurrent = Gio.SimpleAction.New("exportToPDFCurrent", null); - actExportPDFCurrent.OnActivate += async (sender, e) => await ExportToPDFAsync(ExportMode.CurrentView); - actionMap.AddAction(actExportPDFCurrent); - //Import Action - var actImport = Gio.SimpleAction.New("importFromFile", null); - actImport.OnActivate += ImportFromFile; - actionMap.AddAction(actImport); - //Account Settings Action - var actAccountSettings = Gio.SimpleAction.New("accountSettings", null); - actAccountSettings.OnActivate += AccountSettings; - actionMap.AddAction(actAccountSettings); - //Toggle Sidebar Action - var actToggleSidebar = Gio.SimpleAction.New("toggleSidebar", null); - actToggleSidebar.OnActivate += (sender, e) => _splitView.SetCollapsed(!_splitView.GetCollapsed()); - actionMap.AddAction(actToggleSidebar); - //Shortcut Controller - _shortcutController = Gtk.ShortcutController.New(); - _shortcutController.SetScope(Gtk.ShortcutScope.Managed); - _shortcutController.AddShortcut(Gtk.Shortcut.New(Gtk.ShortcutTrigger.ParseString("T"), Gtk.NamedAction.New("account.transferMoney"))); - _shortcutController.AddShortcut(Gtk.Shortcut.New(Gtk.ShortcutTrigger.ParseString("I"), Gtk.NamedAction.New("account.importFromFile"))); - _shortcutController.AddShortcut(Gtk.Shortcut.New(Gtk.ShortcutTrigger.ParseString("G"), Gtk.NamedAction.New("account.newGroup"))); - _shortcutController.AddShortcut(Gtk.Shortcut.New(Gtk.ShortcutTrigger.ParseString("N"), Gtk.NamedAction.New("account.newTransaction"))); - _shortcutController.AddShortcut(Gtk.Shortcut.New(Gtk.ShortcutTrigger.ParseString("F9"), Gtk.NamedAction.New("account.toggleSidebar"))); - _splitView.AddController(_shortcutController); - } - - /// - /// Constructs an AccountView - /// - /// AccountViewController - /// MainWindow - /// Adw.TabView - /// Gtk.ToggleButton - /// Gtk.ToggleButton - /// An Action callback to update the MainWindow's subtitle - public AccountView(AccountViewController controller, MainWindow parentWindow, Adw.TabView parentTabView, Gtk.ToggleButton btnFlapToggle, Gtk.ToggleButton btnGraphToggle, Action updateSubtitle) : this(Builder.FromFile("account_view.ui"), controller, parentWindow, parentTabView, btnFlapToggle, btnGraphToggle, updateSubtitle) - { - } - - /// - /// Starts the account view - /// - public async Task StartupAsync() - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.StartupAsync()); - //Setup Other UI Elements - _sortTransactionByDropDown.SetSelected((uint)_controller.SortTransactionsBy); - if (_controller.SortFirstToLast) - { - _sortFirstToLastButton.SetActive(true); - } - else - { - _sortLastToFirstButton.SetActive(true); - } - OnToggleGroups(); - OnToggleTags(); - if (_controller.TransactionReminders.Count > 0) - { - var remindersDialog = new RemindersDialog(_parentWindow, _controller.AppInfo.ID, _("Upcoming transactions"), _controller.TransactionReminders); - remindersDialog.Present(); - } - } - - /// - /// Occurs when the account's information is changed - /// - private bool AccountInformationChanged() - { - if (!_isAccountLoading) - { - _isAccountLoading = true; - //Overview - Page.SetTitle(_controller.AccountTitle); - _updateSubtitle(_controller.AccountTitle); - _totalLabel.SetLabel(_controller.AccountFilteredTotalString); - _incomeLabel.SetLabel(_controller.AccountFilteredIncomeString); - _expenseLabel.SetLabel(_controller.AccountFilteredExpenseString); - //Transactions - _paneScroll.SetSensitive(true); - if (_controller.Transactions.Count > 0) - { - OnCalendarMonthYearChanged(null, EventArgs.Empty); - _transactionsGroup.SetTitle(_n("{0} transaction", "{0} transactions", _controller.FilteredTransactionsCount, _controller.FilteredTransactionsCount)); - if (_controller.FilteredTransactionsCount > 0) - { - _viewStack.SetVisibleChildName("transactions"); - _incomeExpenseOverTimeImage.QueueDraw(); - _incomeExpensePieImage.QueueDraw(); - _incomeExpensePerGroupImage.QueueDraw(); - _incomeExpensePerGroupPieImage.QueueDraw(); - _remindersButton.SetIconName(_controller.TransactionReminders.Count > 0 ? "bell-symbolic" : "bell-outline-symbolic"); - } - else - { - _viewStack.SetVisibleChildName("no-transactions"); - _noTransactionsStatusPage.SetTitle(_("No Transactions Found")); - _noTransactionsStatusPage.SetDescription(_("No transactions match the specified filters.")); - } - _selectMonthButton.SetSensitive(true); - _rangeExpander.SetSensitive(true); - } - else - { - _calendar.ClearMarks(); - _viewStack.SetVisibleChildName("no-transactions"); - _noTransactionsStatusPage.SetTitle(_("No Transactions")); - _noTransactionsStatusPage.SetDescription(_("Add a new transaction or import transactions from a file.")); - _selectMonthButton.SetSensitive(false); - _rangeExpander.SetSensitive(false); - } - _isAccountLoading = false; - } - return false; - } - - /// - /// Drawing function for graph images - /// - /// Cairo.Context - /// GraphType - /// The width of the graph - /// The height of the graph - private void DrawGraph(Cairo.Context ctx, GraphType type, int width, int height) - { - var graph = _controller.GenerateGraph(type, Adw.StyleManager.GetDefault().GetDark(), width, height); - using var loader = GdkPixbuf.PixbufLoader.New(); - loader.Write(graph); - loader.Close(); - var pixbuf = loader.GetPixbuf()!; - Gdk.Functions.CairoSetSourcePixbuf(ctx, pixbuf, 0, 0); - ctx.Paint(); - } - - /// - /// Drawing function for double graph images - /// - /// Cairo.Context - /// First GraphType - /// Second GraphType - /// The width of the graph - /// The height of the graph - private void DrawDoubleGraphs(Cairo.Context ctx, GraphType type1, GraphType type2, int width, int height) - { - var graph1 = _controller.GenerateGraph(type1, Adw.StyleManager.GetDefault().GetDark(), width / 2, height); - using var loader1 = GdkPixbuf.PixbufLoader.New(); - loader1.Write(graph1); - loader1.Close(); - var pixbuf1 = loader1.GetPixbuf()!; - Gdk.Functions.CairoSetSourcePixbuf(ctx, pixbuf1, 0, 0); - ctx.Paint(); - var graph2 = _controller.GenerateGraph(type2, Adw.StyleManager.GetDefault().GetDark(), width / 2, height); - using var loader2 = GdkPixbuf.PixbufLoader.New(); - loader2.Write(graph2); - loader2.Close(); - var pixbuf2 = loader2.GetPixbuf()!; - Gdk.Functions.CairoSetSourcePixbuf(ctx, pixbuf2, width / 2, 0); - ctx.Paint(); - } - - /// - /// Creates a group row and adds it to the view - /// - /// ModelEventArgs - private bool CreateGroupRow(ModelEventArgs e) - { - if (!_groupRows.ContainsKey(e.Model.Id)) - { - var row = new GroupRow(e.Model, _controller.CultureForNumberString, _controller.UseNativeDigits, e.Active, _controller.GroupDefaultColor); - row.EditTriggered += EditGroup; - row.FilterChanged += UpdateGroupFilter; - if (e.Position != null) - { - _groupsList.Insert(row, e.Position.Value); - } - else - { - _groupsList.Append(row); - } - _groupRows.Add(e.Model.Id, row); - } - return false; - } - - /// - /// Removes a group row from the view - /// - /// The id of the group - private bool DeleteGroupRow(uint id) - { - if (_groupRows.ContainsKey(id)) - { - _groupsList.Remove(_groupRows[id]); - _groupRows.Remove(id); - } - return false; - } - - /// - /// Updates a group row - /// - /// ModelEventArgs - private bool UpdateGroupRow(ModelEventArgs e) - { - if (_groupRows.ContainsKey(e.Model.Id)) - { - _groupRows[e.Model.Id].UpdateRow(e.Model, _controller.GroupDefaultColor, _controller.CultureForNumberString, e.Active); - } - else - { - CreateGroupRow(e); - } - return false; - } - - /// - /// Creates a tag and adds it to the view - /// - /// ModelEventArgs - private bool CreateTagButton(ModelEventArgs e) - { - if (!_tagButtons.ContainsKey(e.Model)) - { - var tagButton = new TagButton(e.Model); - tagButton.SetActive(true); - tagButton.FilterChanged += UpdateTagFilter; - _tagsFlowBox.Append(tagButton); - _tagsFlowBox.InvalidateSort(); - _tagButtons.Add(e.Model, tagButton); - } - return false; - } - - /// - /// Updates a tag button - /// - /// ModelEventArgs - private bool UpdateTagButton(ModelEventArgs e) - { - if (_tagButtons.ContainsKey(e.Model)) - { - _tagButtons[e.Model].SetActive(e.Active); - } - return false; - } - - /// - /// Creates a transaction row and adds it to the view - /// - /// ModelEventArgs - private bool CreateTransactionRow(ModelEventArgs e) - { - if (!_transactionRows.ContainsKey(e.Model.Id)) - { - var row = new TransactionRow(e.Model, _controller.Groups, _controller.CultureForNumberString, _controller.UseNativeDigits, _controller.TransactionDefaultColor); - row.EditTriggered += EditTransaction; - row.IsSmall = GetCurrentBreakpoint() == _compactBreakpoint; - row.SetVisible(e.Active); - if (e.Position != null) - { - _transactionsFlowBox.Insert(row, e.Position.Value); - } - else - { - - _transactionsFlowBox.Append(row); - } - _transactionRows.Add(e.Model.Id, row); - } - return false; - } - - /// - /// Moves a transaction row in the list - /// - /// ModelEventArgs - private bool MoveTransactionRow(ModelEventArgs e) - { - if (_transactionRows.ContainsKey(e.Model.Id)) - { - _transactionsFlowBox.Remove(_transactionRows[e.Model.Id]); - _transactionsFlowBox.Insert(_transactionRows[e.Model.Id], e.Position ?? -1); - } - return false; - } - - /// - /// Removes a transaction row from the view - /// - /// uint - private bool DeleteTransactionRow(uint id) - { - if (_transactionRows.ContainsKey(id)) - { - _transactionsFlowBox.Remove(_transactionRows[id]); - _transactionRows.Remove(id); - } - return false; - } - - /// - /// Updates a transaction row - /// - /// ModelEventArgs - private bool UpdateTransactionRow(ModelEventArgs e) - { - if (_transactionRows.ContainsKey(e.Model.Id)) - { - _transactionRows[e.Model.Id].UpdateRow(e.Model, _controller.TransactionDefaultColor, _controller.CultureForNumberString); - _transactionRows[e.Model.Id].SetVisible(e.Active); - } - else - { - CreateTransactionRow(e); - } - return false; - } - - /// - /// Occurs when the transfer money item is activated - /// - /// Gio.SimpleAction - /// EventArgs - private void TransferMoney(Gio.SimpleAction sender, EventArgs e) - { - if (_controller.AccountTodayTotal > 0) - { - var transferController = _controller.CreateTransferDialogController(); - var transferDialog = new TransferDialog(transferController, _parentWindow); - transferDialog.Present(); - transferDialog.OnApply += async (s, ex) => - { - await _controller.SendTransferAsync(transferController.Transfer); - transferDialog.Destroy(); - }; - } - else - { - _controller.SendNotification(_("This account has no money available to transfer."), NotificationSeverity.Error); - } - } - - /// - /// Occurs when the import from file item is activated - /// - /// Gio.SimpleAction - /// EventArgs - private async void ImportFromFile(Gio.SimpleAction sender, EventArgs e) - { - var openFileDialog = Gtk.FileDialog.New(); - openFileDialog.SetTitle(_("Import from File")); - var filterAll = Gtk.FileFilter.New(); - filterAll.SetName($"{_("All files")} (*.csv, *.ofx, *.qif)"); - filterAll.AddPattern("*.csv"); - filterAll.AddPattern("*.CSV"); - filterAll.AddPattern("*.ofx"); - filterAll.AddPattern("*.OFX"); - filterAll.AddPattern("*.qif"); - filterAll.AddPattern("*.QIF"); - var filterCsv = Gtk.FileFilter.New(); - filterCsv.SetName("CSV (*.csv)"); - filterCsv.AddPattern("*.csv"); - filterCsv.AddPattern("*.CSV"); - var filterOfx = Gtk.FileFilter.New(); - filterOfx.SetName("Open Financial Exchange (*.ofx)"); - filterOfx.AddPattern("*.ofx"); - filterOfx.AddPattern("*.OFX"); - var filterQif = Gtk.FileFilter.New(); - filterQif.SetName("Quicken Format (*.qif)"); - filterQif.AddPattern("*.qif"); - filterQif.AddPattern("*.QIF"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filterAll); - filters.Append(filterCsv); - filters.Append(filterOfx); - filters.Append(filterQif); - openFileDialog.SetFilters(filters); - try - { - var file = await openFileDialog.OpenAsync(_parentWindow); - var oldPage = _viewStack.GetVisibleChildName(); - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.ImportFromFileAsync(file!.GetPath() ?? "")); - _viewStack.SetVisibleChildName(_viewStack.GetVisibleChildName() == "spinner" ? oldPage : _viewStack.GetVisibleChildName()); - _paneScroll.SetSensitive(true); - } - catch (Exception ex) - { - Console.Error.WriteLine(ex); - } - } - - /// - /// Occurs when the export to csv item is activated - /// - /// The information to export - private async Task ExportToCSVAsync(ExportMode exportMode) - { - var saveFileDialog = Gtk.FileDialog.New(); - saveFileDialog.SetTitle(_("Export to File")); - var filterCsv = Gtk.FileFilter.New(); - filterCsv.SetName("CSV (*.csv)"); - filterCsv.AddPattern("*.csv"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filterCsv); - saveFileDialog.SetFilters(filters); - try - { - var file = await saveFileDialog.SaveAsync(_parentWindow); - var path = file!.GetPath(); - if (Path.GetExtension(path).ToLower() != ".csv") - { - path += ".csv"; - } - _controller.ExportToCSV(path ?? "", exportMode); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - } - } - - /// - /// Occurs when the export to pdf item is activated - /// - /// The information to export - private async Task ExportToPDFAsync(ExportMode exportMode) - { - var saveFileDialog = Gtk.FileDialog.New(); - saveFileDialog.SetTitle(_("Export to File")); - var filterPdf = Gtk.FileFilter.New(); - filterPdf.SetName("PDF (*.pdf)"); - filterPdf.AddPattern("*.pdf"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filterPdf); - saveFileDialog.SetFilters(filters); - try - { - var file = await saveFileDialog.SaveAsync(_parentWindow); - var path = file!.GetPath(); - if (Path.GetExtension(path).ToLower() != ".pdf") - { - path += ".pdf"; - } - var dialog = Adw.MessageDialog.New(_parentWindow, _("Add Password To PDF?"), _("Would you like to password-protect the PDF file?\n\nIf the password is lost, the PDF will be inaccessible.")); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.AddResponse("no", _("No")); - dialog.SetDefaultResponse("no"); - dialog.SetCloseResponse("no"); - dialog.AddResponse("yes", _("Yes")); - dialog.SetResponseAppearance("yes", Adw.ResponseAppearance.Suggested); - dialog.OnResponse += async (sender, e) => - { - if (e.Response == "yes") - { - var tcs = new TaskCompletionSource(); - var newPasswordDialog = new NewPasswordDialog(_parentWindow, _("PDF Password"), tcs); - newPasswordDialog.Present(); - var password = await tcs.Task; - _controller.ExportToPDF(path ?? "", exportMode, password); - } - else - { - _controller.ExportToPDF(path ?? "", exportMode, null); - } - dialog.Destroy(); - }; - dialog.Present(); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - } - } - - /// - /// Occurs when the account settings item is activated - /// - /// Gio.SimpleAction - /// EventArgs - private void AccountSettings(Gio.SimpleAction sender, EventArgs e) - { - var accountSettingsController = _controller.CreateAccountSettingsDialogController(); - var accountSettingsDialog = new AccountSettingsDialog(accountSettingsController, _parentWindow); - accountSettingsDialog.Present(); - accountSettingsDialog.OnApply += (s, ex) => - { - _controller.UpdateMetadata(accountSettingsController.Metadata); - if (accountSettingsController.NewPassword != null) - { - _controller.SetPassword(accountSettingsController.NewPassword); - } - accountSettingsDialog.Destroy(); - }; - } - - /// - /// Occurs when the new transaction item is activated - /// - /// Gio.SimpleAction - /// EventArgs - private void NewTransaction(Gio.SimpleAction sender, EventArgs e) - { - var transactionController = _controller.CreateTransactionDialogController(); - var transactionDialog = new TransactionDialog(transactionController, _parentWindow); - transactionDialog.Present(); - transactionDialog.OnApply += async (s, ex) => - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.AddTransactionAsync(transactionController.Transaction)); - transactionDialog.Destroy(); - }; - transactionDialog.OnDestroy += (s, ex) => transactionController.Dispose(); - } - - /// - /// Occurs when creation of transaction copy was requested - /// - /// Source transaction for copy - private void CopyTransaction(Transaction source) - { - var transactionController = _controller.CreateTransactionDialogController(source); - var transactionDialog = new TransactionDialog(transactionController, _parentWindow); - transactionDialog.OnApply += async (sender, e) => - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.AddTransactionAsync(transactionController.Transaction)); - transactionDialog.Destroy(); - }; - transactionDialog.OnDestroy += (sender, e) => transactionController.Dispose(); - transactionDialog.Present(); - } - - /// - /// Occurs when the edit transaction item is activated - /// - /// object? - /// uint - private void EditTransaction(object? sender, uint id) - { - var transactionController = _controller.CreateTransactionDialogController(id); - var transactionDialog = new TransactionDialog(transactionController, _parentWindow); - transactionDialog.OnApply += async (s, ex) => - { - if (transactionController.CopyRequested) - { - CopyTransaction(transactionController.Transaction); - return; - } - if (_controller.GetIsSourceRepeatTransaction(id) && transactionController.OriginalRepeatInterval != TransactionRepeatInterval.Never) - { - if (transactionController.OriginalRepeatInterval != transactionController.Transaction.RepeatInterval) - { - var dialog = Adw.MessageDialog.New(_parentWindow, _("Repeat Interval Changed"), _("The repeat interval was changed.\nWhat would you like to do with existing generated transactions?\n\nNew repeat transactions will be generated based off the new interval.")); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.AddResponse("cancel", _("Cancel")); - dialog.SetDefaultResponse("cancel"); - dialog.SetCloseResponse("cancel"); - dialog.AddResponse("disassociate", _("Disassociate Existing")); - dialog.AddResponse("delete", _("Delete Existing")); - dialog.OnResponse += async (ss, exx) => - { - if (exx.Response == "delete") - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => - { - await _controller.DeleteGeneratedTransactionsAsync(id); - await _controller.UpdateTransactionAsync(transactionController.Transaction); - }); - } - else if (exx.Response == "disassociate") - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.UpdateSourceTransactionAsync(transactionController.Transaction, false)); - } - dialog.Destroy(); - transactionDialog.Destroy(); - }; - dialog.Present(); - } - else - { - var dialog = Adw.MessageDialog.New(_parentWindow, _("Update Transaction"), _("This transaction is a source repeat transaction.\nWhat would you like to do with the repeat transactions?\n\nUpdating only the source transaction will disassociate\ngenerated transactions from the source.")); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.AddResponse("cancel", _("Cancel")); - dialog.SetDefaultResponse("cancel"); - dialog.SetCloseResponse("cancel"); - dialog.AddResponse("source", _("Update Only Source")); - dialog.AddResponse("gen", _("Update Source and Generated")); - dialog.OnResponse += async (ss, exx) => - { - if (exx.Response != "cancel") - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.UpdateSourceTransactionAsync(transactionController.Transaction, exx.Response == "gen")); - } - dialog.Destroy(); - transactionDialog.Destroy(); - }; - dialog.Present(); - } - } - else - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.UpdateTransactionAsync(transactionController.Transaction)); - transactionDialog.Destroy(); - } - }; - transactionDialog.OnDelete += (s, ex) => - { - if (_controller.GetIsSourceRepeatTransaction(id)) - { - var dialog = Adw.MessageDialog.New(_parentWindow, _("Delete Transaction"), _("This transaction is a source repeat transaction.\nWhat would you like to do with the repeat transactions?\n\nDeleting only the source transaction will allow individual\ngenerated transactions to be modifiable.")); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.AddResponse("cancel", _("Cancel")); - dialog.SetDefaultResponse("cancel"); - dialog.SetCloseResponse("cancel"); - dialog.AddResponse("source", _("Delete Only Source")); - dialog.AddResponse("gen", _("Delete Source and Generated")); - dialog.OnResponse += async (ss, exx) => - { - if (exx.Response != "cancel") - { - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.DeleteSourceTransactionAsync(id, exx.Response == "gen")); - transactionDialog.Destroy(); - } - else - { - transactionDialog.Present(); - } - dialog.Destroy(); - }; - dialog.Present(); - } - else - { - var dialog = Adw.MessageDialog.New(_parentWindow, _("Delete Transaction"), _("Are you sure you want to delete this transaction?\nThis action is irreversible.")); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.AddResponse("no", _("No")); - dialog.SetDefaultResponse("no"); - dialog.SetCloseResponse("no"); - dialog.AddResponse("yes", _("Yes")); - dialog.SetResponseAppearance("yes", Adw.ResponseAppearance.Suggested); - dialog.OnResponse += async (ss, exx) => - { - if (exx.Response == "yes") - { - await _controller.DeleteTransactionAsync(id); - transactionDialog.Destroy(); - } - else - { - transactionDialog.Present(); - } - dialog.Destroy(); - }; - dialog.Present(); - } - }; - transactionDialog.OnDestroy += (s, ex) => transactionController.Dispose(); - transactionDialog.Present(); - } - - /// - /// Occurs when the new group item is activated - /// - /// Gio.SimpleAction - /// EventArgs - private void NewGroup(Gio.SimpleAction sender, EventArgs e) - { - var groupController = _controller.CreateGroupDialogController(); - var groupDialog = new GroupDialog(groupController, _parentWindow); - groupDialog.OnApply += async (s, ex) => - { - var oldPage = _viewStack.GetVisibleChildName(); - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.AddGroupAsync(groupController.Group)); - _viewStack.SetVisibleChildName(oldPage); - _paneScroll.SetSensitive(true); - groupDialog.Destroy(); - }; - groupDialog.Present(); - } - - /// - /// Occurs when the edit group item is activated - /// - /// object? - /// uint - private void EditGroup(object? sender, uint id) - { - var groupController = _controller.CreateGroupDialogController(id); - var groupDialog = new GroupDialog(groupController, _parentWindow); - groupDialog.OnApply += async (s, ex) => - { - var oldPage = _viewStack.GetVisibleChildName(); - _paneScroll.SetSensitive(false); - _viewStack.SetVisibleChildName("spinner"); - await Task.Run(async () => await _controller.UpdateGroupAsync(groupController.Group, groupController.HasColorChanged)); - _viewStack.SetVisibleChildName(oldPage); - _paneScroll.SetSensitive(true); - groupDialog.Destroy(); - }; - groupDialog.OnDelete += (s, ex) => - { - var dialog = Adw.MessageDialog.New(_parentWindow, _("Delete Group"), _("Are you sure you want to delete this group?\nThis action is irreversible.")); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.AddResponse("no", _("No")); - dialog.SetDefaultResponse("no"); - dialog.SetCloseResponse("no"); - dialog.AddResponse("yes", _("Yes")); - dialog.SetResponseAppearance("yes", Adw.ResponseAppearance.Destructive); - dialog.OnResponse += async (ss, exx) => - { - if (exx.Response == "yes") - { - await _controller.DeleteGroupAsync(id); - groupDialog.Destroy(); - } - else - { - groupDialog.Present(); - } - dialog.Destroy(); - }; - dialog.Present(); - }; - groupDialog.Present(); - } - - /// - /// Occurs when the transaction reminders button is clicked - /// - /// Gtk.Button - /// EventArgs - private void OnTransactionReminders(Gtk.Button sender, EventArgs e) - { - var remindersDialog = new RemindersDialog(_parentWindow, _controller.AppInfo.ID, _("Upcoming transactions"), _controller.TransactionReminders); - remindersDialog.Present(); - } - - /// - /// Occurs when the reset overview filter button is clicked - /// - /// Gtk.Button - /// EventArgs - private void OnResetOverviewFilter(Gtk.Button sender, EventArgs e) - { - _incomeCheck.SetActive(true); - _expenseCheck.SetActive(true); - } - - /// - /// Occurs when the group filter is changed - /// - /// object? - /// The id of the group who's filter changed and whether to filter or not - private void UpdateGroupFilter(object? sender, (uint Id, bool Filter) e) => _controller.UpdateGroupFilterValue((int)e.Id, e.Filter); - - /// - /// Occurs when the tagfilter is changed - /// - /// object? - /// The tag and whether to filter or not - private void UpdateTagFilter(object? sender, (string Tag, bool Filter) e) => _controller.UpdateTagFilter(e.Tag, e.Filter); - - /// - /// Occurs when the user presses the button to show/hide groups - /// - private void OnToggleGroups() - { - _toggleGroupsButton.SetIconName(!_controller.ShowGroupsList ? "view-reveal-symbolic" : "view-conceal-symbolic"); - _groupsList.SetVisible(_controller.ShowGroupsList); - } - - /// - /// Occurs when the user presses the button to show/hide tags - /// - private void OnToggleTags() - { - _toggleTagsButton.SetIconName(!_controller.ShowTagsList ? "view-reveal-symbolic" : "view-conceal-symbolic"); - _tagsBin.SetVisible(_controller.ShowTagsList); - } - - /// - /// Occurs when the calendar's month/year is changed - /// - /// Gtk.Calendar? - /// EventArgs - private void OnCalendarMonthYearChanged(Gtk.Calendar? sender, EventArgs e) - { - _calendar.ClearMarks(); - var selectedDay = gtk_calendar_get_date(_calendar.Handle); - foreach (var date in _controller.DatesInAccount) - { - if (date.Month == g_date_time_get_month(ref selectedDay) && date.Year == g_date_time_get_year(ref selectedDay)) - { - _calendar.MarkDay((uint)date.Day); - } - } - gtk_calendar_select_day(_calendar.Handle, ref g_date_time_add_years(ref selectedDay, -1)); // workaround bug to show marks - gtk_calendar_select_day(_calendar.Handle, ref g_date_time_add_years(ref selectedDay, 0)); - } - - /// - /// Occurs when the calendar's date selection is changed - /// - /// Gtk.Calendar - /// EventArgs - private void OnCalendarSelectedDateChanged(Gtk.Calendar sender, EventArgs e) - { - if (!_isAccountLoading) - { - var selectedDay = gtk_calendar_get_date(_calendar.Handle); - _controller.SetSingleDateFilter(new DateOnly(g_date_time_get_year(ref selectedDay), g_date_time_get_month(ref selectedDay), g_date_time_get_day_of_month(ref selectedDay))); - } - } - - /// - /// Occurs when the select current month button is clicked - /// - /// Gtk.Button - /// EventArgs - private void OnSelectCurrentMonth(Gtk.Button sender, EventArgs e) - { - var selectedDay = gtk_calendar_get_date(_calendar.Handle); - var selectedMonth = (uint)(g_date_time_get_month(ref selectedDay) - 1); - var selectedYear = g_date_time_get_year(ref selectedDay); - var selectedYearIndex = _controller.YearsForRangeFilter.IndexOf(selectedYear.ToString()); - if (selectedYearIndex != -1) - { - _rangeExpander.SetEnableExpansion(true); - _startYearDropDown.SetSelected((uint)selectedYearIndex); - _endYearDropDown.SetSelected((uint)selectedYearIndex); - _startMonthDropDown.SetSelected(selectedMonth); - _endMonthDropDown.SetSelected(selectedMonth); - _startDayDropDown.SetSelected(0); - _endDayDropDown.SetSelected(_endDayDropDown.Model.GetNItems() - 1); - } - } - - /// - /// Occurs when the reset calendar filter button is clicked - /// - /// Gtk.Button - /// EventArgs - private void OnResetCalendarFilter(Gtk.Button sender, EventArgs e) - { - gtk_calendar_select_day(_calendar.Handle, ref g_date_time_new_now_local()); - OnCalendarMonthYearChanged(null, e); - _rangeExpander.SetEnableExpansion(false); - } - - /// - /// Occurs when the select date range is toggled - /// - private void OnDateRangeToggled() - { - if (_rangeExpander.GetEnableExpansion()) - { - //Years For Date Filter - var previousStartYear = _startYearDropDown.GetSelected(); - var previousEndYear = _endYearDropDown.GetSelected(); - var yearsForRangeFilter = _controller.YearsForRangeFilter.ToArray(); - _startYearDropDown.SetModel(Gtk.StringList.New(yearsForRangeFilter)); - _endYearDropDown.SetModel(Gtk.StringList.New(yearsForRangeFilter)); - _startYearDropDown.SetSelected(previousStartYear > yearsForRangeFilter.Length - 1 ? 0 : previousStartYear); - _endYearDropDown.SetSelected(previousEndYear > yearsForRangeFilter.Length - 1 ? 0 : previousEndYear); - //Set Date - _controller.FilterStartDate = new DateOnly(int.Parse(yearsForRangeFilter[_startYearDropDown.GetSelected()]), (int)_startMonthDropDown.GetSelected() + 1, (int)_startDayDropDown.GetSelected() + 1); - _controller.FilterEndDate = new DateOnly(int.Parse(yearsForRangeFilter[_endYearDropDown.GetSelected()]), (int)_endMonthDropDown.GetSelected() + 1, (int)_endDayDropDown.GetSelected() + 1); - } - else - { - _controller.SetSingleDateFilter(DateOnly.FromDateTime(DateTime.Now)); - } - } - - /// - /// Occurs when the date range's start year is changed - /// - private void OnDateRangeStartYearChanged() - { - var newYear = int.Parse(_controller.YearsForRangeFilter[(int)_startYearDropDown.GetSelected()]); - if ((int)_startMonthDropDown.GetSelected() + 1 == 2) // If selected month is February - { - var selectedDay = (int)_startDayDropDown.GetSelected() + 1; - if ((newYear % 400 == 0 || newYear % 100 != 0) && newYear % 4 == 0) // If selected year is a leap year - { - _startDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 29).Select(x => x.ToString()).ToArray())); - } - else - { - _startDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 28).Select(x => x.ToString()).ToArray())); - } - _startDayDropDown.SetSelected(selectedDay > 28 ? 0 : (uint)selectedDay - 1); - } - _controller.FilterStartDate = new DateOnly(newYear, (int)_startMonthDropDown.GetSelected() + 1, (int)_startDayDropDown.GetSelected() + 1); - } - - /// - /// Occurs when the date range's start month is changed - /// - private void OnDateRangeStartMonthChanged() - { - var year = int.Parse(_controller.YearsForRangeFilter[(int)_startYearDropDown.GetSelected()]); - var previousDay = (int)_startDayDropDown.GetSelected() + 1; - var newNumberOfDays = ((int)_startMonthDropDown.GetSelected() + 1) switch - { - 1 => 31, - 2 => (year % 400 == 0 || year % 100 != 0) && year % 4 == 0 ? 29 : 28, - 3 => 31, - 5 => 31, - 7 => 31, - 8 => 31, - 10 => 31, - 12 => 31, - _ => 30 - }; - _startDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, newNumberOfDays).Select(x => x.ToString()).ToArray())); - _startDayDropDown.SetSelected(previousDay > newNumberOfDays ? 0 : (uint)previousDay - 1); - } - - /// - /// Occurs when the date range's start day is changed - /// - private void OnDateRangeStartDayChanged() => _controller.FilterStartDate = new DateOnly(int.Parse(_controller.YearsForRangeFilter[(int)_startYearDropDown.GetSelected()]), (int)_startMonthDropDown.GetSelected() + 1, (int)_startDayDropDown.GetSelected() + 1); - - /// - /// Occurs when the date range's end year is changed - /// - private void OnDateRangeEndYearChanged() - { - var newYear = int.Parse(_controller.YearsForRangeFilter[(int)_endYearDropDown.GetSelected()]); - if ((int)_endMonthDropDown.GetSelected() + 1 == 2) // If selected month is February - { - var selectedDay = (int)_endDayDropDown.GetSelected() + 1; - if ((newYear % 400 == 0 || newYear % 100 != 0) && newYear % 4 == 0) // If the selected year is a leap year - { - _endDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 29).Select(x => x.ToString()).ToArray())); - } - else - { - _endDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, 28).Select(x => x.ToString()).ToArray())); - } - _endDayDropDown.SetSelected(selectedDay > 28 ? 0 : (uint)selectedDay - 1); - } - _controller.FilterEndDate = new DateOnly(newYear, (int)_endMonthDropDown.GetSelected() + 1, (int)_endDayDropDown.GetSelected() + 1); - } - - /// - /// Occurs when the date range's end month is changed - /// - private void OnDateRangeEndMonthChanged() - { - var year = int.Parse(_controller.YearsForRangeFilter[(int)_endYearDropDown.GetSelected()]); - var previousDay = (int)_endDayDropDown.GetSelected() + 1; - var newNumberOfDays = ((int)_endMonthDropDown.GetSelected() + 1) switch - { - 1 => 31, - 2 => (year % 400 == 0 || year % 100 != 0) && year % 4 == 0 ? 29 : 28, - 3 => 31, - 5 => 31, - 7 => 31, - 8 => 31, - 10 => 31, - 12 => 31, - _ => 30 - }; - _endDayDropDown.SetModel(Gtk.StringList.New(Enumerable.Range(1, newNumberOfDays).Select(x => x.ToString()).ToArray())); - _endDayDropDown.SetSelected(previousDay > newNumberOfDays ? 0 : (uint)previousDay - 1); - } - - /// - /// Occurs when the date range's end day is changed - /// - private void OnDateRangeEndDayChanged() => _controller.FilterEndDate = new DateOnly(int.Parse(_controller.YearsForRangeFilter[(int)_endYearDropDown.GetSelected()]), (int)_endMonthDropDown.GetSelected() + 1, (int)_endDayDropDown.GetSelected() + 1); -} diff --git a/NickvisionMoney.GNOME/Views/DashboardView.cs b/NickvisionMoney.GNOME/Views/DashboardView.cs deleted file mode 100644 index ecc7436b9..000000000 --- a/NickvisionMoney.GNOME/Views/DashboardView.cs +++ /dev/null @@ -1,86 +0,0 @@ -using NickvisionMoney.GNOME.Controls; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Helpers; -using System.Globalization; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// The DashboardView for the application -/// -public class DashboardView : Gtk.ScrolledWindow -{ - [Gtk.Connect] private readonly Adw.ActionRow _incomeRow; - [Gtk.Connect] private readonly Gtk.Label _incomeSuffix; - [Gtk.Connect] private readonly Adw.ActionRow _expenseRow; - [Gtk.Connect] private readonly Gtk.Label _expenseSuffix; - [Gtk.Connect] private readonly Adw.ActionRow _totalRow; - [Gtk.Connect] private readonly Gtk.Label _totalSuffix; - [Gtk.Connect] private readonly Gtk.FlowBox _groupsFlowbox; - - public DashboardView(Gtk.Builder builder, DashboardViewController controller) : base(builder.GetPointer("_root"), false) - { - builder.Connect(this); - var culture = new CultureInfo(CultureInfo.CurrentCulture.Name, true); - var subtitle = ""; - var suffix = ""; - foreach (var currency in controller.Income.Currencies) - { - subtitle += controller.Income.Breakdowns[currency].PerAccount; - culture.NumberFormat.CurrencySymbol = currency.Symbol; - suffix += $"+ {controller.Income.Breakdowns[currency].Total.ToAmountString(culture, controller.UseNativeDigits)}\n"; - } - _incomeRow.SetSubtitle(subtitle.Trim('\n')); - _incomeSuffix.SetText(suffix.Trim('\n')); - subtitle = ""; - suffix = ""; - foreach (var currency in controller.Expense.Currencies) - { - subtitle += controller.Expense.Breakdowns[currency].PerAccount; - culture.NumberFormat.CurrencySymbol = currency.Symbol; - suffix += $"− {controller.Expense.Breakdowns[currency].Total.ToAmountString(culture, controller.UseNativeDigits)}\n"; - } - _expenseRow.SetSubtitle(subtitle.Trim('\n')); - _expenseSuffix.SetText(suffix.Trim('\n')); - subtitle = ""; - suffix = ""; - foreach (var currency in controller.Total.Currencies) - { - subtitle += controller.Total.Breakdowns[currency].PerAccount; - culture.NumberFormat.CurrencySymbol = currency.Symbol; - suffix += $"{(controller.Total.Breakdowns[currency].Total >= 0 ? "+ " : "− ")}{controller.Total.Breakdowns[currency].Total.ToAmountString(culture, controller.UseNativeDigits)}\n"; - } - _totalRow.SetSubtitle(subtitle.Trim('\n')); - _totalSuffix.SetText(suffix.Trim('\n')); - foreach (var pair in controller.Groups) - { - var row = Adw.ActionRow.New(); - row.SetTitle(pair.Key); - row.AddCssClass("card"); - var prefix = new TransactionId(0); - prefix.UpdateColor(pair.Value.RGBA, "", controller.UseNativeDigits); - prefix.SetCompact(true); - row.AddPrefix(prefix); - var suffixBox = Gtk.Box.New(Gtk.Orientation.Vertical, 1); - suffixBox.SetValign(Gtk.Align.Center); - row.AddSuffix(suffixBox); - subtitle = ""; - foreach (var currency in pair.Value.DashboardAmount.Currencies) - { - subtitle += pair.Value.DashboardAmount.Breakdowns[currency].PerAccount; - culture.NumberFormat.CurrencySymbol = currency.Symbol; - var suffixLabel = Gtk.Label.New($"{(pair.Value.DashboardAmount.Breakdowns[currency].Total >= 0 ? "+ " : "− ")}{pair.Value.DashboardAmount.Breakdowns[currency].Total.ToAmountString(culture, controller.UseNativeDigits)}"); - suffixLabel.AddCssClass(pair.Value.DashboardAmount.Breakdowns[currency].Total >= 0 ? "denaro-income" : "denaro-expense"); - suffixLabel.SetHalign(Gtk.Align.End); - suffixBox.Append(suffixLabel); - } - row.SetSubtitle(subtitle.Trim('\n')); - _groupsFlowbox.Append(row); - } - } - - public DashboardView(DashboardViewController controller) : this(Builder.FromFile("dashboard_view.ui"), controller) - { - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Views/GroupDialog.cs b/NickvisionMoney.GNOME/Views/GroupDialog.cs deleted file mode 100644 index a7d0dbbd3..000000000 --- a/NickvisionMoney.GNOME/Views/GroupDialog.cs +++ /dev/null @@ -1,165 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using System; -using System.Globalization; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// A dialog for managing a Group -/// -public partial class GroupDialog : Adw.Window -{ - private bool _constructing; - private readonly GroupDialogController _controller; - private readonly Gtk.ColorDialog _colorDialog; - - [Gtk.Connect] private readonly Gtk.Label _titleLabel; - [Gtk.Connect] private readonly Adw.EntryRow _nameRow; - [Gtk.Connect] private readonly Adw.EntryRow _descriptionRow; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _colorButton; - [Gtk.Connect] private readonly Gtk.Button _deleteButton; - [Gtk.Connect] private readonly Gtk.Button _applyButton; - - private readonly Gtk.EventControllerKey _nameKeyController; - private readonly Gtk.EventControllerKey _descriptionKeyController; - - /// - /// Occurs when the apply button is clicked - /// - public event EventHandler? OnApply; - /// - /// Occurs when the delete button is clicked - /// - public event EventHandler? OnDelete; - - private GroupDialog(Gtk.Builder builder, GroupDialogController controller, Gtk.Window parent) : base(builder.GetPointer("_root"), false) - { - _constructing = true; - _controller = controller; - //Build UI - builder.Connect(this); - var idString = _controller.Group.Id.ToString(); - var nativeDigits = CultureInfo.CurrentCulture.NumberFormat.NativeDigits; - if (_controller.UseNativeDigits && "0" != nativeDigits[0]) - { - idString = idString.Replace("0", nativeDigits[0]) - .Replace("1", nativeDigits[1]) - .Replace("2", nativeDigits[2]) - .Replace("3", nativeDigits[3]) - .Replace("4", nativeDigits[4]) - .Replace("5", nativeDigits[5]) - .Replace("6", nativeDigits[6]) - .Replace("7", nativeDigits[7]) - .Replace("8", nativeDigits[8]) - .Replace("9", nativeDigits[9]); - } - _titleLabel.SetLabel($"{_("Group")} — {idString}"); - //Dialog Settings - SetTransientFor(parent); - SetIconName(_controller.AppInfo.ID); - //Name - _nameRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - _nameKeyController = Gtk.EventControllerKey.New(); - _nameKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _nameKeyController.OnKeyPressed += (sender, e) => { if (e.Keyval == 59) { return true; } return false; }; - _nameRow.AddController(_nameKeyController); - //Description - _descriptionRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - _descriptionKeyController = Gtk.EventControllerKey.New(); - _descriptionKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _descriptionKeyController.OnKeyPressed += (sender, e) => { if (e.Keyval == 59) { return true; } return false; }; - _descriptionRow.AddController(_descriptionKeyController); - //Color - _colorDialog = Gtk.ColorDialog.New(); - _colorDialog.SetWithAlpha(false); - _colorButton.SetDialog(_colorDialog); - _colorButton.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "rgba") - { - if (!_constructing) - { - Validate(); - } - } - }; - //Buttons - _applyButton.SetLabel(_controller.IsEditing ? _("Apply") : _("Add")); - _applyButton.OnClicked += (sender, e) => - { - Close(); - OnApply?.Invoke(this, EventArgs.Empty); - }; - _deleteButton.SetVisible(_controller.IsEditing); - _deleteButton.OnClicked += (sender, e) => - { - Close(); - OnDelete?.Invoke(this, EventArgs.Empty); - }; - //Load Group - _nameRow.SetText(_controller.Group.Name); - _descriptionRow.SetText(_controller.Group.Description); - GdkHelpers.RGBA.Parse(out var color, _controller.Group.RGBA); - _colorButton.SetExtRgba(color!.Value); - Validate(); - _constructing = false; - } - - /// - /// Constructs a GroupDialog - /// - /// GroupDialogController - /// Gtk.Window - public GroupDialog(GroupDialogController controller, Gtk.Window parent) : this(Builder.FromFile("group_dialog.ui"), controller, parent) - { - } - - /// - /// Validates the dialog's input - /// - private void Validate() - { - var color = _colorButton.GetExtRgba(); - var checkStatus = _controller.UpdateGroup(_nameRow.GetText().Trim(), _descriptionRow.GetText().Trim(), color.ToString()); - _nameRow.RemoveCssClass("error"); - _nameRow.SetTitle(_("Name")); - if (checkStatus == GroupCheckStatus.Valid) - { - _applyButton.SetSensitive(true); - } - else - { - if (checkStatus == GroupCheckStatus.EmptyName) - { - _nameRow.AddCssClass("error"); - _nameRow.SetTitle(_("Name (Empty)")); - } - else if (checkStatus == GroupCheckStatus.NameExists) - { - _nameRow.AddCssClass("error"); - _nameRow.SetTitle(_("Name (Exists)")); - } - _applyButton.SetSensitive(false); - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/Views/MainWindow.cs b/NickvisionMoney.GNOME/Views/MainWindow.cs deleted file mode 100644 index 71b4b6650..000000000 --- a/NickvisionMoney.GNOME/Views/MainWindow.cs +++ /dev/null @@ -1,573 +0,0 @@ -using Nickvision.Aura.Events; -using NickvisionMoney.GNOME.Controls; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Globalization; -using System.IO; -using System.Text; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// The MainWindow for the application -/// -public partial class MainWindow : Adw.ApplicationWindow -{ - private readonly MainWindowController _controller; - private readonly Adw.Application _application; - - [Gtk.Connect] private readonly Adw.ToolbarView _toolbarView; - [Gtk.Connect] private readonly Adw.WindowTitle _windowTitle; - [Gtk.Connect] private readonly Gtk.MenuButton _accountMenuButton; - [Gtk.Connect] private readonly Gtk.Popover _accountPopover; - [Gtk.Connect] private readonly Adw.ViewStack _viewStackAccountPopover; - [Gtk.Connect] private readonly Adw.PreferencesGroup _recentAccountsGroup; - [Gtk.Connect] private readonly Gtk.ToggleButton _flapToggleButton; - [Gtk.Connect] private readonly Gtk.ToggleButton _graphToggleButton; - [Gtk.Connect] private readonly Gtk.ToggleButton _dashboardButton; - [Gtk.Connect] private readonly Adw.Bin _dashboardBin; - [Gtk.Connect] private readonly Adw.ToastOverlay _toastOverlay; - [Gtk.Connect] private readonly Adw.ViewStack _viewStack; - [Gtk.Connect] private readonly Gtk.Image _greetingIcon; - [Gtk.Connect] private readonly Gtk.Label _greetingLabel; - [Gtk.Connect] private readonly Adw.PreferencesGroup _startPageRecentAccountsGroup; - [Gtk.Connect] private readonly Gtk.Button _newAccountButton; - [Gtk.Connect] private readonly Gtk.Button _openAccountButton; - [Gtk.Connect] private readonly Adw.TabView _tabView; - - private readonly List _listRecentAccountsRows; - private readonly List _listRecentAccountsOnStartRows; - private readonly List _accountViews; - private readonly Gtk.DropTarget _dropTarget; - private readonly Gio.SimpleAction _actNewAccount; - private readonly Gio.SimpleAction _actOpenAccount; - private readonly Gio.SimpleAction _actCloseAccount; - - public bool CompactMode { get; private set; } - - private MainWindow(Gtk.Builder builder, MainWindowController controller, Adw.Application application) : base(builder.GetPointer("_root"), false) - { - //Window Settings - _controller = controller; - _application = application; - _listRecentAccountsRows = new List(); - _listRecentAccountsOnStartRows = new List(); - _accountViews = new List(); - //Build UI - builder.Connect(this); - SetTitle(_controller.AppInfo.ShortName); - SetIconName(_controller.AppInfo.ID); - CompactMode = false; - if (_controller.AppInfo.IsDevVersion) - { - AddCssClass("devel"); - } - OnCloseRequest += OnCloseRequested; - //Register Events - _controller.NotificationSent += NotificationSent; - _controller.AccountLoginAsync += AccountLoginAsync; - _controller.AccountAdded += AccountAdded; - _controller.RecentAccountsChanged += (sender, e) => - { - GLib.Functions.IdleAdd(0, () => - { - UpdateRecentAccountsOnStart(); - UpdateRecentAccounts(); - return false; - }); - }; - _dashboardButton.OnToggled += OnToggleDashboard; - //Header Bar - _windowTitle.SetTitle(_controller.AppInfo.ShortName); - _graphToggleButton.SetActive(_controller.ShowGraphs); - //Greeting - _greetingIcon.SetFromIconName(_controller.ShowSun ? "sun-outline-symbolic" : "moon-outline-symbolic"); - _greetingLabel.SetLabel(_controller.Greeting); - //Page Tabs - _tabView.OnClosePage += OnCloseAccountPage; - //New Account Action - _actNewAccount = Gio.SimpleAction.New("newAccount", null); - _actNewAccount.OnActivate += OnNewAccount; - AddAction(_actNewAccount); - application.SetAccelsForAction("win.newAccount", new string[] { "N" }); - //Open Account Action - _actOpenAccount = Gio.SimpleAction.New("openAccount", null); - _actOpenAccount.OnActivate += OnOpenAccount; - AddAction(_actOpenAccount); - application.SetAccelsForAction("win.openAccount", new string[] { "O" }); - //Close Account Action - _actCloseAccount = Gio.SimpleAction.New("closeAccount", null); - _actCloseAccount.OnActivate += OnCloseAccount; - AddAction(_actCloseAccount); - application.SetAccelsForAction("win.closeAccount", new string[] { "W" }); - //Currency Converter Action - var actCurrencyConverter = Gio.SimpleAction.New("currencyConverter", null); - actCurrencyConverter.OnActivate += CurrencyConverter; - AddAction(actCurrencyConverter); - //Preferences Action - var actPreferences = Gio.SimpleAction.New("preferences", null); - actPreferences.OnActivate += Preferences; - AddAction(actPreferences); - application.SetAccelsForAction("win.preferences", new string[] { "comma" }); - //Keyboard Shortcuts Action - var actKeyboardShortcuts = Gio.SimpleAction.New("keyboardShortcuts", null); - actKeyboardShortcuts.OnActivate += KeyboardShortcuts; - AddAction(actKeyboardShortcuts); - application.SetAccelsForAction("win.keyboardShortcuts", new string[] { "question" }); - //Quit Action - var actQuit = Gio.SimpleAction.New("quit", null); - actQuit.OnActivate += (sender, e) => _application.Quit(); - AddAction(actQuit); - application.SetAccelsForAction("win.quit", new string[] { "q" }); - //Help Action - var actHelp = Gio.SimpleAction.New("help", null); - actHelp.OnActivate += (sender, e) => Gtk.Functions.ShowUri(this, DocumentationHelpers.GetHelpURL("index"), 0); - AddAction(actHelp); - application.SetAccelsForAction("win.help", new string[] { "F1" }); - //About Action - var actAbout = Gio.SimpleAction.New("about", null); - actAbout.OnActivate += About; - AddAction(actAbout); - //Drop Target - _dropTarget = Gtk.DropTarget.New(Gio.FileHelper.GetGType(), Gdk.DragAction.Copy); - _dropTarget.OnDrop += OnDrop; - AddController(_dropTarget); - } - - /// - /// Constructs a MainWindow - /// - /// The MainWindowController - /// The Adw.Application - public MainWindow(MainWindowController controller, Adw.Application application) : this(Builder.FromFile("window.ui"), controller, application) - { - } - - /// - /// Starts the MainWindow - /// - public async Task StartupAsync() - { - _application.AddWindow(this); - UpdateRecentAccountsOnStart(); - Present(); - await _controller.StartupAsync(); - } - - /// - /// Occurs when a notification is sent from the controller - /// - /// object? - /// NotificationSentEventArgs - private void NotificationSent(object? sender, NotificationSentEventArgs e) - { - var toast = Adw.Toast.New(e.Message); - if (e.Action == "help-import") - { - toast.SetButtonLabel(_("Help")); - toast.OnButtonClicked += (s, ex) => Gtk.Functions.ShowUri(this, DocumentationHelpers.GetHelpURL("import-export"), 0); - } - else if (e.Action == "open-export") - { - var file = Gio.FileHelper.NewForPath(e.ActionParam); - var fileLauncher = Gtk.FileLauncher.New(file); - toast.SetButtonLabel(_("Open")); - toast.OnButtonClicked += async (s, ex) => - { - try - { - await fileLauncher.LaunchAsync(this); - } - catch (Exception exception) - { - Console.Error.WriteLine(exception); - } - }; - } - _toastOverlay.AddToast(toast); - } - - /// - /// Sends a shell notification - /// - /// ShellNotificationSentEventArgs - private void SendShellNotification(ShellNotificationSentEventArgs e) - { - var notification = Gio.Notification.New(e.Title); - notification.SetBody(e.Message); - notification.SetPriority(e.Severity switch - { - NotificationSeverity.Success => Gio.NotificationPriority.High, - NotificationSeverity.Warning => Gio.NotificationPriority.Urgent, - NotificationSeverity.Error => Gio.NotificationPriority.Urgent, - _ => Gio.NotificationPriority.Normal - }); - if (string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("SNAP"))) - { - notification.SetIcon(Gio.ThemedIcon.New($"{_controller.AppInfo.ID}-symbolic")); - } - else - { - var fileIcon = Gio.FileIcon.New(Gio.FileHelper.NewForPath($"{Environment.GetEnvironmentVariable("SNAP")}/usr/share/icons/hicolor/symbolic/apps/{_controller.AppInfo.ID}-symbolic.svg")); - notification.SetIcon(fileIcon); - } - _application.SendNotification(_controller.AppInfo.ID, notification); - } - - /// - /// Occurs when the window tries to close - /// - /// Gtk.Window - /// EventArgs - /// True to stop close, else false - private bool OnCloseRequested(Gtk.Window sender, EventArgs e) - { - _controller.ShowGraphs = _graphToggleButton.GetActive(); - _controller.Dispose(); - return false; - } - - /// - /// Updates the window's subtitle - /// - /// The new subtitle - private void UpdateSubtitle(string s) => _windowTitle.SetSubtitle(_controller.NumberOfOpenAccounts == 1 ? s : ""); - - /// - /// Occurs when an account needs a login - /// - /// The title of the account - public async Task AccountLoginAsync(string title) - { - var tcs = new TaskCompletionSource(); - var passwordDialog = new PasswordDialog(this, title, tcs); - passwordDialog.SetIconName(_controller.AppInfo.ID); - passwordDialog.Present(); - return await tcs.Task; - } - - /// - /// Occurs when an account is created or opened - /// - private async void AccountAdded(object? sender, EventArgs e) - { - _viewStack.SetVisibleChildName("pageTabs"); - _toolbarView.SetTopBarStyle(Adw.ToolbarStyle.Raised); - var newAccountView = new AccountView(_controller.GetMostRecentAccountViewController(), this, _tabView, _flapToggleButton, _graphToggleButton, UpdateSubtitle); - _tabView.SetSelectedPage(newAccountView.Page); - _accountViews.Add(newAccountView.Page); - _windowTitle.SetSubtitle(_controller.NumberOfOpenAccounts == 1 ? _controller.GetMostRecentAccountViewController().AccountTitle : ""); - _accountMenuButton.SetVisible(true); - _flapToggleButton.SetVisible(true); - _graphToggleButton.SetVisible(true); - _dashboardButton.SetVisible(_controller.NumberOfOpenAccounts > 1); - await newAccountView.StartupAsync(); - } - - /// - /// Creates a new account - /// - /// Gio.SimpleAction - /// EventArgs - private void OnNewAccount(Gio.SimpleAction sender, EventArgs e) - { - _accountPopover.Popdown(); - var newAccountController = _controller.CreateNewAccountDialogController(); - var newAccountDialog = new NewAccountDialog(newAccountController, this); - newAccountDialog.OnApply += async (sender, e) => - { - newAccountDialog.SetVisible(false); - await _controller.NewAccountAsync(newAccountController); - newAccountDialog.Close(); - }; - newAccountDialog.Present(); - } - - /// - /// Opens a new account - /// - /// Gio.SimpleAction - /// EventArgs - private async void OnOpenAccount(Gio.SimpleAction sender, EventArgs e) - { - _accountPopover.Popdown(); - var openFileDialog = Gtk.FileDialog.New(); - openFileDialog.SetTitle(_("Open Account")); - var filter = Gtk.FileFilter.New(); - filter.SetName($"{_("Nickvision Denaro Account")} (*.nmoney)"); - filter.AddPattern("*.nmoney"); - filter.AddPattern("*.NMONEY"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filter); - openFileDialog.SetFilters(filters); - try - { - var file = await openFileDialog.OpenAsync(this); - await _controller.AddAccountAsync(file.GetPath()); - } - catch (Exception exception) - { - Console.Error.WriteLine(exception); - } - } - - /// - /// Closes an opened account - /// - private void OnCloseAccount(Gio.SimpleAction sender, EventArgs e) - { - _accountPopover.Popdown(); - if (_controller.NumberOfOpenAccounts == 0) - { - _application.Quit(); - return; - } - _tabView.ClosePage(_tabView.GetSelectedPage()!); - } - - /// - /// Occurs when an account page is closing - /// - /// Adw.TabView - /// Adw.TabView.ClosePageSignalArgs - private bool OnCloseAccountPage(Adw.TabView view, Adw.TabView.ClosePageSignalArgs args) - { - var indexPage = _tabView.GetPagePosition(args.Page); - _controller.CloseAccount(indexPage); - _accountViews.RemoveAt(indexPage); - _windowTitle.SetSubtitle(_controller.NumberOfOpenAccounts == 1 ? _controller.GetMostRecentAccountViewController().AccountTitle : ""); - _dashboardButton.SetVisible(_controller.NumberOfOpenAccounts > 1); - if (_controller.NumberOfOpenAccounts == 0) - { - _viewStack.SetVisibleChildName("pageNoAccounts"); - _toolbarView.SetTopBarStyle(Adw.ToolbarStyle.Flat); - _accountMenuButton.SetVisible(false); - _flapToggleButton.SetVisible(false); - _graphToggleButton.SetVisible(false); - } - _tabView.ClosePageFinish(args.Page, true); - return true; - } - - /// - /// Occurs when dashboard should be opened or closed - /// - /// Gtk.ToggleButton - /// EventArgs - private void OnToggleDashboard(Gtk.ToggleButton sender, EventArgs e) - { - if (sender.GetActive()) - { - _dashboardBin.SetChild(new DashboardView(_controller.CreateDashboardViewController())); - _viewStack.SetVisibleChildName("dashboard"); - _actCloseAccount.SetEnabled(false); - _accountMenuButton.SetVisible(false); - _flapToggleButton.SetVisible(false); - _graphToggleButton.SetVisible(false); - } - else - { - _viewStack.SetVisibleChildName("pageTabs"); - _actCloseAccount.SetEnabled(true); - _accountMenuButton.SetVisible(true); - _flapToggleButton.SetVisible(true); - _graphToggleButton.SetVisible(true); - } - } - - /// - /// Occurs when the currency converter action is triggered - /// - /// Gio.SimpleAction - /// EventArgs - private async void CurrencyConverter(Gio.SimpleAction sender, EventArgs e) - { - var currencyConverterDialog = new CurrencyConverterDialog(this, _controller.AppInfo.ID, _controller.UseNativeDigits); - await currencyConverterDialog.PresentAsync(); - } - - /// - /// Occurs when the preferences action is triggered - /// - /// Gio.SimpleAction - /// EventArgs - private void Preferences(Gio.SimpleAction sender, EventArgs e) - { - var preferencesDialog = new PreferencesDialog(_controller.CreatePreferencesViewController(), _application, this); - preferencesDialog.SetIconName(_controller.AppInfo.ID); - preferencesDialog.Present(); - } - - /// - /// Occurs when the keyboard shortcuts action is triggered - /// - /// Gio.SimpleAction - /// EventArgs - private void KeyboardShortcuts(Gio.SimpleAction sender, EventArgs e) - { - var builder = Builder.FromFile("shortcuts_dialog.ui"); - var shortcutsWindow = (Gtk.ShortcutsWindow)builder.GetObject("_root"); - shortcutsWindow.SetTransientFor(this); - shortcutsWindow.SetIconName(_controller.AppInfo.ID); - shortcutsWindow.Present(); - } - - /// - /// Occurs when the about action is triggered - /// - /// Gio.SimpleAction - /// EventArgs - private void About(Gio.SimpleAction sender, EventArgs e) - { - var debugInfo = new StringBuilder(); - debugInfo.AppendLine(_controller.AppInfo.ID); - debugInfo.AppendLine(_controller.AppInfo.Version); - debugInfo.AppendLine($"GTK {Gtk.Functions.GetMajorVersion()}.{Gtk.Functions.GetMinorVersion()}.{Gtk.Functions.GetMicroVersion()}"); - debugInfo.AppendLine($"libadwaita {Adw.Functions.GetMajorVersion()}.{Adw.Functions.GetMinorVersion()}.{Adw.Functions.GetMicroVersion()}"); - if (File.Exists("/.flatpak-info")) - { - debugInfo.AppendLine("Flatpak"); - } - else if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("SNAP"))) - { - debugInfo.AppendLine("Snap"); - } - debugInfo.AppendLine(CultureInfo.CurrentCulture.ToString()); - var localeProcess = new Process - { - StartInfo = new ProcessStartInfo - { - FileName = "locale", - UseShellExecute = false, - RedirectStandardOutput = true - } - }; - try - { - localeProcess.Start(); - var localeString = localeProcess.StandardOutput.ReadToEnd().Trim(); - localeProcess.WaitForExit(); - debugInfo.AppendLine(localeString); - } - catch - { - debugInfo.AppendLine("Unknown locale"); - } - var dialog = Adw.AboutWindow.New(); - dialog.SetTransientFor(this); - dialog.SetIconName(_controller.AppInfo.ID); - dialog.SetApplicationName(_controller.AppInfo.ShortName); - dialog.SetApplicationIcon(_controller.AppInfo.ID + (_controller.AppInfo.IsDevVersion ? "-devel" : "")); - dialog.SetVersion(_controller.AppInfo.Version); - dialog.SetDebugInfo(debugInfo.ToString()); - dialog.SetComments(_controller.AppInfo.Description); - dialog.SetDeveloperName("Nickvision"); - dialog.SetLicenseType(Gtk.License.MitX11); - dialog.SetCopyright("© Nickvision 2021-2023"); - dialog.SetWebsite("https://nickvision.org/"); - dialog.SetIssueUrl(_controller.AppInfo.IssueTracker.ToString()); - dialog.SetSupportUrl(_controller.AppInfo.SupportUrl.ToString()); - dialog.AddLink(_("GitHub Repo"), _controller.AppInfo.SourceRepo.ToString()); - foreach (var pair in _controller.AppInfo.ExtraLinks) - { - dialog.AddLink(pair.Key, pair.Value.ToString()); - } - dialog.SetDevelopers(_controller.AppInfo.ConvertURLDictToArray(_controller.AppInfo.Developers)); - dialog.SetDesigners(_controller.AppInfo.ConvertURLDictToArray(_controller.AppInfo.Designers)); - dialog.SetArtists(_controller.AppInfo.ConvertURLDictToArray(_controller.AppInfo.Artists)); - dialog.SetTranslatorCredits(_controller.AppInfo.TranslatorCredits); - dialog.SetReleaseNotes(_controller.AppInfo.HTMLChangelog); - dialog.Present(); - } - - /// - /// Occurs when the preferences action is triggered - /// - /// Gtk.DropTarget - /// Gtk.DropTarget.DropSignalArgs - private bool OnDrop(Gtk.DropTarget sender, Gtk.DropTarget.DropSignalArgs e) - { - var file = new Gio.FileHelper(e.Value.GetObject()!.Handle, false); - var path = file.GetPath() ?? ""; - if (File.Exists(path)) - { - Task.Run(async () => await _controller.AddAccountAsync(path)); - return true; - } - return false; - } - - /// - /// Updates the list of recent accounts - /// - private void UpdateRecentAccounts() - { - _viewStackAccountPopover.SetVisibleChildName(_controller.RecentAccounts.Count > 0 ? "recents" : "no-recents"); - foreach (var row in _listRecentAccountsRows) - { - _recentAccountsGroup.Remove(row); - } - _listRecentAccountsRows.Clear(); - foreach (var recentAccount in _controller.RecentAccounts) - { - var row = CreateRecentAccountRow(recentAccount, false); - _recentAccountsGroup.Add(row); - _listRecentAccountsRows.Add(row); - } - } - - /// - /// Updates the list of recent accounts on start screen - /// - private void UpdateRecentAccountsOnStart() - { - if (_controller.RecentAccounts.Count > 0) - { - _newAccountButton.RemoveCssClass("suggested-action"); - } - else - { - _newAccountButton.AddCssClass("suggested-action"); - } - _startPageRecentAccountsGroup.SetVisible(_controller.RecentAccounts.Count > 0); - foreach (var row in _listRecentAccountsOnStartRows) - { - _startPageRecentAccountsGroup.Remove(row); - } - _listRecentAccountsOnStartRows.Clear(); - foreach (var recentAccount in _controller.RecentAccounts) - { - var row = CreateRecentAccountRow(recentAccount, true); - _startPageRecentAccountsGroup.Add(row); - _listRecentAccountsOnStartRows.Add(row); - } - } - - /// - /// Creates a row for recent accounts lists - /// - /// Account to create the row for - /// Whether the row will appear on start screen or in popover - private Adw.ActionRow CreateRecentAccountRow(RecentAccount recentAccount, bool onStartScreen) - { - var row = new RecentAccountRow(recentAccount, _controller.GetColorForAccountType(recentAccount.Type), onStartScreen, true); - row.Selected += async (sender, e) => - { - _accountPopover.Popdown(); - await _controller.AddAccountAsync(e.Path); - }; - row.RemoveRequested += (sender, e) => - { - _accountPopover.Popdown(); - _controller.RemoveRecentAccount(e); - }; - return row; - } -} diff --git a/NickvisionMoney.GNOME/Views/NewAccountDialog.cs b/NickvisionMoney.GNOME/Views/NewAccountDialog.cs deleted file mode 100644 index 50c017b9b..000000000 --- a/NickvisionMoney.GNOME/Views/NewAccountDialog.cs +++ /dev/null @@ -1,494 +0,0 @@ -using Nickvision.Aura.Keyring; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.IO; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// A dialog for creating a new account -/// -public partial class NewAccountDialog : Adw.Window -{ - private readonly NewAccountDialogController _controller; - private uint _currentPageNumber; - - [Gtk.Connect] private readonly Gtk.Button _backButton; - [Gtk.Connect] private readonly Adw.Carousel _carousel; - [Gtk.Connect] private readonly Gtk.Button _startButton; - [Gtk.Connect] private readonly Adw.EntryRow _accountNameRow; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _accountPasswordRow; - [Gtk.Connect] private readonly Adw.ActionRow _accountPasswordStrengthRow; - [Gtk.Connect] private readonly Gtk.LevelBar _accountPasswordStrengthBar; - [Gtk.Connect] private readonly Adw.EntryRow _folderRow; - [Gtk.Connect] private readonly Gtk.Button _selectFolderButton; - [Gtk.Connect] private readonly Adw.SwitchRow _overwriteRow; - [Gtk.Connect] private readonly Gtk.Button _nextButton1; - [Gtk.Connect] private readonly Adw.ComboRow _accountTypeRow; - [Gtk.Connect] private readonly Gtk.ToggleButton _incomeButton; - [Gtk.Connect] private readonly Gtk.ToggleButton _expenseButton; - [Gtk.Connect] private readonly Adw.ComboRow _transactionRemindersRow; - [Gtk.Connect] private readonly Gtk.Button _nextButton2; - [Gtk.Connect] private readonly Gtk.Label _reportedCurrencyLabel; - [Gtk.Connect] private readonly Adw.ExpanderRow _rowCustomCurrency; - [Gtk.Connect] private readonly Adw.EntryRow _customSymbolRow; - [Gtk.Connect] private readonly Adw.EntryRow _customCodeRow; - [Gtk.Connect] private readonly Adw.ComboRow _customAmountStyleRow; - [Gtk.Connect] private readonly Gtk.Entry _customDecimalSeparatorText; - [Gtk.Connect] private readonly Adw.ComboRow _customDecimalSeparatorRow; - [Gtk.Connect] private readonly Gtk.Entry _customGroupSeparatorText; - [Gtk.Connect] private readonly Adw.ComboRow _customGroupSeparatorRow; - [Gtk.Connect] private readonly Adw.ComboRow _customDecimalDigitsRow; - [Gtk.Connect] private readonly Gtk.Button _nextButton3; - [Gtk.Connect] private readonly Adw.EntryRow _importRow; - [Gtk.Connect] private readonly Gtk.Button _selectImportFileButton; - [Gtk.Connect] private readonly Gtk.Button _clearImportFileButton; - [Gtk.Connect] private readonly Gtk.Button _createButton; - - public event EventHandler? OnApply; - - /// - /// Constructs a NewAccountDialog - /// - /// Gtk.Builder - /// NewAccountDialogController - /// Gtk.Window - private NewAccountDialog(Gtk.Builder builder, NewAccountDialogController controller, Gtk.Window parent) : base(builder.GetPointer("_root"), false) - { - _controller = controller; - _currentPageNumber = 0; - //Dialog Settings - SetTransientFor(parent); - SetIconName(_controller.AppInfo.ID); - //Build UI - builder.Connect(this); - _backButton.OnClicked += GoBack; - _startButton.OnClicked += GoForward; - _accountNameRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - ValidateName(); - } - }; - _accountPasswordRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - ShowPasswordStrength(); - } - }; - _accountPasswordStrengthBar.SetMinValue(Convert.ToDouble((int)PasswordStrength.Blank)); - _accountPasswordStrengthBar.SetMaxValue(Convert.ToDouble((int)PasswordStrength.VeryStrong)); - _accountPasswordStrengthBar.AddOffsetValue("veryweak", 1); - _accountPasswordStrengthBar.AddOffsetValue("weak", 2); - _accountPasswordStrengthBar.AddOffsetValue("medium", 3); - _accountPasswordStrengthBar.AddOffsetValue("strong", 4); - _accountPasswordStrengthBar.AddOffsetValue("verystrong", 5); - _selectFolderButton.OnClicked += SelectFolder; - _overwriteRow.SetActive(_controller.OverwriteExisting); - _overwriteRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "active") - { - _controller.OverwriteExisting = _overwriteRow.GetActive(); - ValidateName(); - } - }; - _nextButton1.OnClicked += GoForward; - _incomeButton.OnToggled += OnTransactionTypeChanged; - _expenseButton.OnToggled += OnTransactionTypeChanged; - _expenseButton.BindProperty("active", _incomeButton, "active", (GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate | GObject.BindingFlags.InvertBoolean)); - _nextButton2.OnClicked += GoForward; - _rowCustomCurrency.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "expanded") - { - ValidateCurrency(); - } - }; - _customSymbolRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (_customSymbolRow.GetText().Length > 3) - { - _customSymbolRow.SetText(_customSymbolRow.GetText().Substring(0, 3)); - _customSymbolRow.SetPosition(-1); - } - ValidateCurrency(); - } - }; - _customCodeRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (_customCodeRow.GetText().Length > 3) - { - _customCodeRow.SetText(_customCodeRow.GetText().Substring(0, 3)); - _customCodeRow.SetPosition(-1); - } - ValidateCurrency(); - } - }; - _customAmountStyleRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - ValidateCurrency(); - } - }; - _customDecimalSeparatorRow.SetSelected(0); - _customDecimalSeparatorRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - if (_customDecimalSeparatorRow.GetSelected() == 2) - { - _customDecimalSeparatorText.SetVisible(true); - _customDecimalSeparatorText.GrabFocus(); - } - else - { - _customDecimalSeparatorText.SetVisible(false); - } - ValidateCurrency(); - } - }; - _customDecimalSeparatorText.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - ValidateCurrency(); - } - }; - _customGroupSeparatorRow.SetSelected(1); - _customGroupSeparatorRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - if (_customGroupSeparatorRow.GetSelected() == 4) - { - _customGroupSeparatorText.SetVisible(true); - _customGroupSeparatorText.GrabFocus(); - } - else - { - _customGroupSeparatorText.SetVisible(false); - } - ValidateCurrency(); - } - }; - _customGroupSeparatorText.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - ValidateCurrency(); - } - }; - _customDecimalDigitsRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected") - { - ValidateCurrency(); - } - }; - _nextButton3.OnClicked += GoForward; - _selectImportFileButton.OnClicked += SelectImportFile; - _clearImportFileButton.OnClicked += (sender, e) => - { - _controller.ImportFile = ""; - _importRow.SetText(""); - }; - _createButton.OnClicked += Apply; - //Load - _controller.Folder = GLib.Functions.GetUserSpecialDir(GLib.UserDirectory.DirectoryDocuments) ?? ""; - if (!Directory.Exists(_controller.Folder)) - { - _controller.Folder = $"{Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)}{Path.DirectorySeparatorChar}Documents"; - } - if (!Directory.Exists(_controller.Folder)) - { - _controller.Folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - } - _folderRow.SetText(Path.GetFileName(_controller.Folder)); - _accountTypeRow.SetSelected(0); - _incomeButton.SetActive(true); - _transactionRemindersRow.SetSelected(0); - _reportedCurrencyLabel.SetLabel($"{_("Your system reported that your currency is")}\n{CultureHelpers.ReportedCurrencyString}"); - } - - /// - /// Constructs a NewAccountDialog - /// - /// NewAccountDialogController - /// Gtk.Window - public NewAccountDialog(NewAccountDialogController controller, Gtk.Window parent) : this(Builder.FromFile("new_account_dialog.ui"), controller, parent) - { - } - - /// - /// Navigates the carousel backwards - /// - /// object? - /// EventArgs - private void GoBack(object? sender, EventArgs e) - { - _currentPageNumber--; - _carousel.ScrollTo(_carousel.GetNthPage(_currentPageNumber), true); - _backButton.SetVisible(_currentPageNumber > 0); - } - - /// - /// Navigates the carousel forwards - /// - /// object? - /// EventArgs - private void GoForward(object? sender, EventArgs e) - { - _currentPageNumber++; - _carousel.ScrollTo(_carousel.GetNthPage(_currentPageNumber), true); - _backButton.SetVisible(_currentPageNumber > 0); - } - - /// - /// Selects a folder to save the account - /// - /// object? - /// EventArgs - private async void SelectFolder(object? sender, EventArgs e) - { - var folderDialog = Gtk.FileDialog.New(); - folderDialog.SetTitle(_("Select Folder")); - if (Directory.Exists(_controller.Folder) && _controller.Folder != "/") - { - var folder = Gio.FileHelper.NewForPath(_controller.Folder); - folderDialog.SetInitialFolder(folder); - } - try - { - var file = await folderDialog.SelectFolderAsync(this); - _controller.Folder = file.GetPath(); - _folderRow.SetText(Path.GetFileName(_controller.Folder)); - ValidateName(); - } - catch (Exception exception) - { - Console.Error.WriteLine(exception); - } - } - - /// - /// Validates the name of the account - /// - private void ValidateName() - { - _accountNameRow.RemoveCssClass("error"); - _accountNameRow.SetTitle(_("Account Name")); - var checkStatus = _controller.UpdateName(_accountNameRow.GetText().Trim()); - if (checkStatus == NameCheckStatus.Valid) - { - _nextButton1.SetSensitive(!string.IsNullOrWhiteSpace(_accountNameRow.GetText())); - } - else - { - if (checkStatus.HasFlag(NameCheckStatus.AlreadyOpen)) - { - _accountNameRow.AddCssClass("error"); - _accountNameRow.SetTitle(_("Account Name (Opened)")); - } - if (checkStatus.HasFlag(NameCheckStatus.Exists)) - { - _accountNameRow.AddCssClass("error"); - _accountNameRow.SetTitle(_("Account Name (Exists)")); - } - _nextButton1.SetSensitive(false); - } - } - - /// - /// Calculates and shows the account password's strength - /// - private void ShowPasswordStrength() - { - if (!string.IsNullOrEmpty(_accountPasswordRow.GetText())) - { - var strength = Credential.GetPasswordStrength(_accountPasswordRow.GetText()); - _accountPasswordStrengthRow.SetVisible(true); - _accountPasswordStrengthBar.SetValue((double)strength); - } - else - { - _accountPasswordStrengthRow.SetVisible(false); - } - } - - /// - /// Occurs when either Income or Expense button is toggled - /// - /// Gtk.ToggleButton - /// EventArgs - private void OnTransactionTypeChanged(Gtk.ToggleButton sender, EventArgs e) - { - if (_incomeButton.GetActive()) - { - _incomeButton.AddCssClass("denaro-income"); - _expenseButton.RemoveCssClass("denaro-expense"); - } - else - { - _incomeButton.RemoveCssClass("denaro-income"); - _expenseButton.AddCssClass("denaro-expense"); - } - } - - /// - /// Validates the custom currency of the account - /// - private void ValidateCurrency() - { - var customDecimalSeparator = _customDecimalSeparatorRow.GetSelected() switch - { - 0 => ".", - 1 => ",", - 2 => _customDecimalSeparatorText.GetText() - }; - var customGroupSeparator = _customGroupSeparatorRow.GetSelected() switch - { - 0 => ".", - 1 => ",", - 2 => "'", - 3 => "", - 4 => _customGroupSeparatorText.GetText() - }; - var customDecimalDigits = _customDecimalDigitsRow.GetSelected() == 5 ? 99 : _customDecimalDigitsRow.GetSelected() + 2; - _customSymbolRow.RemoveCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol")); - _customCodeRow.RemoveCssClass("error"); - _customCodeRow.SetTitle(_("Currency Code")); - _customDecimalSeparatorRow.RemoveCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator")); - _customGroupSeparatorRow.RemoveCssClass("error"); - _customGroupSeparatorRow.SetTitle(_("Group Separator")); - var oldSymbol = _controller.Metadata.CustomCurrencySymbol; - var checkStatus = _controller.UpdateCurrency(_rowCustomCurrency.GetExpanded(), _customSymbolRow.GetText(), _customCodeRow.GetText(), (int?)_customAmountStyleRow.GetSelected(), customDecimalSeparator, customGroupSeparator, (int?)customDecimalDigits); - if (checkStatus == CurrencyCheckStatus.Valid) - { - if (oldSymbol != _controller.Metadata.CustomCurrencySymbol) - { - _customAmountStyleRow.SetModel(Gtk.StringList.New(_controller.CustomCurrencyAmountStyleStrings)); - } - _createButton.SetSensitive(true); - } - else - { - if (checkStatus.HasFlag(CurrencyCheckStatus.EmptyCurrencySymbol)) - { - _customSymbolRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Empty)")); - } - if (checkStatus.HasFlag(CurrencyCheckStatus.InvalidCurrencySymbol)) - { - _customSymbolRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Invalid)")); - } - if (checkStatus.HasFlag(CurrencyCheckStatus.EmptyCurrencyCode)) - { - _customCodeRow.AddCssClass("error"); - _customCodeRow.SetTitle(_("Currency Code (Empty)")); - } - if (checkStatus.HasFlag(CurrencyCheckStatus.EmptyDecimalSeparator)) - { - _customDecimalSeparatorRow.AddCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator (Empty)")); - } - if (checkStatus.HasFlag(CurrencyCheckStatus.SameSeparators)) - { - _customDecimalSeparatorRow.AddCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator (Invalid)")); - _customGroupSeparatorRow.AddCssClass("error"); - _customGroupSeparatorRow.SetTitle(_("Group Separator (Invalid)")); - } - if (checkStatus.HasFlag(CurrencyCheckStatus.SameSymbolAndDecimalSeparator)) - { - _customSymbolRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Invalid)")); - _customDecimalSeparatorRow.AddCssClass("error"); - _customDecimalSeparatorRow.SetTitle(_("Decimal Separator (Invalid)")); - } - if (checkStatus.HasFlag(CurrencyCheckStatus.SameSymbolAndGroupSeparator)) - { - _customSymbolRow.AddCssClass("error"); - _customSymbolRow.SetTitle(_("Currency Symbol (Invalid)")); - _customGroupSeparatorRow.AddCssClass("error"); - _customGroupSeparatorRow.SetTitle(_("Group Separator (Invalid)")); - } - _createButton.SetSensitive(false); - } - } - - /// - /// Selects a file to import data from - /// - /// object? - /// EventArgs - private async void SelectImportFile(object? sender, EventArgs e) - { - var openFileDialog = Gtk.FileDialog.New(); - openFileDialog.SetTitle(_("Import from Account")); - var filterAll = Gtk.FileFilter.New(); - filterAll.SetName($"{_("All files")} (*.csv, *.ofx, *.qif)"); - filterAll.AddPattern("*.csv"); - filterAll.AddPattern("*.CSV"); - filterAll.AddPattern("*.ofx"); - filterAll.AddPattern("*.OFX"); - filterAll.AddPattern("*.qif"); - filterAll.AddPattern("*.QIF"); - var filterCsv = Gtk.FileFilter.New(); - filterCsv.SetName("CSV (*.csv)"); - filterCsv.AddPattern("*.csv"); - filterCsv.AddPattern("*.CSV"); - var filterOfx = Gtk.FileFilter.New(); - filterOfx.SetName("Open Financial Exchange (*.ofx)"); - filterOfx.AddPattern("*.ofx"); - filterOfx.AddPattern("*.OFX"); - var filterQif = Gtk.FileFilter.New(); - filterQif.SetName("Quicken Format (*.qif)"); - filterQif.AddPattern("*.qif"); - filterQif.AddPattern("*.QIF"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filterAll); - filters.Append(filterCsv); - filters.Append(filterOfx); - filters.Append(filterQif); - openFileDialog.SetFilters(filters); - try - { - var file = await openFileDialog.OpenAsync(this); - _controller.ImportFile = file.GetPath(); - _importRow.SetText(_controller.ImportFile); - } - catch (Exception exception) - { - Console.Error.WriteLine(exception); - } - } - - /// - /// Applies the dialog - /// - /// object? - /// EventArgs - private void Apply(object? sender, EventArgs e) - { - _controller.Password = _accountPasswordRow.GetText(); - _controller.Metadata.AccountType = (AccountType)_accountTypeRow.GetSelected(); - _controller.Metadata.DefaultTransactionType = _incomeButton.GetActive() ? TransactionType.Income : TransactionType.Expense; - _controller.Metadata.TransactionRemindersThreshold = (RemindersThreshold)_transactionRemindersRow.GetSelected(); - OnApply?.Invoke(this, EventArgs.Empty); - } -} diff --git a/NickvisionMoney.GNOME/Views/PreferencesDialog.cs b/NickvisionMoney.GNOME/Views/PreferencesDialog.cs deleted file mode 100644 index 8a01617a9..000000000 --- a/NickvisionMoney.GNOME/Views/PreferencesDialog.cs +++ /dev/null @@ -1,185 +0,0 @@ -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Models; -using System; -using System.IO; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// The PreferencesDialog for the application -/// -public partial class PreferencesDialog : Adw.PreferencesWindow -{ - private readonly PreferencesViewController _controller; - private readonly Adw.Application _application; - private readonly Gtk.ColorDialog _transactionColorDialog; - private readonly Gtk.ColorDialog _transferColorDialog; - private readonly Gtk.ColorDialog _groupColorDialog; - private readonly Gtk.ColorDialog _accountCheckingColorDialog; - private readonly Gtk.ColorDialog _accountSavingsColorDialog; - private readonly Gtk.ColorDialog _accountBusinessColorDialog; - - [Gtk.Connect] private readonly Adw.ComboRow _themeRow; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _transactionColorButton; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _transferColorButton; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _groupColorButton; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _accountCheckingColorButton; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _accountSavingsColorButton; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _accountBusinessColorButton; - [Gtk.Connect] private readonly Adw.SwitchRow _nativeDigitsRow; - [Gtk.Connect] private readonly Adw.ComboRow _insertSeparatorRow; - [Gtk.Connect] private readonly Adw.EntryRow _csvBackupRow; - [Gtk.Connect] private readonly Gtk.Button _selectBackupFolderButton; - [Gtk.Connect] private readonly Gtk.Button _unsetBackupFolderButton; - - private PreferencesDialog(Gtk.Builder builder, PreferencesViewController controller, Adw.Application application, Gtk.Window parent) : base(builder.GetPointer("_root"), false) - { - //Window Settings - _controller = controller; - _application = application; - SetTransientFor(parent); - //Build UI - builder.Connect(this); - _themeRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - OnThemeChanged(); - } - }; - _transactionColorDialog = Gtk.ColorDialog.New(); - _transactionColorDialog.SetWithAlpha(false); - _transactionColorButton.SetDialog(_transactionColorDialog); - _transferColorDialog = Gtk.ColorDialog.New(); - _transferColorDialog.SetWithAlpha(false); - _transferColorButton.SetDialog(_transferColorDialog); - _groupColorDialog = Gtk.ColorDialog.New(); - _groupColorDialog.SetWithAlpha(false); - _groupColorButton.SetDialog(_groupColorDialog); - _accountCheckingColorDialog = Gtk.ColorDialog.New(); - _accountCheckingColorDialog.SetWithAlpha(false); - _accountCheckingColorButton.SetDialog(_accountCheckingColorDialog); - _accountSavingsColorDialog = Gtk.ColorDialog.New(); - _accountSavingsColorDialog.SetWithAlpha(false); - _accountSavingsColorButton.SetDialog(_accountSavingsColorDialog); - _accountBusinessColorDialog = Gtk.ColorDialog.New(); - _accountBusinessColorDialog.SetWithAlpha(false); - _accountBusinessColorButton.SetDialog(_accountBusinessColorDialog); - _selectBackupFolderButton.OnClicked += SelectBackupFolder; - _unsetBackupFolderButton.OnClicked += UnsetBackupFolder; - //Layout - OnHide += Hide; - //Load Config - _themeRow.SetSelected((uint)_controller.Theme); - GdkHelpers.RGBA.Parse(out var transactionColor, _controller.TransactionDefaultColor); - _transactionColorButton.SetExtRgba(transactionColor!.Value); - GdkHelpers.RGBA.Parse(out var transferColor, _controller.TransferDefaultColor); - _transferColorButton.SetExtRgba(transferColor!.Value); - GdkHelpers.RGBA.Parse(out var groupColor, _controller.GroupDefaultColor); - _groupColorButton.SetExtRgba(groupColor!.Value); - GdkHelpers.RGBA.Parse(out var accountCheckingColor, _controller.AccountCheckingColor); - _accountCheckingColorButton.SetExtRgba(accountCheckingColor!.Value); - GdkHelpers.RGBA.Parse(out var accountSavingsColor, _controller.AccountSavingsColor); - _accountSavingsColorButton.SetExtRgba(accountSavingsColor!.Value); - GdkHelpers.RGBA.Parse(out var accountBusinessColor, _controller.AccountBusinessColor); - _accountBusinessColorButton.SetExtRgba(accountBusinessColor!.Value); - _nativeDigitsRow.SetActive(_controller.UseNativeDigits); - _insertSeparatorRow.SetSelected((uint)_controller.InsertSeparator); - if (File.Exists(_controller.CSVBackupFolder)) - { - _csvBackupRow.SetText(_controller.CSVBackupFolder); - } - } - - /// - /// Constructs a PreferencesDialog - /// - /// PreferencesViewController - /// Adw.Application - /// Gtk.Window - public PreferencesDialog(PreferencesViewController controller, Adw.Application application, Gtk.Window parent) : this(Builder.FromFile("preferences_dialog.ui"), controller, application, parent) - { - } - - /// - /// Occurs when the dialog is hidden - /// - /// Gtk.Widget - /// EventArgs - private void Hide(Gtk.Widget sender, EventArgs e) - { - var color = _transactionColorButton.GetExtRgba(); - _controller.TransactionDefaultColor = color.ToString(); - color = _transferColorButton.GetExtRgba(); - _controller.TransferDefaultColor = color.ToString(); - color = _groupColorButton.GetExtRgba(); - _controller.GroupDefaultColor = color.ToString(); - color = _accountCheckingColorButton.GetExtRgba(); - _controller.AccountCheckingColor = color.ToString(); - color = _accountSavingsColorButton.GetExtRgba(); - _controller.AccountSavingsColor = color.ToString(); - color = _accountBusinessColorButton.GetExtRgba(); - _controller.AccountBusinessColor = color.ToString(); - _controller.UseNativeDigits = _nativeDigitsRow.GetActive(); - _controller.InsertSeparator = (InsertSeparator)_insertSeparatorRow.GetSelected(); - _controller.SaveConfiguration(); - Destroy(); - } - - /// - /// Occurs when the theme selection is changed - /// - private void OnThemeChanged() - { - _controller.Theme = (Theme)_themeRow.GetSelected(); - _application.StyleManager!.ColorScheme = _controller.Theme switch - { - Theme.System => Adw.ColorScheme.PreferLight, - Theme.Light => Adw.ColorScheme.ForceLight, - Theme.Dark => Adw.ColorScheme.ForceDark, - _ => Adw.ColorScheme.PreferLight - }; - } - - /// - /// Occurs when a button to select backup folder is clicked - /// - /// Gtk.Button - /// EventArgs - private async void SelectBackupFolder(Gtk.Button sender, EventArgs e) - { - var fileDialog = Gtk.FileDialog.New(); - fileDialog.SetTitle(_("Select Backup Folder")); - try - { - var folder = await fileDialog.SelectFolderAsync(this); - var path = folder!.GetPath(); - if (path.StartsWith("/run/user")) - { - AddToast(Adw.Toast.New(_("Can't access the selected folder, check Flatpak permissions."))); - } - else - { - _controller.CSVBackupFolder = path; - _csvBackupRow.SetText(path); - } - } - catch (Exception exception) - { - Console.Error.WriteLine(exception); - } - } - - /// - /// Occurs when a button to disable CSV backup is clicked - /// - /// Gtk.Button - /// EventArgs - private void UnsetBackupFolder(Gtk.Button sender, EventArgs e) - { - _controller.CSVBackupFolder = ""; - _csvBackupRow.SetText(""); - } -} diff --git a/NickvisionMoney.GNOME/Views/TransactionDialog.cs b/NickvisionMoney.GNOME/Views/TransactionDialog.cs deleted file mode 100644 index ca6bb9fd2..000000000 --- a/NickvisionMoney.GNOME/Views/TransactionDialog.cs +++ /dev/null @@ -1,716 +0,0 @@ -using NickvisionMoney.GNOME.Controls; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using SixLabors.ImageSharp; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Runtime.InteropServices; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// A dialog for managing a Transaction -/// -public partial class TransactionDialog : Adw.Window -{ - [StructLayout(LayoutKind.Sequential)] - public struct MoneyDateTime - { - ulong Usec; - nint Tz; - int Interval; - int Days; - int RefCount; - } - - [StructLayout(LayoutKind.Sequential)] - public struct TextIter - { - public nint dummy1; - public nint dummy2; - public int dummy3; - public int dummy4; - public int dummy5; - public int dummy6; - public int dummy7; - public int dummy8; - public nint dummy9; - public nint dummy10; - public int dummy11; - public int dummy12; - public int dummy13; - public nint dummy14; - } - - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial int g_date_time_get_year(ref MoneyDateTime datetime); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial int g_date_time_get_month(ref MoneyDateTime datetime); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial int g_date_time_get_day_of_month(ref MoneyDateTime datetime); - [DllImport("libadwaita-1.so.0")] - private static extern ref MoneyDateTime g_date_time_new_local(int year, int month, int day, int hour, int minute, double seconds); - [DllImport("libadwaita-1.so.0")] - private static extern ref MoneyDateTime gtk_calendar_get_date(nint calendar); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial void gtk_calendar_select_day(nint calendar, ref MoneyDateTime datetime); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial void gtk_text_buffer_get_bounds(nint buffer, ref TextIter startIter, ref TextIter endIter); - [LibraryImport("libadwaita-1.so.0", StringMarshalling = StringMarshalling.Utf8)] - private static partial string gtk_text_buffer_get_text(nint buffer, ref TextIter startIter, ref TextIter endIter, [MarshalAs(UnmanagedType.I1)] bool include_hidden_chars); - - private bool _constructing; - private readonly TransactionDialogController _controller; - private Image? _receipt; - private Gtk.ColorDialog _colorDialog; - private AutocompleteBox _autocompleteBox; - private bool _canHideAutobox; - private Dictionary _tags; - - [Gtk.Connect] private readonly Adw.ViewStack _stack; - [Gtk.Connect] private readonly Gtk.Button _backButton; - [Gtk.Connect] private readonly Gtk.Button _copyButton; - [Gtk.Connect] private readonly Gtk.Label _titleLabel; - [Gtk.Connect] private readonly Gtk.ScrolledWindow _scrolledWindow; - [Gtk.Connect] private readonly Gtk.Overlay _overlay; - [Gtk.Connect] private readonly Adw.EntryRow _descriptionRow; - [Gtk.Connect] private readonly Adw.EntryRow _amountRow; - [Gtk.Connect] private readonly Gtk.Label _currencyLabel; - [Gtk.Connect] private readonly Gtk.ToggleButton _incomeButton; - [Gtk.Connect] private readonly Gtk.ToggleButton _expenseButton; - [Gtk.Connect] private readonly Gtk.Calendar _dateCalendar; - [Gtk.Connect] private readonly Gtk.MenuButton _dateCalendarButton; - [Gtk.Connect] private readonly Gtk.Label _dateDashLabel; - [Gtk.Connect] private readonly Adw.ComboRow _repeatIntervalRow; - [Gtk.Connect] private readonly Gtk.Calendar _repeatEndDateCalendar; - [Gtk.Connect] private readonly Gtk.MenuButton _repeatEndDateCalendarButton; - [Gtk.Connect] private readonly Gtk.Button _repeatEndDateClearButton; - [Gtk.Connect] private readonly Adw.ComboRow _groupRow; - [Gtk.Connect] private readonly Gtk.DropDown _colorDropDown; - [Gtk.Connect] private readonly Gtk.ColorDialogButton _colorButton; - [Gtk.Connect] private readonly Gtk.MenuButton _tagsButton; - [Gtk.Connect] private readonly Gtk.Entry _addTagEntry; - [Gtk.Connect] private readonly Gtk.Button _addTagButton; - [Gtk.Connect] private readonly Gtk.ScrolledWindow _tagsScrolledWindow; - [Gtk.Connect] private readonly Gtk.FlowBox _tagsFlowBox; - [Gtk.Connect] private readonly Adw.ActionRow _extrasRow; - [Gtk.Connect] private readonly Adw.ActionRow _receiptRow; - [Gtk.Connect] private readonly Gtk.Button _viewReceiptButton; - [Gtk.Connect] private readonly Adw.ButtonContent _viewReceiptButtonContent; - [Gtk.Connect] private readonly Gtk.Button _deleteReceiptButton; - [Gtk.Connect] private readonly Gtk.Button _uploadReceiptButton; - [Gtk.Connect] private readonly Adw.ButtonContent _uploadReceiptButtonContent; - [Gtk.Connect] private readonly Gtk.TextView _notesView; - [Gtk.Connect] private readonly Gtk.Button _deleteButton; - [Gtk.Connect] private readonly Gtk.Button _applyButton; - - private readonly Gtk.EventControllerKey _descriptionKeyController; - private readonly Gtk.EventControllerKey _amountKeyController; - private readonly Gtk.ShortcutController _shortcutController; - - /// - /// Occurs when the apply button is clicked - /// - public event EventHandler? OnApply; - /// - /// Occurs when the delete button is clicked - /// - public event EventHandler? OnDelete; - - private TransactionDialog(Gtk.Builder builder, TransactionDialogController controller, Gtk.Window parent) : base(builder.GetPointer("_root"), false) - { - _constructing = true; - _controller = controller; - _canHideAutobox = true; - _tags = new Dictionary(); - //Dialog Settings - SetTransientFor(parent); - SetIconName(_controller.AppInfo.ID); - //Build UI - builder.Connect(this); - _scrolledWindow.GetVadjustment().OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "page-size") - { - if (_scrolledWindow.GetVadjustment().GetPageSize() < _scrolledWindow.GetVadjustment().GetUpper()) - { - _scrolledWindow.AddCssClass("scrolled-dialog"); - } - else - { - _scrolledWindow.RemoveCssClass("scrolled-dialog"); - } - } - }; - var idString = _controller.Transaction.Id.ToString(); - var nativeDigits = CultureInfo.CurrentCulture.NumberFormat.NativeDigits; - if (_controller.UseNativeDigits && "0" != nativeDigits[0]) - { - idString = idString.Replace("0", nativeDigits[0]) - .Replace("1", nativeDigits[1]) - .Replace("2", nativeDigits[2]) - .Replace("3", nativeDigits[3]) - .Replace("4", nativeDigits[4]) - .Replace("5", nativeDigits[5]) - .Replace("6", nativeDigits[6]) - .Replace("7", nativeDigits[7]) - .Replace("8", nativeDigits[8]) - .Replace("9", nativeDigits[9]); - } - _titleLabel.SetLabel($"{_("Transaction")} — {idString}"); - _deleteButton.SetVisible(_controller.IsEditing); - _deleteButton.OnClicked += (sender, e) => - { - Close(); - OnDelete?.Invoke(this, EventArgs.Empty); - }; - _copyButton.SetVisible(_controller.CanCopy); - _copyButton.OnClicked += (sender, e) => - { - _controller.CopyRequested = true; - Close(); - OnApply?.Invoke(this, EventArgs.Empty); - }; - _applyButton.SetLabel(_controller.IsEditing ? _("Apply") : _("Add")); - _applyButton.OnClicked += (sender, e) => - { - Close(); - OnApply?.Invoke(this, EventArgs.Empty); - }; - _backButton.OnClicked += (sender, e) => - { - _stack.SetVisibleChildName("main"); - _backButton.SetVisible(false); - _copyButton.SetVisible(true); - SetDefaultWidget(_applyButton); - }; - _extrasRow.OnActivated += (sender, e) => - { - _stack.SetVisibleChildName("extras"); - _backButton.SetVisible(true); - _copyButton.SetVisible(false); - }; - //Description - _autocompleteBox = new AutocompleteBox(_descriptionRow); - _autocompleteBox.SetSizeRequest(378, -1); - _autocompleteBox.SetMarginTop(66); - _autocompleteBox.SuggestionAccepted += (sender, e) => - { - _descriptionRow.SetText(e.Item1); - _descriptionRow.GrabFocus(); - _descriptionRow.SetPosition(-1); - _descriptionRow.SetActivatesDefault(true); - if (e.Item2.GroupId != -1) - { - _groupRow.SetSelected((uint)_controller.GroupNames.IndexOf(_controller.GetGroupNameFromId((uint)e.Item2.GroupId))); - _colorDropDown.SetSelected((e.Item2.UseGroupColor && _groupRow.GetSelected() != 0) ? 0u : 1u); - _colorDropDown.SetVisible(_groupRow.GetSelected() != 0); - _colorButton.SetVisible(_colorDropDown.GetSelected() == 1); - GdkHelpers.RGBA.Parse(out var transactionColor, e.Item2.RGBA); - _colorButton.SetExtRgba(transactionColor!.Value); - } - }; - _overlay.AddOverlay(_autocompleteBox); - _descriptionRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - var matchingDescriptions = _controller.GetDescriptionSuggestions(_descriptionRow.GetText()); - if (matchingDescriptions.Count > 0) - { - _autocompleteBox.UpdateSuggestions(matchingDescriptions); - } - _descriptionRow.SetActivatesDefault(matchingDescriptions.Count == 0); - _autocompleteBox.SetVisible(matchingDescriptions.Count > 0); - Validate(); - } - } - }; - _descriptionKeyController = Gtk.EventControllerKey.New(); - _descriptionKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _descriptionKeyController.OnKeyPressed += (sender, e) => - { - if (e.Keyval == 59) //semicolon - { - return true; - } - return false; - }; - _descriptionRow.AddController(_descriptionKeyController); - OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "default-width") - { - _autocompleteBox.SetSizeRequest(_descriptionRow.GetAllocatedWidth() - 24, -1); - } - }; - //Amount - _amountRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - if (!_constructing) - { - Validate(); - } - } - }; - _amountKeyController = Gtk.EventControllerKey.New(); - _amountKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _amountKeyController.OnKeyPressed += OnKeyPressed; - _amountRow.AddController(_amountKeyController); - _currencyLabel.SetLabel($"{_controller.CultureForNumberString.NumberFormat.CurrencySymbol} ({_controller.CultureForNumberString.NumberFormat.NaNSymbol})"); - //Type Box and Buttons - _incomeButton.OnToggled += OnTypeChanged; - _expenseButton.OnToggled += OnTypeChanged; - _expenseButton.BindProperty("active", _incomeButton, "active", (GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate | GObject.BindingFlags.InvertBoolean)); - //Date - _dateCalendar.SetName("calendarTransactions"); - _dateCalendar.OnDaySelected += OnDateChanged; - _dateCalendar.OnNextMonth += OnDateChanged; - _dateCalendar.OnNextYear += OnDateChanged; - _dateCalendar.OnPrevMonth += OnDateChanged; - _dateCalendar.OnPrevYear += OnDateChanged; - //Repeat Interval - _repeatIntervalRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - OnRepeatIntervalChanged(); - } - }; - //Repeat End Date - _repeatEndDateCalendar.OnDaySelected += OnRepeatEndDateChanged; - _repeatEndDateClearButton.OnClicked += OnRepeatEndDateClear; - //Group - _groupRow.SetModel(Gtk.StringList.New(_controller.GroupNames.ToArray())); - _groupRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - if (_groupRow.GetSelected() == 0) - { - _colorDropDown.SetSelected(1); - } - else - { - _colorDropDown.SetSelected(_controller.Transaction.RGBA == _controller.DefaultTransactionColor ? 0u : 1u); - } - _colorDropDown.SetVisible(_groupRow.GetSelected() != 0); - if (!_constructing) - { - Validate(); - } - } - }; - //Color - ((Gtk.Box)_colorButton.GetParent()).SetSpacing(4); - _colorDropDown.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "selected-item") - { - if (!_constructing) - { - _colorButton.SetVisible(_colorDropDown.GetSelected() == 1); - Validate(); - } - } - }; - _colorDialog = Gtk.ColorDialog.New(); - _colorDialog.SetWithAlpha(false); - _colorButton.SetDialog(_colorDialog); - _colorButton.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "rgba") - { - if (!_constructing) - { - Validate(); - } - } - }; - //Tags - var addTagKeyController = Gtk.EventControllerKey.New(); - addTagKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - addTagKeyController.OnKeyPressed += (sender, e) => - { - if (e.Keyval == 44) // Comma - { - return true; - } - return false; - }; - _addTagEntry.AddController(addTagKeyController); - _addTagButton.OnClicked += (sender, e) => - { - var tag = _addTagEntry.GetBuffer().GetText().Trim(); - if (!string.IsNullOrWhiteSpace(tag) && !_controller.AccountTags.Contains(tag)) - { - _controller.AccountTags.Add(tag); - UpdateTagsList(); - } - _addTagEntry.GetBuffer().SetText("", 0); - }; - //Receipt - _viewReceiptButton.OnClicked += OnViewReceipt; - _deleteReceiptButton.OnClicked += OnDeleteReceipt; - _uploadReceiptButton.OnClicked += OnUploadReceipt; - //Notes - _notesView.GetBuffer().OnChanged += (sender, e) => - { - if (!_constructing) - { - Validate(); - } - }; - //Shortcut Controller - _shortcutController = Gtk.ShortcutController.New(); - _shortcutController.SetScope(Gtk.ShortcutScope.Managed); - _shortcutController.AddShortcut(Gtk.Shortcut.New(Gtk.ShortcutTrigger.ParseString("Escape"), Gtk.CallbackAction.New((sender, e) => - { - if (_autocompleteBox.GetVisible()) - { - _descriptionRow.SetActivatesDefault(true); - _autocompleteBox.SetVisible(false); - } - else - { - Close(); - } - return true; - }))); - AddController(_shortcutController); - //Load Transaction - gtk_calendar_select_day(_dateCalendar.Handle, ref g_date_time_new_local(_controller.Transaction.Date.Year, _controller.Transaction.Date.Month, _controller.Transaction.Date.Day, 0, 0, 0.0)); - OnDateChanged(_dateCalendar, EventArgs.Empty); - _descriptionRow.SetText(_controller.Transaction.Description); - _amountRow.SetText(_controller.Transaction.Amount.ToAmountString(_controller.CultureForNumberString, _controller.UseNativeDigits, false)); - _incomeButton.SetActive(_controller.Transaction.Type == TransactionType.Income); - _repeatIntervalRow.SetSelected(_controller.RepeatIntervalIndex); - _dateDashLabel.SetVisible(_controller.Transaction.RepeatInterval != TransactionRepeatInterval.Never); - _repeatEndDateCalendarButton.SetVisible(_controller.Transaction.RepeatInterval != TransactionRepeatInterval.Never); - if (_controller.Transaction.RepeatEndDate != null) - { - gtk_calendar_select_day(_repeatEndDateCalendar.Handle, ref g_date_time_new_local(_controller.Transaction.RepeatEndDate.Value.Year, _controller.Transaction.RepeatEndDate.Value.Month, _controller.Transaction.RepeatEndDate.Value.Day, 0, 0, 0.0)); - OnRepeatEndDateChanged(_repeatEndDateCalendar, EventArgs.Empty); - } - else - { - _repeatEndDateCalendarButton.SetLabel(_("No End Date")); - } - if (_controller.Transaction.GroupId == -1) - { - _groupRow.SetSelected(0); - } - else - { - _groupRow.SetSelected((uint)_controller.GroupNames.IndexOf(_controller.GetGroupNameFromId((uint)_controller.Transaction.GroupId))); - } - _colorDropDown.SetSelected((_controller.Transaction.UseGroupColor && _groupRow.GetSelected() != 0) ? 0u : 1u); - _colorDropDown.SetVisible(_groupRow.GetSelected() != 0); - _colorButton.SetVisible(_colorDropDown.GetSelected() == 1); - GdkHelpers.RGBA.Parse(out var transactionColor, _controller.Transaction.RGBA); - _colorButton.SetExtRgba(transactionColor!.Value); - UpdateTagsList(); - _receipt = _controller.Transaction.Receipt; - _viewReceiptButton.SetSensitive(_controller.Transaction.Receipt != null); - _deleteReceiptButton.SetSensitive(_controller.Transaction.Receipt != null); - if (_controller.Transaction.Receipt != null) - { - _viewReceiptButtonContent.SetLabel(_("View")); - } - else - { - _uploadReceiptButtonContent.SetLabel(_("Upload")); - } - _notesView.GetBuffer().SetText(_controller.Transaction.Notes, _controller.Transaction.Notes.Length); - Validate(); - _constructing = false; - } - - /// - /// Constructs a TransactionDialog - /// - /// TransactionDialogController - /// Gtk.Window - public TransactionDialog(TransactionDialogController controller, Gtk.Window parent) : this(Builder.FromFile("transaction_dialog.ui"), controller, parent) - { - } - - /// - /// Callback for key-pressed signal - /// - /// Gtk.EventControllerKey - /// Gtk.EventControllerKey.KeyPressedSignalArgs - private bool OnKeyPressed(Gtk.EventControllerKey sender, Gtk.EventControllerKey.KeyPressedSignalArgs e) - { - if (_controller.InsertSeparator != InsertSeparator.Off) - { - if (e.Keyval == 65454 || e.Keyval == 65452 || e.Keyval == 2749 || (_controller.InsertSeparator == InsertSeparator.PeriodComma && (e.Keyval == 44 || e.Keyval == 46))) - { - var row = (Adw.EntryRow)(sender.GetWidget()); - if (!row.GetText().Contains(_controller.CultureForNumberString.NumberFormat.CurrencyDecimalSeparator)) - { - var position = row.GetPosition(); - row.SetText(row.GetText().Insert(position, _controller.CultureForNumberString.NumberFormat.CurrencyDecimalSeparator)); - row.SetPosition(position + Math.Min(_controller.CultureForNumberString.NumberFormat.CurrencyDecimalSeparator.Length, 2)); - } - return true; - } - } - return false; - } - - /// - /// Validates the dialog's input - /// - private void Validate() - { - var selectedDay = gtk_calendar_get_date(_dateCalendar.Handle); - var date = new DateOnly(g_date_time_get_year(ref selectedDay), g_date_time_get_month(ref selectedDay), g_date_time_get_day_of_month(ref selectedDay)); - var repeatEndDate = default(DateOnly?); - if (_repeatEndDateCalendarButton.GetLabel() != _("No End Date")) - { - var selectedEndDay = gtk_calendar_get_date(_repeatEndDateCalendar.Handle); - repeatEndDate = new DateOnly(g_date_time_get_year(ref selectedEndDay), g_date_time_get_month(ref selectedEndDay), g_date_time_get_day_of_month(ref selectedEndDay)); - } - var groupObject = (Gtk.StringObject)_groupRow.GetSelectedItem()!; - var tags = _tags.Where(x => x.Value).Select(x => x.Key).ToList(); - var iterStart = new TextIter(); - var iterEnd = new TextIter(); - gtk_text_buffer_get_bounds(_notesView.GetBuffer().Handle, ref iterStart, ref iterEnd); - var checkStatus = _controller.UpdateTransaction(date, _descriptionRow.GetText(), _incomeButton.GetActive() ? TransactionType.Income : TransactionType.Expense, (int)_repeatIntervalRow.GetSelected(), groupObject.GetString(), _colorButton.GetExtRgba().ToString(), _colorDropDown.GetSelected() == 0, tags, _amountRow.GetText(), _receipt, repeatEndDate, gtk_text_buffer_get_text(_notesView.GetBuffer().Handle, ref iterStart, ref iterEnd, false)); - _descriptionRow.RemoveCssClass("error"); - _descriptionRow.SetTitle(_("Description")); - _amountRow.RemoveCssClass("error"); - _amountRow.SetTitle(_("Amount")); - _repeatEndDateCalendarButton.RemoveCssClass("error"); - _repeatEndDateCalendarButton.SetTooltipText(_("Repeat End Date")); - _receiptRow.RemoveCssClass("error"); - _receiptRow.SetTitle(_("Receipt")); - if (checkStatus == TransactionCheckStatus.Valid) - { - _applyButton.SetSensitive(true); - } - else - { - if (checkStatus.HasFlag(TransactionCheckStatus.EmptyDescription)) - { - _descriptionRow.AddCssClass("error"); - _descriptionRow.SetTitle(_("Description (Empty)")); - } - if (checkStatus.HasFlag(TransactionCheckStatus.InvalidAmount)) - { - _amountRow.AddCssClass("error"); - _amountRow.SetTitle(_("Amount (Invalid)")); - } - if (checkStatus.HasFlag(TransactionCheckStatus.InvalidRepeatEndDate)) - { - _repeatEndDateCalendarButton.AddCssClass("error"); - _repeatEndDateCalendarButton.SetTooltipText(_("Repeat End Date (Invalid)")); - } - _applyButton.SetSensitive(false); - if (checkStatus.HasFlag(TransactionCheckStatus.CannotAccessReceipt)) - { - _receiptRow.AddCssClass("error"); - _receiptRow.SetTitle(_("Receipt (File Inaccessible)")); - _applyButton.SetSensitive(true); - } - } - } - - /// - /// Occurs when either Income or Expense button is toggled - /// - /// Gtk.ToggleButton - /// EventArgs - private void OnTypeChanged(Gtk.ToggleButton sender, EventArgs e) - { - if (_incomeButton.GetActive()) - { - _incomeButton.AddCssClass("denaro-income"); - _expenseButton.RemoveCssClass("denaro-expense"); - } - else - { - _incomeButton.RemoveCssClass("denaro-income"); - _expenseButton.AddCssClass("denaro-expense"); - } - if (!_constructing) - { - Validate(); - } - } - - /// - /// Occurs when the date in the calendar is changed - /// - /// Gtk.Calendar - /// EventArgs - private void OnDateChanged(Gtk.Calendar sender, EventArgs e) - { - var selectedDay = gtk_calendar_get_date(sender.Handle); - var date = new DateOnly(g_date_time_get_year(ref selectedDay), g_date_time_get_month(ref selectedDay), g_date_time_get_day_of_month(ref selectedDay)); - _dateCalendarButton.SetLabel(date.ToString("d", CultureHelpers.DateCulture)); - if (!_constructing) - { - Validate(); - } - } - - /// - /// Occurs when the repeat interval is changed - /// - private void OnRepeatIntervalChanged() - { - var isRepeatIntervalNever = ((Gtk.StringObject)_repeatIntervalRow.SelectedItem!).String == _("Never"); - _dateDashLabel.SetVisible(!isRepeatIntervalNever); - _repeatEndDateCalendarButton.SetVisible(!isRepeatIntervalNever); - if (!_constructing) - { - Validate(); - } - } - - /// - /// Occurs when the repeat end date in the calendar is changed - /// - /// Gtk.Calendar - /// EventArgs - private void OnRepeatEndDateChanged(Gtk.Calendar sender, EventArgs e) - { - var selectedDay = gtk_calendar_get_date(sender.Handle); - var date = new DateOnly(g_date_time_get_year(ref selectedDay), g_date_time_get_month(ref selectedDay), g_date_time_get_day_of_month(ref selectedDay)); - _repeatEndDateCalendarButton.SetLabel(date.ToString("d", CultureHelpers.DateCulture)); - if (!_constructing) - { - Validate(); - } - } - - /// - /// Occurs when the clear repeat end date in clicked - /// - /// Gtk.Calendar - /// EventArgs - private void OnRepeatEndDateClear(Gtk.Button sender, EventArgs e) - { - _repeatEndDateCalendarButton.SetLabel(_("No End Date")); - _repeatEndDateCalendarButton.GetPopover().Popdown(); - if (!_constructing) - { - Validate(); - } - } - - /// - /// Updates the list of tags - /// - private void UpdateTagsList() - { - foreach (var tag in _controller.AccountTags) - { - if (!_tags.ContainsKey(tag)) - { - var tagButton = new TagButton(tag); - _tagsFlowBox.Append(tagButton); - _tags.Add(tag, false); - if (_controller.Transaction.Tags.Contains(tag)) - { - tagButton.SetActive(true); - _tags[tag] = true; - } - tagButton.FilterChanged += (sender, e) => - { - _tags[tag] = e.Filter; - _tagsButton.SetLabel(_n("{0} tag", "{0} tags", _tags.Count(x => x.Value), _tags.Count(x => x.Value))); - Validate(); - }; - } - } - _tagsScrolledWindow.SetVisible(_tags.Count > 0); - _tagsButton.SetLabel(_n("{0} tag", "{0} tags", _tags.Count(x => x.Value), _tags.Count(x => x.Value))); - } - - /// - /// Occurs when the view receipt button is clicked - /// - /// Gtk.Button - /// EventArgs - private async void OnViewReceipt(Gtk.Button sender, EventArgs e) => await _controller.OpenReceiptImageAsync(); - - /// - /// Occurs when the delete receipt button is clicked - /// - /// Gtk.Button - /// EventArgs - private void OnDeleteReceipt(Gtk.Button sender, EventArgs e) - { - _receipt = null; - _viewReceiptButton.SetSensitive(false); - _viewReceiptButtonContent.SetLabel(""); - _deleteReceiptButton.SetSensitive(false); - _uploadReceiptButtonContent.SetLabel(_("Upload")); - Validate(); - } - - /// - /// Occurs when the upload receipt button is clicked - /// - /// Gtk.Button - /// EventArgs - private async void OnUploadReceipt(Gtk.Button sender, EventArgs e) - { - var openFileDialog = Gtk.FileDialog.New(); - openFileDialog.SetTitle(_("Receipt")); - var filterAll = Gtk.FileFilter.New(); - filterAll.SetName($"{_("All files")} (*.jpg, *.jpeg, *.png, *.pdf)"); - filterAll.AddPattern("*.jpg"); - filterAll.AddPattern("*.jpeg"); - filterAll.AddPattern("*.png"); - filterAll.AddPattern("*.pdf"); - var filterJpeg = Gtk.FileFilter.New(); - filterJpeg.SetName("JPEG (*.jpg, *.jpeg)"); - filterJpeg.AddPattern("*.jpg"); - filterJpeg.AddPattern("*.jpeg"); - var filterPng = Gtk.FileFilter.New(); - filterPng.SetName("PNG (*.png)"); - filterPng.AddPattern("*.png"); - var filterPdf = Gtk.FileFilter.New(); - filterPdf.SetName("PDF (*.pdf)"); - filterPdf.AddPattern("*.pdf"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filterAll); - filters.Append(filterJpeg); - filters.Append(filterPng); - filters.Append(filterPdf); - openFileDialog.SetFilters(filters); - try - { - var file = await openFileDialog.OpenAsync(this); - _receipt = await _controller.GetImageFromPathAsync(file!.GetPath()); - _viewReceiptButton.SetSensitive(_receipt != null); - _deleteReceiptButton.SetSensitive(_receipt != null); - if (_receipt != null) - { - _viewReceiptButtonContent.SetLabel(_("View")); - } - else - { - _uploadReceiptButtonContent.SetLabel(_("Upload")); - } - Validate(); - } - catch (Exception ex) - { - Console.Error.WriteLine(ex); - } - } -} diff --git a/NickvisionMoney.GNOME/Views/TransferDialog.cs b/NickvisionMoney.GNOME/Views/TransferDialog.cs deleted file mode 100644 index ab2b0f6a4..000000000 --- a/NickvisionMoney.GNOME/Views/TransferDialog.cs +++ /dev/null @@ -1,326 +0,0 @@ -using NickvisionMoney.GNOME.Controls; -using NickvisionMoney.GNOME.Helpers; -using NickvisionMoney.Shared.Controllers; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.GNOME.Views; - -/// -/// A dialog for managing a Transfer -/// -public partial class TransferDialog : Adw.Window -{ - private readonly TransferDialogController _controller; - private readonly Gtk.Window _parentWindow; - - [Gtk.Connect] private readonly Gtk.Button _selectAccountButton; - [Gtk.Connect] private readonly Gtk.MenuButton _recentAccountsButton; - [Gtk.Connect] private readonly Gtk.Popover _recentAccountsPopover; - [Gtk.Connect] private readonly Adw.PreferencesGroup _recentAccountsGroup; - [Gtk.Connect] private readonly Adw.ActionRow _destinationAccountRow; - [Gtk.Connect] private readonly Adw.PasswordEntryRow _destinationPasswordRow; - [Gtk.Connect] private readonly Gtk.Label _currencyLabel; - [Gtk.Connect] private readonly Adw.EntryRow _amountRow; - [Gtk.Connect] private readonly Adw.PreferencesGroup _conversionRateGroup; - [Gtk.Connect] private readonly Adw.ExpanderRow _rowUseCustomRates; - [Gtk.Connect] private readonly Adw.EntryRow _sourceCurrencyRow; - [Gtk.Connect] private readonly Adw.EntryRow _destinationCurrencyRow; - [Gtk.Connect] private readonly Gtk.Label _conversionResultLabel; - [Gtk.Connect] private readonly Gtk.Button _transferButton; - - private readonly Gtk.EventControllerKey _amountKeyController; - private readonly Gtk.EventControllerKey _sourceCurrencyKeyController; - private readonly Gtk.EventControllerKey _destCurrencyKeyController; - - public event EventHandler? OnApply; - - private TransferDialog(Gtk.Builder builder, TransferDialogController controller, Gtk.Window parent) : base(builder.GetPointer("_root"), false) - { - _controller = controller; - _parentWindow = parent; - //Build UI - builder.Connect(this); - //Dialog Settings - SetTransientFor(parent); - SetIconName(_controller.AppInfo.ID); - //Destination Password Row - _destinationPasswordRow.OnApply += OnApplyDestinationPassword; - //Select Account Button - _selectAccountButton.OnClicked += OnSelectAccount; - //Transfer Button - _transferButton.OnClicked += (sender, e) => OnApply?.Invoke(this, EventArgs.Empty); - //Amount - _currencyLabel.SetLabel($"{_controller.CultureForSourceNumberString.NumberFormat.CurrencySymbol} ({_controller.CultureForSourceNumberString.NumberFormat.NaNSymbol})"); - _amountRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - Validate(); - } - }; - _amountKeyController = Gtk.EventControllerKey.New(); - _amountKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _amountKeyController.OnKeyPressed += OnKeyPressedSource; - _amountRow.AddController(_amountKeyController); - //Conversion Rate - _conversionRateGroup.OnNotify += async (sender, e) => - { - if (e.Pspec.GetName() == "visible") - { - await SetupConversionRateGroupAsync(); - } - }; - _rowUseCustomRates.OnNotify += async (sender, e) => - { - if (e.Pspec.GetName() == "enable-expansion") - { - if (_rowUseCustomRates.GetEnableExpansion() == false) - { - await SetupConversionRateGroupAsync(); - } - } - }; - _sourceCurrencyRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - Validate(); - } - }; - _sourceCurrencyKeyController = Gtk.EventControllerKey.New(); - _sourceCurrencyKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _sourceCurrencyKeyController.OnKeyPressed += OnKeyPressedSource; - _sourceCurrencyRow.AddController(_sourceCurrencyKeyController); - _destinationCurrencyRow.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") - { - Validate(); - } - }; - _destCurrencyKeyController = Gtk.EventControllerKey.New(); - _destCurrencyKeyController.SetPropagationPhase(Gtk.PropagationPhase.Capture); - _destCurrencyKeyController.OnKeyPressed += OnKeyPressedDest; - _destinationCurrencyRow.AddController(_destCurrencyKeyController); - //Load - if (_controller.RecentAccounts.Count > 0) - { - foreach (var recentAccount in _controller.RecentAccounts) - { - var row = new RecentAccountRow(recentAccount, _controller.GetColorForAccountType(recentAccount.Type), false, false); - row.Selected += (sender, e) => - { - _recentAccountsPopover.Popdown(); - _destinationAccountRow.SetSubtitle(e.Path); - _destinationPasswordRow.SetVisible(false); - _destinationPasswordRow.SetSensitive(true); - _destinationPasswordRow.SetText(""); - _amountRow.SetText(""); - _conversionRateGroup.SetVisible(false); - _sourceCurrencyRow.SetText(""); - _destinationCurrencyRow.SetText(""); - Validate(); - }; - _recentAccountsGroup.Add(row); - } - } - else - { - _recentAccountsButton.SetSensitive(false); - } - _amountRow.SetText(_controller.Transfer.SourceAmount.ToAmountString(_controller.CultureForSourceNumberString, _controller.UseNativeDigits, false)); - Validate(); - } - - /// - /// Constructs a TransferDialog - /// - /// TransferDialogController - /// Gtk.Window - public TransferDialog(TransferDialogController controller, Gtk.Window parent) : this(Builder.FromFile("transfer_dialog.ui"), controller, parent) - { - } - - /// - /// Validates the dialog's input - /// - private void Validate() - { - var checkStatus = _controller.UpdateTransfer(_destinationAccountRow.GetSubtitle() ?? "", _destinationPasswordRow.GetText(), _amountRow.GetText(), _sourceCurrencyRow.GetText(), _destinationCurrencyRow.GetText()); - _destinationAccountRow.RemoveCssClass("error"); - _destinationAccountRow.SetTitle(_("Destination Account")); - _destinationPasswordRow.RemoveCssClass("error"); - _destinationPasswordRow.SetTitle(_("Destination Account Password")); - _amountRow.RemoveCssClass("error"); - _amountRow.SetTitle(_("Amount")); - _amountRow.SetVisible(true); - _sourceCurrencyRow.RemoveCssClass("error"); - _sourceCurrencyRow.SetTitle(_controller.SourceCurrencyCode); - _destinationCurrencyRow.RemoveCssClass("error"); - _destinationCurrencyRow.SetTitle(_controller.DestinationCurrencyCode ?? ""); - if (checkStatus == TransferCheckStatus.Valid) - { - _conversionResultLabel.SetText(_controller.Transfer.DestinationAmount.ToAmountString(_controller.CultureForDestNumberString, _controller.UseNativeDigits, overwriteDecimal: true)); - _transferButton.SetSensitive(true); - } - else - { - if (checkStatus.HasFlag(TransferCheckStatus.InvalidDestPath)) - { - _destinationAccountRow.AddCssClass("error"); - _destinationAccountRow.SetTitle(_("Destination Account (Invalid)")); - _amountRow.SetVisible(false); - } - if (checkStatus.HasFlag(TransferCheckStatus.DestAccountRequiresPassword)) - { - _destinationPasswordRow.SetVisible(true); - _destinationPasswordRow.AddCssClass("error"); - _destinationPasswordRow.SetTitle(_("Destination Account Password (Required)")); - _amountRow.SetVisible(false); - } - if (checkStatus.HasFlag(TransferCheckStatus.DestAccountPasswordInvalid)) - { - _destinationPasswordRow.AddCssClass("error"); - _destinationPasswordRow.SetTitle(_("Destination Account Password (Invalid)")); - _amountRow.SetVisible(false); - } - if (checkStatus.HasFlag(TransferCheckStatus.InvalidAmount)) - { - _amountRow.AddCssClass("error"); - _amountRow.SetTitle(_("Amount (Invalid)")); - } - if (checkStatus.HasFlag(TransferCheckStatus.InvalidConversionRate)) - { - _conversionRateGroup.SetVisible(true); - _sourceCurrencyRow.AddCssClass("error"); - _sourceCurrencyRow.SetTitle(_controller.SourceCurrencyCode); - _destinationCurrencyRow.AddCssClass("error"); - _destinationCurrencyRow.SetTitle(_controller.DestinationCurrencyCode!); - _conversionResultLabel.SetText(_("N/A")); - } - _transferButton.SetSensitive(false); - } - if (!checkStatus.HasFlag(TransferCheckStatus.DestAccountRequiresPassword) && !checkStatus.HasFlag(TransferCheckStatus.DestAccountPasswordInvalid)) - { - _destinationPasswordRow.SetSensitive(false); - } - } - - /// - /// Occurs when Select Destination Account button is clicked - /// - /// Gtk.Button - /// EventArgs - private async void OnSelectAccount(Gtk.Button sender, EventArgs e) - { - var openFileDialog = Gtk.FileDialog.New(); - openFileDialog.SetTitle(_("Select Account")); - var filter = Gtk.FileFilter.New(); - filter.SetName($"{_("Nickvision Denaro Account")} (*.nmoney)"); - filter.AddPattern("*.nmoney"); - filter.AddPattern("*.NMONEY"); - var filters = Gio.ListStore.New(Gtk.FileFilter.GetGType()); - filters.Append(filter); - openFileDialog.SetFilters(filters); - try - { - var file = await openFileDialog.OpenAsync(this); - _destinationAccountRow.SetSubtitle(file!.GetPath() ?? ""); - _destinationPasswordRow.SetVisible(false); - _destinationPasswordRow.SetSensitive(true); - _destinationPasswordRow.SetText(""); - _amountRow.SetText(""); - _conversionRateGroup.SetVisible(false); - _sourceCurrencyRow.SetText(""); - _destinationCurrencyRow.SetText(""); - Validate(); - } - catch (Exception exception) - { - Console.Error.WriteLine(exception); - } - } - - /// - /// Occurs when the apply destination password button is clicked - /// - /// Adw.EntryRow - /// EventArgs - private void OnApplyDestinationPassword(Adw.EntryRow sender, EventArgs e) => Validate(); - - /// - /// Callback for key-pressed signal for source entries - /// - /// Gtk.EventControllerKey - /// Gtk.EventControllerKey.KeyPressedSignalArgs - private bool OnKeyPressedSource(Gtk.EventControllerKey sender, Gtk.EventControllerKey.KeyPressedSignalArgs e) - { - if (_controller.InsertSeparator != InsertSeparator.Off) - { - if (e.Keyval == 65454 || e.Keyval == 65452 || e.Keyval == 2749 || (_controller.InsertSeparator == InsertSeparator.PeriodComma && (e.Keyval == 44 || e.Keyval == 46))) - { - var row = (Adw.EntryRow)(sender.GetWidget()); - if (!row.GetText().Contains(_controller.CultureForSourceNumberString.NumberFormat.CurrencyDecimalSeparator)) - { - var position = row.GetPosition(); - row.SetText(row.GetText().Insert(position, _controller.CultureForSourceNumberString.NumberFormat.CurrencyDecimalSeparator)); - row.SetPosition(position + Math.Min(_controller.CultureForSourceNumberString.NumberFormat.CurrencyDecimalSeparator.Length, 2)); - } - return true; - } - } - return false; - } - - /// - /// Callback for key-pressed signal for dest entries - /// - /// Gtk.EventControllerKey - /// Gtk.EventControllerKey.KeyPressedSignalArgs - private bool OnKeyPressedDest(Gtk.EventControllerKey sender, Gtk.EventControllerKey.KeyPressedSignalArgs e) - { - if (_controller.InsertSeparator != InsertSeparator.Off) - { - if (e.Keyval == 65454 || e.Keyval == 65452 || e.Keyval == 2749 || (_controller.InsertSeparator == InsertSeparator.PeriodComma && (e.Keyval == 44 || e.Keyval == 46))) - { - var row = (Adw.EntryRow)(sender.GetWidget()); - if (!row.GetText().Contains(_controller.CultureForDestNumberString.NumberFormat.CurrencyDecimalSeparator)) - { - var position = row.GetPosition(); - row.SetText(row.GetText().Insert(position, _controller.CultureForDestNumberString.NumberFormat.CurrencyDecimalSeparator)); - row.SetPosition(position + Math.Min(_controller.CultureForDestNumberString.NumberFormat.CurrencyDecimalSeparator.Length, 2)); - } - return true; - } - } - return false; - } - - /// - /// Sets up the ConversionRateGroup - /// - private async Task SetupConversionRateGroupAsync() - { - if (_conversionRateGroup.Visible) - { - var res = await _controller.GetConversionRateOnlineAsync(); - if (string.IsNullOrWhiteSpace(res.Source) || string.IsNullOrWhiteSpace(res.Destination)) - { - _sourceCurrencyRow.SetText(""); - _destinationCurrencyRow.SetText(""); - _rowUseCustomRates.SetShowEnableSwitch(false); - _rowUseCustomRates.SetEnableExpansion(true); - } - else - { - _sourceCurrencyRow.SetText(res.Source); - _destinationCurrencyRow.SetText(res.Destination); - _rowUseCustomRates.SetShowEnableSwitch(true); - } - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.GNOME/nuget-sources.json b/NickvisionMoney.GNOME/nuget-sources.json deleted file mode 100644 index 53af2384c..000000000 --- a/NickvisionMoney.GNOME/nuget-sources.json +++ /dev/null @@ -1,982 +0,0 @@ -[ - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/ace4896.dbus.services.secrets/1.2.0/ace4896.dbus.services.secrets.1.2.0.nupkg", - "sha512": "09f977614489970e543c9fa09c3eda8e120f076f889145c67185d8fff2a42909d944c90970f6be505fcd1c6060ff5e5b4ed80aafbbe8b91f70ef80feed15a8b0", - "dest": "nuget-sources", - "dest-filename": "ace4896.dbus.services.secrets.1.2.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/docnet.core/2.6.0/docnet.core.2.6.0.nupkg", - "sha512": "0a11668cbc07fc20a18277f8a6aa7d4540185d560a0ba35a2e63af27d0e25c906766f77371deffd22d031e0494f51325f1fa55e2a3eba05b5d00bf30fa8cb9c0", - "dest": "nuget-sources", - "dest-filename": "docnet.core.2.6.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/fuzzysharp/2.0.2/fuzzysharp.2.0.2.nupkg", - "sha512": "fc87869a485d5d1dbf63aeac7a96ef783b15667afb106b8a68afcb7ff8df9e1e4b1dcf7a3dbacec4fb01588ec6c551281a2bf833a8b07d373fc5189c5262c49a", - "dest": "nuget-sources", - "dest-filename": "fuzzysharp.2.0.2.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gettext.net/1.9.14/gettext.net.1.9.14.nupkg", - "sha512": "41a61edfe82c11c029150748b641e80b59cfc447eb91f0f030ae9e345e54f46fc901946e12684476fa43d024f4145a3a2377861a619587643cb5fa5d5145cb4a", - "dest": "nuget-sources", - "dest-filename": "gettext.net.1.9.14.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.adw-1/0.5.0-preview.3/gircore.adw-1.0.5.0-preview.3.nupkg", - "sha512": "bc03a1da5da5d347b31940abf3a5f8fa96aead7cbd8d327534a2e6bcaf099c405b38d9a567d3f8518e7ba426a9b613215d1adf81c6694443b44d4bc5206a9cf9", - "dest": "nuget-sources", - "dest-filename": "gircore.adw-1.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.cairo-1.0/0.5.0-preview.3/gircore.cairo-1.0.0.5.0-preview.3.nupkg", - "sha512": "b18114ebbd7873dca74bb6b8067fa995291f293f40df1bad824b558b67331a6c574fbbce8c7f1be93fe38314521a14032a4ee67b4abc361b91cc8be6d3904edb", - "dest": "nuget-sources", - "dest-filename": "gircore.cairo-1.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.freetype2-2.0/0.5.0-preview.3/gircore.freetype2-2.0.0.5.0-preview.3.nupkg", - "sha512": "595e3df2de4500daa26532499d464384ef845ac48e2b84caf0f131c707f6645a96bc5efc1fd25178bce1ae93fcebdab58287fc772bc7a5ecff1a31cc8ac9adee", - "dest": "nuget-sources", - "dest-filename": "gircore.freetype2-2.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.gdk-4.0/0.5.0-preview.3/gircore.gdk-4.0.0.5.0-preview.3.nupkg", - "sha512": "84ec1cf45dee379c72a38169138f663c7c0a52760ea1ab2af71a45e1645d7c63db438560ccacc7bc5adb0f212dab63eccf23b1b64297124031c7183bccfe9090", - "dest": "nuget-sources", - "dest-filename": "gircore.gdk-4.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.gdkpixbuf-2.0/0.5.0-preview.3/gircore.gdkpixbuf-2.0.0.5.0-preview.3.nupkg", - "sha512": "6d5cef26b7b8313e0d8da4f7058b0c1bd209980977e2f767e99562cb9cb6e0cb2600c1d7c579a3d04f37bd970190dc076489c714cf00809e491d3e526fefd431", - "dest": "nuget-sources", - "dest-filename": "gircore.gdkpixbuf-2.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.gio-2.0/0.5.0-preview.3/gircore.gio-2.0.0.5.0-preview.3.nupkg", - "sha512": "90ff231d0231e0b2c1f6d7ae9d282b26da573784a860e6905abd75312af87c095e9e540059fe27053ced4790ca43f0fdadcc994fcd235b2ba162c5d347bda4a1", - "dest": "nuget-sources", - "dest-filename": "gircore.gio-2.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.glib-2.0/0.5.0-preview.3/gircore.glib-2.0.0.5.0-preview.3.nupkg", - "sha512": "cfc4bcacceb07848e5511d1fafbe537b91ea1cee179309cd40a9963fb19e0e7b0fee8034d0fbc597629a7e719ed259254f1d9e271ddbd8015a527a425260ad83", - "dest": "nuget-sources", - "dest-filename": "gircore.glib-2.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.gobject-2.0/0.5.0-preview.3/gircore.gobject-2.0.0.5.0-preview.3.nupkg", - "sha512": "4f2773abf1c3482414aab801140e20d553dfdf481302590831dbc56bd9984dde89fb56086c66102ecc32105eecdb998c9f4f288b4c12186b8b91fdbabe6d56c7", - "dest": "nuget-sources", - "dest-filename": "gircore.gobject-2.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.graphene-1.0/0.5.0-preview.3/gircore.graphene-1.0.0.5.0-preview.3.nupkg", - "sha512": "ca69dbe84df37958797e2371ecb379864bae0afb6262269c0b38dd28594aca9c21fe6d1b85675a051ffad939b1f354200f5f8fb2b44c3012d4161155c066ec12", - "dest": "nuget-sources", - "dest-filename": "gircore.graphene-1.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.gsk-4.0/0.5.0-preview.3/gircore.gsk-4.0.0.5.0-preview.3.nupkg", - "sha512": "efcd99e9cfe71f354bf6ff45ce12bcf3457e46c47804b04609ce933ffa90f768bfeaae80f35c2c6ac31224a171f805e0f61c7a7d1a4ea274105eee1c01512b7b", - "dest": "nuget-sources", - "dest-filename": "gircore.gsk-4.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.gtk-4.0/0.5.0-preview.3/gircore.gtk-4.0.0.5.0-preview.3.nupkg", - "sha512": "0c6d8eb8922691ce4aad28a2bb33ac20b99174b1171d660e043cb577f66cb9599b960a606c8ea252217e810e5372f5ae7c3bc9ab07bb8447705210fa4a7f31be", - "dest": "nuget-sources", - "dest-filename": "gircore.gtk-4.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.harfbuzz-0.0/0.5.0-preview.3/gircore.harfbuzz-0.0.0.5.0-preview.3.nupkg", - "sha512": "c1ddcc678008c40957dbf2d191551603bbf85b363950df640707c486ba06d7e228f2a8d56026c34e9bf2263b74d605bfbd018cf350cfb6b9a32438de4dbdd7a7", - "dest": "nuget-sources", - "dest-filename": "gircore.harfbuzz-0.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.pango-1.0/0.5.0-preview.3/gircore.pango-1.0.0.5.0-preview.3.nupkg", - "sha512": "86421af37e63fe5b4d09aa2c64372923aa2271b0755c8d0afd7ee7c0e00da9efa6bd20ee0a34c883082af3c42f6f24e6b14bb644d7c0c4ba9c1895c6f0d4de4d", - "dest": "nuget-sources", - "dest-filename": "gircore.pango-1.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/gircore.pangocairo-1.0/0.5.0-preview.3/gircore.pangocairo-1.0.0.5.0-preview.3.nupkg", - "sha512": "dee39b1fbfb478c0faa013ed4e9cd3e5aa6096844676703a9640e004bf87664bdd0a747c88f1f1ce6d3ed66d3fed9cb854209ce2c67f9238e2eafa478e31dbdc", - "dest": "nuget-sources", - "dest-filename": "gircore.pangocairo-1.0.0.5.0-preview.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/harfbuzzsharp/7.3.0/harfbuzzsharp.7.3.0.nupkg", - "sha512": "5d1887b3cdc22334132f8fff8b2ac1f57cb54e9fcd25d21d32f8f86c7c694e86739c067e8b1ae3da10c1b1b3417f27b640b0e7890101ee2d420fba3feba580b5", - "dest": "nuget-sources", - "dest-filename": "harfbuzzsharp.7.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/harfbuzzsharp.nativeassets.linux/7.3.0/harfbuzzsharp.nativeassets.linux.7.3.0.nupkg", - "sha512": "48a4bf98b9f59181ef1885a3d4d3ee605b63aeab3b49248a3e49a6bbbdcdae4bcb974073492319789f17eb92edebc1ddf050c5d0724eddc5ea3277d5c2054731", - "dest": "nuget-sources", - "dest-filename": "harfbuzzsharp.nativeassets.linux.7.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/harfbuzzsharp.nativeassets.macos/7.3.0/harfbuzzsharp.nativeassets.macos.7.3.0.nupkg", - "sha512": "803ace4c95a3ae0c69e30003d3f6dc1b409ff0390b94c37d8dbc1a5321dca74b5d7b2a8aefaab0a792cd47d4e3c2d24e733ed313e0597d80a7ef81b67bc413ee", - "dest": "nuget-sources", - "dest-filename": "harfbuzzsharp.nativeassets.macos.7.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/harfbuzzsharp.nativeassets.win32/7.3.0/harfbuzzsharp.nativeassets.win32.7.3.0.nupkg", - "sha512": "3f477b5cb4d70df1333f69272c885c31dc43118ebf4edc990ae6ea8f29db0a3d4886a74b6d7ad2778d1db6bf7660bf0ae0eb23030c0b9c65710c5baa2389b00c", - "dest": "nuget-sources", - "dest-filename": "harfbuzzsharp.nativeassets.win32.7.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/hazzik.qif/1.0.3/hazzik.qif.1.0.3.nupkg", - "sha512": "9f957ed3f8cab11d7a371e666f3bed00b0bc354d9e14b74f76adfd1d5d2d0492bbe7aeceb7d6c00f3077d49c9155849643d3539abd09d875743f1d8f2cc4ec18", - "dest": "nuget-sources", - "dest-filename": "hazzik.qif.1.0.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/livechartscore/2.0.0-rc2/livechartscore.2.0.0-rc2.nupkg", - "sha512": "16f3f058b9433127ebe045ad9261a9cb8c5f0f33340498acab6eeb759195df1ae8ad84418fe084f8de762828d31971d0cf9d3e39dc01ac918856e9ade7e8bca4", - "dest": "nuget-sources", - "dest-filename": "livechartscore.2.0.0-rc2.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/livechartscore.skiasharpview/2.0.0-rc2/livechartscore.skiasharpview.2.0.0-rc2.nupkg", - "sha512": "a74e07255647ba567101ee1c24a640bbd1e2a6369691073fa5a3a036b9c94a3b078b6714ef9c7862be0fc4c66f51373cbc72da52f1828c3a9bd2d04f911931b9", - "dest": "nuget-sources", - "dest-filename": "livechartscore.skiasharpview.2.0.0-rc2.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/markdig/0.33.0/markdig.0.33.0.nupkg", - "sha512": "7c25e58bc7b35730ca5cacef6a8068cdd5c1f313053f6482d2d3d80f9bf15387a6a14ae317d308d26dc493be57f82df284f4d588a414f6c0ea0c8bd5bec371a6", - "dest": "nuget-sources", - "dest-filename": "markdig.0.33.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/meziantou.framework.win32.credentialmanager/1.4.5/meziantou.framework.win32.credentialmanager.1.4.5.nupkg", - "sha512": "4eba895ba3ff77d54c805c409188b914ba1b88690aaef2d87f99a4a5407cfc93a6564517b6655b23cae8e542d1eac0a445bbf15decb2499b6cb7a191ea8550cc", - "dest": "nuget-sources", - "dest-filename": "meziantou.framework.win32.credentialmanager.1.4.5.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.data.sqlite.core/8.0.0/microsoft.data.sqlite.core.8.0.0.nupkg", - "sha512": "0d014ed863345a3e2093293e1ab21ecda817cc64ceb0aa531b444494966d7f30161c7cd1f872c3b3f07b401b4f866a941810569f06b4e3296f169fe673cceb1b", - "dest": "nuget-sources", - "dest-filename": "microsoft.data.sqlite.core.8.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg", - "sha512": "6bf892c274596fe2c7164e3d8503b24e187f64d0b7bec6d9b05eb95f04086fceb7a85ea6b2685d42dc465c52f6f0e6f636c0b3fddac48f6f0125dfd83e92d106", - "dest": "nuget-sources", - "dest-filename": "microsoft.netcore.platforms.1.1.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.netcore.targets/5.0.0/microsoft.netcore.targets.5.0.0.nupkg", - "sha512": "8581e6dc902340efe7c92c5c9751296616045bed8fdc7d5e2d936bf90c603b94e72d2ea1aad7e2e567218d0ce389de393189a1cb65fb20e99c5ad0cfe1fa4c1b", - "dest": "nuget-sources", - "dest-filename": "microsoft.netcore.targets.5.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.win32.primitives/4.3.0/microsoft.win32.primitives.4.3.0.nupkg", - "sha512": "366f07a79d72f6d61c2b7c43eaa938dd68dfb6b83599d1f6e02089b136fa82bec74b6d54d6e03e08a3c612d51c5596e3535cbc2b29f39b97a827b3e7c79826f0", - "dest": "nuget-sources", - "dest-filename": "microsoft.win32.primitives.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.win32.systemevents/8.0.0/microsoft.win32.systemevents.8.0.0.nupkg", - "sha512": "25016c508653fbf463c52d8fc3d2773b7c211c2402c4ea7b4aa987fb29c851d3f80c5e7abbcace2d4d5e061ae290524e8029afbc49a37d7e5186fe06aa4609b2", - "dest": "nuget-sources", - "dest-filename": "microsoft.win32.systemevents.8.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/netstandard.library/1.6.1/netstandard.library.1.6.1.nupkg", - "sha512": "0972dc2dbb4925e896f62bce2e59d4e48639320ee38ad3016dcd485fbd6936a0ed08073ad5eef2a612dff05dfc390f3930fff9e79d87a06070eeb8128277cbd0", - "dest": "nuget-sources", - "dest-filename": "netstandard.library.1.6.1.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/nickvision.aura/2023.11.4/nickvision.aura.2023.11.4.nupkg", - "sha512": "ddf2502d83d4957ef4acecfb472f697360daa487d4c721969e94741bed24087f107478618b717209bd4c35186f0666cffbcf64dc240785dae7b21180dc2b0bcb", - "dest": "nuget-sources", - "dest-filename": "nickvision.aura.2023.11.4.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/octokit/9.0.0/octokit.9.0.0.nupkg", - "sha512": "fc12c80130652c89c4789ff30fe9a0649288aac65ab17b85dd0c7bca6f75d30ff3aca97e933d6aaf062e467ca9774d739a00688d23e832add3c7da048c790ea7", - "dest": "nuget-sources", - "dest-filename": "octokit.9.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/ofxsharp.netstandard/1.0.0/ofxsharp.netstandard.1.0.0.nupkg", - "sha512": "766f755be7aa37621d1a5f825d9cc747b8f87b4c48c92f70580983bb9c73d38a7dc7bb6c8552ba1f53f6c9e9f423e48d530ea41071d8e5a7a74d385bd06afd5a", - "dest": "nuget-sources", - "dest-filename": "ofxsharp.netstandard.1.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/pdfsharpcore/1.3.62/pdfsharpcore.1.3.62.nupkg", - "sha512": "beca517fbac787f253a8a490baf47f9ca315dd0c223a4d8c4abdb447a4f0d57b41b3a75586c93243669e462239c3fc0cd1ba0459a813687a3ab21126bf5e6edb", - "dest": "nuget-sources", - "dest-filename": "pdfsharpcore.1.3.62.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/questpdf/2023.12.2/questpdf.2023.12.2.nupkg", - "sha512": "c0a10d05c180bb99d7271688bf2832553a3c3bee385fdb501be7a86e1d98c18224b9e087933667ab95357c6e7108d756b188ab2f3b2a75b09a1aafcc71a56f70", - "dest": "nuget-sources", - "dest-filename": "questpdf.2023.12.2.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/readsharp.ports.sgmlreader.core/1.0.0/readsharp.ports.sgmlreader.core.1.0.0.nupkg", - "sha512": "911c74808f5f2b8a9ddb1db5689d89e01e770a4e93c34c8f9f4f7ac057c95f40cbfd0e33142609ab4ce47515552f197016977d67b644a566011fda85aea9f76f", - "dest": "nuget-sources", - "dest-filename": "readsharp.ports.sgmlreader.core.1.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "b2cf809fe50c4b46bd6f2372265cd3059622550123afceb5dbb2410906c07a7f47bae4273584d29253d5e7a63a17c68c7ba0434608bbc8fd4d00e479b2f128ff", - "dest": "nuget-sources", - "dest-filename": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "fd8e32d7d3e9a465202e391b0ab8b95e212900879bc4d8ac22954fd2d0f98fa579e9d25f88885ac2a4bf1eba755db940f8d131250a3ffec34dbe77431a379cab", - "dest": "nuget-sources", - "dest-filename": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "4afac5cc1734330a6103880e790d639e825bfb1b34dbd42083762c47db5e5dab6c03efd16049ac03861d7d87746caed09c7534241d51b7341d47ba6af7e8dd31", - "dest": "nuget-sources", - "dest-filename": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.native.system/4.3.0/runtime.native.system.4.3.0.nupkg", - "sha512": "299c5a96fffdcaf1972e3e3d1c727837d18ac9e88cb79c09914f12ff1de7280dff10c9232a49a1c1d3ba7785a5cf76f28c9dce414f0a2a567688de7fd5331dc8", - "dest": "nuget-sources", - "dest-filename": "runtime.native.system.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.native.system.io.compression/4.3.0/runtime.native.system.io.compression.4.3.0.nupkg", - "sha512": "bff1f0cac94327014bb07c1ebee06c216e6e4951b1ddaa0c8a753a4a0338be621fd15ec621503490dbca54a75809abc4f420669b33052b28d24d726ac79c9891", - "dest": "nuget-sources", - "dest-filename": "runtime.native.system.io.compression.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.native.system.net.http/4.3.0/runtime.native.system.net.http.4.3.0.nupkg", - "sha512": "ddd1e5b67545477f7c72b5883666de40e89efb0836d91e7a349e2f3d4ac05ce1125e6add3cb09c39cbdfe7ab7c5dc8fdaeaf6ac25acd92f6de3d8ce2d6db7918", - "dest": "nuget-sources", - "dest-filename": "runtime.native.system.net.http.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.native.system.security.cryptography.apple/4.3.0/runtime.native.system.security.cryptography.apple.4.3.0.nupkg", - "sha512": "23c6a99b323cd71cdcb28c6faa71f099f69ff0972d5125607ae8bbc99ba7c08513571d14526e8c2805ab3a8b70d3d3a6dd76dfa193320393ecb05906ee91f37d", - "dest": "nuget-sources", - "dest-filename": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.native.system.security.cryptography.openssl/4.3.0/runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "ee5d047908b99b776ff9bb54856454b24b09a0f9271b127239543b1f5faa3381a032d9eeb4d813d01b5a4b7d183b6a16250f159fdc450d5314a7eace1550bea3", - "dest": "nuget-sources", - "dest-filename": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "81bdb93c1c86c560343df6cc367499fb2a01a9b3016617be416874a23c4355a8d95c7be34f175510f3fdea4872302a87c8efab98a328dfa39422db520c3f291c", - "dest": "nuget-sources", - "dest-filename": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "6de9544b4da49f127680cf5b3b4afea96bfcac3293038a1b0a12eea0ad60be368af31ee1dfd66d48d458b40200738c04aa0c71adcc54ae2dddbea2cd50d6f28d", - "dest": "nuget-sources", - "dest-filename": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg", - "sha512": "9929942914071e0ea0944a952ff9ad3c296be39e719a2f4bb3eac298d41829b4468b332fba880ebe242871a02145e1c26dc7660021375d12c7efcae4d200278a", - "dest": "nuget-sources", - "dest-filename": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "61da1667a5dd1e53a5d19fbe90abbfe332d84fe755fb811a080668a47d41a97db44539e3174fd1d2a0770ff1bd83afa68c82ce06df5775da65a6054ccc12c4be", - "dest": "nuget-sources", - "dest-filename": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "e65a6a1f1928cfb760c395a399542dc7f9087399c53874376604504ae60abd2da24ed735ebd148d335000a5e35c8108ea55404685e902df392eac2e8d38fb665", - "dest": "nuget-sources", - "dest-filename": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "c9f219515e268cf40e16b135bd64cba95c35e866dd9bc34954159562314d01d2f9ea7eb8b0db94acf6bdac83d651d90bad7890cb657ffe40fa3440ec662c9944", - "dest": "nuget-sources", - "dest-filename": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "4981b2d7a106703b185e176ad35bfda149156f3b752778fa71c56b3686407765fd2b6625de352bd563aac1e1e8769d7886cc59a0d5d0bfb41ed60277360beb81", - "dest": "nuget-sources", - "dest-filename": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "5dbe6bc007a9b46491e5299602291f5dbf8cc8d51e6c1b08db2fa0efd365990b41b6e181ed6bf82e873a659396427bc0e33e85b47d645d273fef8bf8ec643631", - "dest": "nuget-sources", - "dest-filename": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg", - "sha512": "5f6996e38a31861449a493b9387e91097abe06f3ca936e618e6b914091699b7319bda7e392a532a96c06287e9b3c28786183c5fbc212ac2bbdd10809151e6dbb", - "dest": "nuget-sources", - "dest-filename": "sharpziplib.1.3.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sixlabors.fonts/1.0.0-beta17/sixlabors.fonts.1.0.0-beta17.nupkg", - "sha512": "dd11e872a246b7110e774b8923bb2fafd917b506147769bfb09970c620d96e82e38293a6b072bbc0a683126f9ea3621badce7d661d0d84e67a8770ee345dd823", - "dest": "nuget-sources", - "dest-filename": "sixlabors.fonts.1.0.0-beta17.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sixlabors.imagesharp/3.1.2/sixlabors.imagesharp.3.1.2.nupkg", - "sha512": "1f83ed320aed2b9fb42e02f89ffcc2274ca22b944655dcff226670c85997e6ed16444ca44430d8a2d78016833c165c1f86414dd3b72f6a6a30f71d75174a982e", - "dest": "nuget-sources", - "dest-filename": "sixlabors.imagesharp.3.1.2.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/skiasharp/2.88.6/skiasharp.2.88.6.nupkg", - "sha512": "5b989f52d9e7efa557bf60e13c1ba329b63670bc66d07bf237e2c8f9bdf28634eeb1e3a735c17c0f7d5b6cb8e290bda0b139540a8b0b99343367f9710f81dffd", - "dest": "nuget-sources", - "dest-filename": "skiasharp.2.88.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/skiasharp.harfbuzz/2.88.6/skiasharp.harfbuzz.2.88.6.nupkg", - "sha512": "9f8b6448ee3a24af51fac0aaf5a55f5824e40068a1bc2a1a9f1ae646f8b672f9ab22a2e1a306284f01c496fe05e1a3c7e0657a17d02e07ae042c132fb2a3edd7", - "dest": "nuget-sources", - "dest-filename": "skiasharp.harfbuzz.2.88.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/skiasharp.nativeassets.linux/2.88.6/skiasharp.nativeassets.linux.2.88.6.nupkg", - "sha512": "9a52cb0a6cbc69a1e888efcb70df4e08d20e7d1ab848eb07ba6fd1c8a3500b63e1c97d7579c40c23c7231f08028d7d22ad61851334a09f6e498b409385881bd0", - "dest": "nuget-sources", - "dest-filename": "skiasharp.nativeassets.linux.2.88.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/skiasharp.nativeassets.macos/2.88.6/skiasharp.nativeassets.macos.2.88.6.nupkg", - "sha512": "a9abf36aadd48c8a9e0ea35f95acdbe3a354091b37f97c1df97499213894f662e798687bad36da71fcfa05b6fdbc68aaff2e8a8ddbeec4ca2820bfe7cf5a9ed7", - "dest": "nuget-sources", - "dest-filename": "skiasharp.nativeassets.macos.2.88.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/skiasharp.nativeassets.win32/2.88.6/skiasharp.nativeassets.win32.2.88.6.nupkg", - "sha512": "02087547abd840806105270d43cc3a61b417f331192498571e2cff1382dfd15a1bf6b1552610c7579bf06da69b6e9a80b042ae980d0475da8acf3f7dab7334f4", - "dest": "nuget-sources", - "dest-filename": "skiasharp.nativeassets.win32.2.88.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.bundle_e_sqlcipher/2.1.6/sqlitepclraw.bundle_e_sqlcipher.2.1.6.nupkg", - "sha512": "e048023e511f00823c680a441696e003feeb76a1f673bb28124b999ce437051a1ae472673b89b22d89cbd5dc687fb51472b8bc643e97d2edd86fd33cd36cda19", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.bundle_e_sqlcipher.2.1.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.bundle_e_sqlcipher/2.1.7/sqlitepclraw.bundle_e_sqlcipher.2.1.7.nupkg", - "sha512": "76231e411ec8d702a0c6d538fe233dada4ba4b338595ee04aa4438f1428525ded7f686863f39cbfd0b71c0560b544f609ea6c51b5956406c58c47c40811c75b5", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.bundle_e_sqlcipher.2.1.7.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.core/2.1.6/sqlitepclraw.core.2.1.6.nupkg", - "sha512": "16bc39cd5325dea37e1564fc328a35966d6d820878290d945dc57496b716d4935b534285989af32fa7bd25ef9a8ac795b63e6a19044d3f84a104d643319473be", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.core.2.1.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.core/2.1.7/sqlitepclraw.core.2.1.7.nupkg", - "sha512": "dfdb0f13dee0076ef2aec7bd991269e27539f431dd797eb029739ab9e365211ce2cfbb209cc5ab1512168db789e454920fa594aa1bbd2c314f166753de55e328", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.core.2.1.7.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.lib.e_sqlcipher/2.1.6/sqlitepclraw.lib.e_sqlcipher.2.1.6.nupkg", - "sha512": "0772e6626ab9b6c911eb86f4b54e2b5114a47650e40b7198094fa517dafa6dc2d17f15698e9df27311379162c880fa1ede53e62161ee1e9f6ea99b63df987449", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.lib.e_sqlcipher.2.1.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.lib.e_sqlcipher/2.1.7/sqlitepclraw.lib.e_sqlcipher.2.1.7.nupkg", - "sha512": "0940d0c374c7136ead2ec74cf5b0d8639f277a8bae12ccd67d1bfe245e916252be364348ce3dea7019040f37d27eb8f2d67bc419c593ce1dce7a0cf60dc41eb1", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.lib.e_sqlcipher.2.1.7.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.provider.e_sqlcipher/2.1.6/sqlitepclraw.provider.e_sqlcipher.2.1.6.nupkg", - "sha512": "b8eba767cc1376d2db0997d78a47f93108be4dc9305cfed5abc8819ce27ad5da80ea538e06056540c7c3303e54ee1fcccfa9763981b7da20787fe0d621e9e4d3", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.provider.e_sqlcipher.2.1.6.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/sqlitepclraw.provider.e_sqlcipher/2.1.7/sqlitepclraw.provider.e_sqlcipher.2.1.7.nupkg", - "sha512": "32385104d8156d964733b75ecee998c86964a36291c33279114eaa318895689567c70035e7bb49800a11ffd246bc3b93b1a1bae1302b489749698a465fa1cf1d", - "dest": "nuget-sources", - "dest-filename": "sqlitepclraw.provider.e_sqlcipher.2.1.7.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.appcontext/4.3.0/system.appcontext.4.3.0.nupkg", - "sha512": "0d6ea63006304708feae2cc0590d2cdd99327b682210822bb2803ac842fdf4d8d57170d7947c006eec4b5687c942768478a7ec109745472f3946d230732483e8", - "dest": "nuget-sources", - "dest-filename": "system.appcontext.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.buffers/4.3.0/system.buffers.4.3.0.nupkg", - "sha512": "3dcbf66f6edf7e9bb4f698cddcf81b9d059811d84e05c7ac618b2640efed642f089b0ef84c927c5f58feffe43bb96a6bcf4fec422529b82998b18d70e4648cbe", - "dest": "nuget-sources", - "dest-filename": "system.buffers.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.collections/4.3.0/system.collections.4.3.0.nupkg", - "sha512": "ca7b952d30da1487ca4e43aa522817b5ee26e7e10537062810112fc67a7512766c39d402f394bb0426d1108bbcf9bbb64e9ce1f5af736ef215a51a35e55f051b", - "dest": "nuget-sources", - "dest-filename": "system.collections.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.collections.concurrent/4.3.0/system.collections.concurrent.4.3.0.nupkg", - "sha512": "35c1aa3e636216fe5dc2ebeb504293e69ad6355d26e22453af060af94d8279faa93bdcfe127aecb0b316c7e7d9185bcac72e994984efdb7f2d8515f1f55cf682", - "dest": "nuget-sources", - "dest-filename": "system.collections.concurrent.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.console/4.3.0/system.console.4.3.0.nupkg", - "sha512": "a08a684a583c9b3278ce32be1007dae495f9d87254666392f794ef1203079f333cd7d388c28944ffa36fb49f0c8bb21f42c70f6e1d7c1c03920df6d0d1130c82", - "dest": "nuget-sources", - "dest-filename": "system.console.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.diagnostics.debug/4.3.0/system.diagnostics.debug.4.3.0.nupkg", - "sha512": "6c58fe1e3618e7f87684c1cea7efc7d3b19bd7df8d2535f9e27b62c52f441f11b67b21225d6bcd62f409e02c2a16231c4db19be33b8fab5b9b0a5c8660ddab24", - "dest": "nuget-sources", - "dest-filename": "system.diagnostics.debug.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.diagnostics.diagnosticsource/4.3.0/system.diagnostics.diagnosticsource.4.3.0.nupkg", - "sha512": "8f54df5ff382b6650e2e10d1043863a24bf49ff0714e779e837cd7073e46fb2635bcfcdcf99d7c4a9d95f35ebffd86ab0ca068305f4b245072e08303b917b34d", - "dest": "nuget-sources", - "dest-filename": "system.diagnostics.diagnosticsource.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.diagnostics.tools/4.3.0/system.diagnostics.tools.4.3.0.nupkg", - "sha512": "164d6977e721cbceb44ede7bfd75b03b8d9771e0426aefa5d40c71867e964092fdc6a6808bcbc5559ed73ec2c532ca657d6476af79a49ca3ad879b8366f13d90", - "dest": "nuget-sources", - "dest-filename": "system.diagnostics.tools.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.diagnostics.tracing/4.3.0/system.diagnostics.tracing.4.3.0.nupkg", - "sha512": "d0a5d30e261cd45b7dfab02b7ffbd76b64e0c9b892ed826ea61481c983c0208b05b69981cd79e91cd4e5811e1cd4c3cea06a1afce05811ece58be5e4c20169ea", - "dest": "nuget-sources", - "dest-filename": "system.diagnostics.tracing.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.drawing.common/8.0.0/system.drawing.common.8.0.0.nupkg", - "sha512": "40a16c9c5dd59148051bd55a2355339343186ec188bcb8e9ea5abe0dc6035106e7d745323cc4d492750e791c41397c53616b553d79b8d5e5fc56dff3345ed533", - "dest": "nuget-sources", - "dest-filename": "system.drawing.common.8.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.globalization/4.3.0/system.globalization.4.3.0.nupkg", - "sha512": "823d2ba308cb073b40a3146ecccd0d9fd7b1615ac3fbefb16f73d873e411fd81c3bdc87df206d3dc7e2f14c9cd53aafca684a3570c25471280aada8de805ece2", - "dest": "nuget-sources", - "dest-filename": "system.globalization.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.globalization.calendars/4.3.0/system.globalization.calendars.4.3.0.nupkg", - "sha512": "e97190231402b393774b925efc02a2bfa41d1d117a17fb87da6e399f5234546962767e9cd8f39970efa408e4f453cd1e6751a2a61e366bc97406e1b0b8a4be86", - "dest": "nuget-sources", - "dest-filename": "system.globalization.calendars.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.globalization.extensions/4.3.0/system.globalization.extensions.4.3.0.nupkg", - "sha512": "a4d360003f95e0c31edf39c0b91e1c73850a60ac5d0032b17db888a3c7d7134cef9acd97219d14174ad213b7c044f49b364cc5720073ebfcb6e1bf6e4ec24ce5", - "dest": "nuget-sources", - "dest-filename": "system.globalization.extensions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.io/4.3.0/system.io.4.3.0.nupkg", - "sha512": "bfca5a21e3e1986b9765b13dc6fbcd6f8b89e4c1383855d1d7ef256bf1bf2f51889769db5365859dd7606fbf6454add4daeb3bab56994ffb98fd1d03fe8bc1e6", - "dest": "nuget-sources", - "dest-filename": "system.io.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.io.compression/4.3.0/system.io.compression.4.3.0.nupkg", - "sha512": "f540ee51a3bb6941cdfbaace9a9738d7f7986a2f94770db61f45a88ecb7ef36b571d4c07417dc89cdbe9655a262b7cc599b0a4b78effea91819e186121b44807", - "dest": "nuget-sources", - "dest-filename": "system.io.compression.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.io.compression.zipfile/4.3.0/system.io.compression.zipfile.4.3.0.nupkg", - "sha512": "1860634672767f818f0192ec2b2750693f0d39390f3b7d400cc6fd4f6e74a5cbed27bf49e5980ec85ff3e161c30f6190f700e339a1040c1699b87eb4aa7b6792", - "dest": "nuget-sources", - "dest-filename": "system.io.compression.zipfile.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.io.filesystem/4.3.0/system.io.filesystem.4.3.0.nupkg", - "sha512": "4fb581d6f85b9529a091a0e974633752aa39e50b2be6c8a9e5eca8c2bc225cea07064ccec7778f77df9987deebf4dccec050b1a97edac0ee9107142e6a8ee7ee", - "dest": "nuget-sources", - "dest-filename": "system.io.filesystem.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.io.filesystem.primitives/4.3.0/system.io.filesystem.primitives.4.3.0.nupkg", - "sha512": "5885953d09582cffd973d23a21a929064d72f2bc9518af3732d671fffcc628a8b686f1d058a001ee6a114023b3e48b3fc0d0e4b22629a1c7f715e03795ee9ee5", - "dest": "nuget-sources", - "dest-filename": "system.io.filesystem.primitives.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.io.pipelines/6.0.0/system.io.pipelines.6.0.0.nupkg", - "sha512": "c5983b4510bc8ae4116133ffb9b280fe61d99d47ef52dd78e5bfd03e090901896d5d5fd738dae57006b971840a4d9422bded33ddefa5e927d75d309ef1f70dea", - "dest": "nuget-sources", - "dest-filename": "system.io.pipelines.6.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.linq/4.3.0/system.linq.4.3.0.nupkg", - "sha512": "eacc7fe1ec526f405f5ba0e671f616d0e5be9c1828d543a9e2f8c65df4099d6b2ea4a9fa2cdae4f34b170dc37142f60e267e137ca39f350281ed70d2dc620458", - "dest": "nuget-sources", - "dest-filename": "system.linq.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.linq.expressions/4.3.0/system.linq.expressions.4.3.0.nupkg", - "sha512": "61b90ef9ae6f779fbc8a7b6483ee8f5449cdd05c81b05235f70447e656a73b2aab7c341784b999f7532374744a72e2c3a5cd13800ea23417fac32ccfae5cde6d", - "dest": "nuget-sources", - "dest-filename": "system.linq.expressions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.memory/4.5.3/system.memory.4.5.3.nupkg", - "sha512": "70fce15a52cc76aacbae05c8e89e2e398d1d32903f63f640a7dd4a3e5747f2c7a887d4bfd22f2a2e40274906cf91648dfd169734fb7c74eb9b4f72614084e1db", - "dest": "nuget-sources", - "dest-filename": "system.memory.4.5.3.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.memory/4.5.5/system.memory.4.5.5.nupkg", - "sha512": "e8c8e536c97b94ac3443c940b30dad43cf6e97dc7a8c3d989371048fe74e168606384f5e0143bdc0d86f7783bf9fdee8417964cb3a8a5d752713e90b125172dc", - "dest": "nuget-sources", - "dest-filename": "system.memory.4.5.5.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.net.http/4.3.0/system.net.http.4.3.0.nupkg", - "sha512": "e8105ce8151aee95852fb29423f73cc1bd7c2286d36474ed7102a4b31248e45f434434a176d3af0442738398c96c5753965ee0444fb9c97525abbd9c88b13e41", - "dest": "nuget-sources", - "dest-filename": "system.net.http.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.net.primitives/4.3.0/system.net.primitives.4.3.0.nupkg", - "sha512": "9f7fdece330a81f3312ea7c804927852413bee2c929f3066b736993803df47cc0692fbca236c222bf19dc8f59b42f54f2a4c00da9a4d624e458da5874d127ce6", - "dest": "nuget-sources", - "dest-filename": "system.net.primitives.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.net.requests/4.3.0/system.net.requests.4.3.0.nupkg", - "sha512": "f00e58bb607af232db1a6a26941982346aab5c180da79638953a2b35dab3026eacd1432064367f631a67923cba7b4641d2b3fef8768bfd1dcffe4c79c6c76629", - "dest": "nuget-sources", - "dest-filename": "system.net.requests.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.net.sockets/4.3.0/system.net.sockets.4.3.0.nupkg", - "sha512": "e32ed9518e9630e99edcf1963c3d0e7047ea8252853c9260eb5403a4206170ae28fd27eb239f39da4d2db766f830b3ebdc9e4da2e697be20241d928082200955", - "dest": "nuget-sources", - "dest-filename": "system.net.sockets.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.net.webheadercollection/4.3.0/system.net.webheadercollection.4.3.0.nupkg", - "sha512": "fda40b5e53bf3364a3bca8ccc97d792111cafc12606f8a84d4564664f8e7171844ee31f076ebbae5332e56cc8ac543a161083fd9cafdce99b4a25843d627234f", - "dest": "nuget-sources", - "dest-filename": "system.net.webheadercollection.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.objectmodel/4.3.0/system.objectmodel.4.3.0.nupkg", - "sha512": "409bca3d2139bd1d003c711400ba2db5e576bb54d593aa541ec3576e7b2029b60159ab1c5b2c4e7389267b1b95ebcd8c2f064dc6e1f53e693aacb1737f066123", - "dest": "nuget-sources", - "dest-filename": "system.objectmodel.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection/4.3.0/system.reflection.4.3.0.nupkg", - "sha512": "2325b67ed60dce0302807064f25422cbe1b7fb275b539b44fba3c4a8ce4926f21d78529a5c34b31c03d80d110f7bace9af9589d457266beac014220057af8333", - "dest": "nuget-sources", - "dest-filename": "system.reflection.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection.emit/4.3.0/system.reflection.emit.4.3.0.nupkg", - "sha512": "be45051467a36ab965410f112a475fb81510a5595347d1cc0c46b028e0436a339218dd3c073f048c2d338b67dc13b45742290b6c46f55982503f74a8f2698818", - "dest": "nuget-sources", - "dest-filename": "system.reflection.emit.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection.emit.ilgeneration/4.3.0/system.reflection.emit.ilgeneration.4.3.0.nupkg", - "sha512": "e9be5f62bf64b1947a49857337306a5d0980686b58d665989e94006ab04aa7e0bbf4d8543d1b57d5bb38079052f275f339b73054a7357e4fa357208a0ac85d69", - "dest": "nuget-sources", - "dest-filename": "system.reflection.emit.ilgeneration.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection.emit.lightweight/4.3.0/system.reflection.emit.lightweight.4.3.0.nupkg", - "sha512": "ad58af07296bd084907a089f92026fa3898b764eb9d6a07c9414b550a83ac60456f32a34127c29bb93a9633fb07ba9fd828f7b41a31dce5ff019a7cf1ab29435", - "dest": "nuget-sources", - "dest-filename": "system.reflection.emit.lightweight.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection.extensions/4.3.0/system.reflection.extensions.4.3.0.nupkg", - "sha512": "06cfd992c8d7fd9ab6432ab02be981a01b6558285a6e26a7825a064d4efcce08d9e7344f03fa19b033a2459d42b0b80e8c1400ce39b47a1752869ab8825b0475", - "dest": "nuget-sources", - "dest-filename": "system.reflection.extensions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection.primitives/4.3.0/system.reflection.primitives.4.3.0.nupkg", - "sha512": "d4b9cc905f5a5cab900206338e889068bf66c18ee863a29d68eff3cde2ccca734112a2a851f2e2e5388a21ec28005fa19317c64d9b23923b05d6344be2e49eaa", - "dest": "nuget-sources", - "dest-filename": "system.reflection.primitives.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.reflection.typeextensions/4.3.0/system.reflection.typeextensions.4.3.0.nupkg", - "sha512": "68ae81a635b9af2aee9fc8fc8fe7da0356ef4da4eb32f81a89fb75613b96714e8f1a1f4c12bd0d335efbb03408cc7a744314837f13564d5fb262ca272055677f", - "dest": "nuget-sources", - "dest-filename": "system.reflection.typeextensions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.resources.resourcemanager/4.3.0/system.resources.resourcemanager.4.3.0.nupkg", - "sha512": "9067db28f1c48d08fc52ad40a608f88c14ad9112646741ddaf426fdfe68bed61ab01954b179461e61d187371600c1e6e5c36c788993f5a105a64f5702a6b81d4", - "dest": "nuget-sources", - "dest-filename": "system.resources.resourcemanager.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.runtime/4.3.0/system.runtime.4.3.0.nupkg", - "sha512": "92ab2249f08073cfafdc4cfbd7db36d651ad871b8d8ba961006982187de374bf4a30af93f15f73b05af343f7a70cbd484b04d646570587636ae72171eb0714fb", - "dest": "nuget-sources", - "dest-filename": "system.runtime.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.runtime.extensions/4.3.0/system.runtime.extensions.4.3.0.nupkg", - "sha512": "680a32b19c2bd5026f8687aa5382aea4f432b4f032f8bde299facb618c56d57369adef7f7cc8e60ad82ae3c12e5dd50772491363bf8044c778778628a6605bbc", - "dest": "nuget-sources", - "dest-filename": "system.runtime.extensions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.runtime.handles/4.3.0/system.runtime.handles.4.3.0.nupkg", - "sha512": "0a5baf1dd554bf9e01bcb4ce082cb26ee82b783364feb47cba730faeecd70edc528efad0394dcce11f37d7f9507f8608f15629ebaf051906bfd3513e46af0f11", - "dest": "nuget-sources", - "dest-filename": "system.runtime.handles.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.runtime.interopservices/4.3.0/system.runtime.interopservices.4.3.0.nupkg", - "sha512": "650799c3e654efbb9ad67157c9c60ce46f288a81597be37ce2a0bf5d4835044065ef3f65b997328cbbbbfb81f4c89b8d7e7d61380880019deee6eb3f963f70d9", - "dest": "nuget-sources", - "dest-filename": "system.runtime.interopservices.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.runtime.interopservices.runtimeinformation/4.3.0/system.runtime.interopservices.runtimeinformation.4.3.0.nupkg", - "sha512": "6f4905329a3cc9e62d274c885f275ee31c5af57a6c9fd1a5080d039cb748e0277bef3dc8ce42863cac78365084e00a032279bf3d2b7254a49f3fb1566a29ad1b", - "dest": "nuget-sources", - "dest-filename": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.runtime.numerics/4.3.0/system.runtime.numerics.4.3.0.nupkg", - "sha512": "3e347faa8e7ec484d481e53b1c219fe1ce346ae8278a214b4508cf0e233c1627bd9c6c6c7c654e8c1f4143271838ddd9593f63a1043577ad87c40e392af7fd34", - "dest": "nuget-sources", - "dest-filename": "system.runtime.numerics.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.algorithms/4.3.0/system.security.cryptography.algorithms.4.3.0.nupkg", - "sha512": "7641d70c2ba6f37bf429d5d949bda427f078098c2dcb8924fd79b23bb22c4b956ef14235422d8b1cc5720cbbcc6cfee8943d5ff87ce7abf0d54c5e8bce2aa5e2", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.algorithms.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.cng/4.3.0/system.security.cryptography.cng.4.3.0.nupkg", - "sha512": "6272273414eaa777e78dca1b5ecbbdf65e9659908082aea924df0975e71f4c1b47f85617edf90ead57078c29513a160ca62f123be9f9f339dfb9c9386844f5ea", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.cng.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.csp/4.3.0/system.security.cryptography.csp.4.3.0.nupkg", - "sha512": "43317591747a18f52f683187e09adfe0e03573e6dac430bf3ba13f440cdb1c7bb1f9205369d5f3b2a0f3fdf9604d5ba1e6d94a899a25d2c533e453338578f351", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.csp.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.encoding/4.3.0/system.security.cryptography.encoding.4.3.0.nupkg", - "sha512": "5c26add23e63542f37506f5fa1f72e8980f03743d529cd8e583d1054b8d8a579fb773fa035a00d9073db84db6be4f47cac340d1ebc6d23dd761dbdbd600075e0", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.encoding.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.openssl/4.3.0/system.security.cryptography.openssl.4.3.0.nupkg", - "sha512": "64530a19489730f873f8c68e6b245135ea260c02d68591880261768358d0145795132ba5ee877741822ff05dcd0c61edca27696ef99e8f9302a21cadf3b1329f", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.openssl.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.primitives/4.3.0/system.security.cryptography.primitives.4.3.0.nupkg", - "sha512": "5ad8273f998ebb9cca2f7bd03143d3f6d57b5d560657b26d6f4e78d038010fb30c379a23a27c08730f15c9b66f4ba565a06984ec246dfc79acf1a741b0dd4347", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.primitives.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.security.cryptography.x509certificates/4.3.0/system.security.cryptography.x509certificates.4.3.0.nupkg", - "sha512": "318d86ab5528e2b444ec3e4b9824c1be82bb93db513eab34b238e486f886c4d74310ed82c2110401fe5cd790e4d97f4a023a0b2d5c2e29952d3fd02e42734d00", - "dest": "nuget-sources", - "dest-filename": "system.security.cryptography.x509certificates.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.text.encoding/4.3.0/system.text.encoding.4.3.0.nupkg", - "sha512": "6ff7feec7313a7121f795ec7d376e4b8728c17294219fafdfd4ea078f9df1455b4685f0b3962c3810098e95d68594a8392c0b799d36ec8284cd6fcbd4cfe2c67", - "dest": "nuget-sources", - "dest-filename": "system.text.encoding.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.text.encoding.extensions/4.3.0/system.text.encoding.extensions.4.3.0.nupkg", - "sha512": "e648c5dc781e35cf00c5cc8e7e42e815b963cf8fb788e8a817f9b53e318b2b42e2f7a556e9c3c64bf2f6a2fd4615f26ab4f0d4eb713a0151e71e0af3fe9c3eed", - "dest": "nuget-sources", - "dest-filename": "system.text.encoding.extensions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.text.regularexpressions/4.3.0/system.text.regularexpressions.4.3.0.nupkg", - "sha512": "80353c148df30d9a2c03ee10a624d91b64d7ccc3218cb966344cfa70657f0b59c867fed2ab94057f64ab281ad9318353f25c23375c00e1376b6589ae0a70aad3", - "dest": "nuget-sources", - "dest-filename": "system.text.regularexpressions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.threading/4.3.0/system.threading.4.3.0.nupkg", - "sha512": "97a2751bdce69faaf9c54f834a9fd5c60c7a786faa52f420769828dbc9b5804c1f3721ba1ea945ea1d844835d909810f9e782c9a44d0faaecccb230c4cd95a88", - "dest": "nuget-sources", - "dest-filename": "system.threading.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.threading.tasks/4.3.0/system.threading.tasks.4.3.0.nupkg", - "sha512": "7d488ff82cb20a3b3cef6380f2dae5ea9f7baa66bf75ad711aade1e3301b25993ccf2694e33c847ea5b9bdb90ff34c46fcd8a6ba7d6f95605ba0c124ed7c5d13", - "dest": "nuget-sources", - "dest-filename": "system.threading.tasks.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.threading.tasks.extensions/4.3.0/system.threading.tasks.extensions.4.3.0.nupkg", - "sha512": "2c33900ff7f544d6db31ad11b6baee1c9ecb40d5a54f51e5dd5bbbb37f4c50ee35ed481615cbf7c1da61a31ae3333c4454bfbeee4ae32241789e72ce3f910db6", - "dest": "nuget-sources", - "dest-filename": "system.threading.tasks.extensions.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.threading.timer/4.3.0/system.threading.timer.4.3.0.nupkg", - "sha512": "d5ce8e258b7be7be268f944e21621195948106f57e6c46e69b2887c46f567760368b14e84046b4be4466ecd08ecd4cb04016a2ff7948cb4640960befc7aa1739", - "dest": "nuget-sources", - "dest-filename": "system.threading.timer.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.xml.readerwriter/4.3.0/system.xml.readerwriter.4.3.0.nupkg", - "sha512": "991101497fbd39e43fc306ca280a465318868afa8db1f34bb87c266fe61f0c81a0ec34a797b236ee823bd60d1149b7592def96fe044abb511858efffe890c2e6", - "dest": "nuget-sources", - "dest-filename": "system.xml.readerwriter.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/system.xml.xdocument/4.3.0/system.xml.xdocument.4.3.0.nupkg", - "sha512": "c2d9236a696daf23a29b530b9aa510fb813041685a1bb9a95845a51e61d870a0615e988b150f5be0d0896ef94b123e97f96c8a43ee815cf5b9897593986b1113", - "dest": "nuget-sources", - "dest-filename": "system.xml.xdocument.4.3.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/tmds.dbus/0.15.0/tmds.dbus.0.15.0.nupkg", - "sha512": "6384602b2691a1ded0cad96f38b2a9bab09d5993fffa28c5904ac355643732ba71bf5a11f07102390dcd2936044e7b8187d81fecbc85504dbd31cfe5191e065a", - "dest": "nuget-sources", - "dest-filename": "tmds.dbus.0.15.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/tmds.dbus.protocol/0.15.0/tmds.dbus.protocol.0.15.0.nupkg", - "sha512": "45958a88536d1daa769934986b3ac514cdc1104a936bc404dbdec550c958847e7408af621350c09fa51bc4b837fb88471ec6e6056c4aaa2cebf30f044cd834e9", - "dest": "nuget-sources", - "dest-filename": "tmds.dbus.protocol.0.15.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/cake.tool/4.0.0/cake.tool.4.0.0.nupkg", - "sha512": "63b5049577afda8b70f7586582a1971452d767b2f771f2f3d1c0e4367ca3d6406a1b7e3a6ee81c7392e7b1a0ce98eb1f6494de9b7539a75fa9327140685b2b7d", - "dest": "nuget-sources", - "dest-filename": "cake.tool.4.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/cake.filehelpers/7.0.0/cake.filehelpers.7.0.0.nupkg", - "sha512": "1d664222e299c5289a24eac50c98add36840e0820af8f13ff826914250624bc8408f0d8e6c83e8b579e25ed675d2193352953c65f6fc6e9b6e8fe41da9cc8678", - "dest": "nuget-sources", - "dest-filename": "cake.filehelpers.7.0.0.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.aspnetcore.app.runtime.linux-arm/8.0.1/microsoft.aspnetcore.app.runtime.linux-arm.8.0.1.nupkg", - "sha512": "e1f9b23b30b8b1d19c2dece0608e76a1034837fcee5dded039b7b03f3f8f4af0878ae9178b629c8a50657b8924ead353a824f30df15157b2d8f58d699e03383d", - "dest": "nuget-sources", - "dest-filename": "microsoft.aspnetcore.app.runtime.linux-arm.8.0.1.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.aspnetcore.app.runtime.linux-arm64/8.0.1/microsoft.aspnetcore.app.runtime.linux-arm64.8.0.1.nupkg", - "sha512": "d4e3ac0458d81e6c96a3951187322f77144a35ce7281bf0a68cd63461bbbe33beb152e45e547d99172080e70a15ac42f6663a871384021e2f2de76f1c51139b6", - "dest": "nuget-sources", - "dest-filename": "microsoft.aspnetcore.app.runtime.linux-arm64.8.0.1.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.aspnetcore.app.runtime.linux-x64/8.0.1/microsoft.aspnetcore.app.runtime.linux-x64.8.0.1.nupkg", - "sha512": "97fbccedc48880f0f9249df2ae25e2b6828d618bec4740c298ea0b359d5e3ffb828345dec01c1fa4a6d4de5eddd3671174d20a45128e495fff96a7e1521e019d", - "dest": "nuget-sources", - "dest-filename": "microsoft.aspnetcore.app.runtime.linux-x64.8.0.1.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.netcore.app.runtime.linux-arm/8.0.1/microsoft.netcore.app.runtime.linux-arm.8.0.1.nupkg", - "sha512": "db008e7b2f0691529a748fa31b70c9b1f76cd248f3b3d6b353c353ec99b7132fc45834798e6657ee75594e2ce158c7ac74c9df899e0c0d4b1bfd74041b2e4dc0", - "dest": "nuget-sources", - "dest-filename": "microsoft.netcore.app.runtime.linux-arm.8.0.1.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.netcore.app.runtime.linux-arm64/8.0.1/microsoft.netcore.app.runtime.linux-arm64.8.0.1.nupkg", - "sha512": "3322f6e3a176bb3eef54953125ae5fedba1570cbfba580d2eaef59c8fb4fd1326cc7001bfd49706961541e5bed328fa833a8b802d33fb1be6318175cd31cbd4d", - "dest": "nuget-sources", - "dest-filename": "microsoft.netcore.app.runtime.linux-arm64.8.0.1.nupkg" - }, - { - "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/microsoft.netcore.app.runtime.linux-x64/8.0.1/microsoft.netcore.app.runtime.linux-x64.8.0.1.nupkg", - "sha512": "ee341ecc86c7bbf4e7fab5e468883d5c4e4c4e62581e2426f1261c3d8a195964b85017219ab1d62d9804dce2dbc7f575a79272d7df719082fec7b0d3483734da", - "dest": "nuget-sources", - "dest-filename": "microsoft.netcore.app.runtime.linux-x64.8.0.1.nupkg" - } -] \ No newline at end of file diff --git a/NickvisionMoney.Shared.Tests/CurrencyHelperTests.cs b/NickvisionMoney.Shared.Tests/CurrencyHelperTests.cs deleted file mode 100644 index f58bd1009..000000000 --- a/NickvisionMoney.Shared.Tests/CurrencyHelperTests.cs +++ /dev/null @@ -1,178 +0,0 @@ -using NickvisionMoney.Shared.Helpers; -using System.Globalization; -using Xunit; - -namespace NickvisionMoney.Shared.Tests; - -public class CurrencyHelperTests -{ - private static decimal[] SampleAmounts = { 0M, 109M, 100M, 10920M, 0.002M, 1.2M, 12.00000004M, 1.0234567890M }; - - public static IEnumerable GetSampleDataWithRealCultures() - { - var cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures).AsEnumerable(); - foreach (var culture in cultures) - { - foreach (var number in SampleAmounts) - { - yield return new object[] { culture, number }; - } - } - } - - public static IEnumerable GetSampleDataWithCustomCultures() - { - var culture1 = (CultureInfo)CultureInfo.InvariantCulture.Clone(); - var culture2 = (CultureInfo)CultureInfo.InvariantCulture.Clone(); - var culture3 = (CultureInfo)CultureInfo.InvariantCulture.Clone(); - var culture4 = (CultureInfo)CultureInfo.InvariantCulture.Clone(); - // Decimal digits - culture1.NumberFormat.CurrencyDecimalDigits = 1; - culture2.NumberFormat.CurrencyDecimalDigits = 2; - culture3.NumberFormat.CurrencyDecimalDigits = 3; - culture4.NumberFormat.CurrencyDecimalDigits = 99; - // Decimal separator - culture1.NumberFormat.CurrencyDecimalSeparator = "."; - culture2.NumberFormat.CurrencyDecimalSeparator = "/"; - culture3.NumberFormat.CurrencyDecimalSeparator = "'"; - culture4.NumberFormat.CurrencyDecimalSeparator = "*"; - // Group separator - culture1.NumberFormat.CurrencyGroupSeparator = ","; - culture2.NumberFormat.CurrencyGroupSeparator = "-"; - culture3.NumberFormat.CurrencyGroupSeparator = "."; - culture4.NumberFormat.CurrencyGroupSeparator = " "; - // Currency symbol - culture1.NumberFormat.CurrencySymbol = "\ud83e\ude99"; - culture2.NumberFormat.CurrencySymbol = ":O"; - culture3.NumberFormat.CurrencySymbol = ":D"; - culture4.NumberFormat.CurrencySymbol = ":("; - // Currency positive pattern - culture1.NumberFormat.CurrencyPositivePattern = 0; - culture2.NumberFormat.CurrencyPositivePattern = 1; - culture3.NumberFormat.CurrencyPositivePattern = 2; - culture4.NumberFormat.CurrencyPositivePattern = 3; - foreach (var amount in SampleAmounts) - { - yield return new object[] { culture1, amount }; - yield return new object[] { culture2, amount }; - yield return new object[] { culture3, amount }; - yield return new object[] { culture4, amount }; - } - } - - [Theory] - [MemberData(nameof(GetSampleDataWithRealCultures))] - public void ToAmountString_RealCulturesShouldWorkByDefault(CultureInfo culture, decimal amount) - { - var expected = amount.ToString("C", culture); - var result = amount.ToAmountString(culture, false); - Assert.Equal(expected, result); - } - - [Theory] - [MemberData(nameof(GetSampleDataWithCustomCultures))] - public void ToAmountString_CustomCulturesShouldWorkByDefault(CultureInfo culture, decimal amount) - { - var expected = amount.ToString("C", culture); - RemoveSymbol(ref expected, culture); - FormatUnlimitedDecimals(ref expected, culture); - AddSymbol(ref expected, culture); - var result = amount.ToAmountString(culture, false); - Assert.Equal(expected, result); - } - - [Theory] - [MemberData(nameof(GetSampleDataWithRealCultures))] - public void ToAmountString_RealCulturesShouldWorkWithNativeDigits(CultureInfo culture, decimal amount) - { - var expected = amount.ToString("C", culture); - expected = expected - .Replace("0", culture.NumberFormat.NativeDigits[0]) - .Replace("1", culture.NumberFormat.NativeDigits[1]) - .Replace("2", culture.NumberFormat.NativeDigits[2]) - .Replace("3", culture.NumberFormat.NativeDigits[3]) - .Replace("4", culture.NumberFormat.NativeDigits[4]) - .Replace("5", culture.NumberFormat.NativeDigits[5]) - .Replace("6", culture.NumberFormat.NativeDigits[6]) - .Replace("7", culture.NumberFormat.NativeDigits[7]) - .Replace("8", culture.NumberFormat.NativeDigits[8]) - .Replace("9", culture.NumberFormat.NativeDigits[9]); - var result = amount.ToAmountString(culture, true); - Assert.Equal(expected, result); - } - - [Theory] - [MemberData(nameof(GetSampleDataWithRealCultures))] - public void ToAmountString_RealCulturesShouldWorkWithoutCurrencySymbol(CultureInfo culture, decimal amount) - { - var expected = amount.ToString("C", culture); - expected = expected.Replace(culture.NumberFormat.CurrencySymbol, "").Trim(); - var result = amount.ToAmountString(culture, false, false); - Assert.Equal(expected, result); - } - - [Theory] - [MemberData(nameof(GetSampleDataWithCustomCultures))] - public void ToAmountString_CustomCulturesShouldWorkWithoutCurrencySymbol(CultureInfo culture, decimal amount) - { - var expected = amount.ToString("C", culture); - RemoveSymbol(ref expected, culture); - FormatUnlimitedDecimals(ref expected, culture); - var result = amount.ToAmountString(culture, false, false); - Assert.Equal(expected, result); - } - - [Theory] - [MemberData(nameof(GetSampleDataWithRealCultures))] - public void ToAmountString_AllCulturesShouldWorkWithOverwriteDecimal(CultureInfo culture, decimal amount) - { - //Arrange - var expected = amount.ToString("C6", culture).Trim(); - RemoveSymbol(ref expected, culture); - if (culture.Name is "kea-CV" or "pt-CV" && expected.EndsWith('0')) - { - expected = expected.TrimEnd('0'); - if (expected.EndsWith(culture.NumberFormat.CurrencyDecimalSeparator)) - expected = $"{expected}00"; - else if (expected.Substring(expected.IndexOf(culture.NumberFormat.CurrencyDecimalSeparator) + 1).Length == 1) - expected += "0"; - } - else - { - FormatUnlimitedDecimals(ref expected, culture, true); - } - AddSymbol(ref expected, culture); - //Act - var result = amount.ToAmountString(culture, false, overwriteDecimal: true); - //Assert - Assert.Equal(expected, result); - } - - private static void RemoveSymbol(ref string amount, CultureInfo culture) - { - amount = amount.Replace(culture.NumberFormat.CurrencySymbol, "").Trim(); - } - - private static void FormatUnlimitedDecimals(ref string number, CultureInfo culture, bool force = false) - { - if (culture.NumberFormat.CurrencyDecimalDigits != 99 && !force) - return; - - number = number.TrimEnd('0'); - if (number.EndsWith(culture.NumberFormat.CurrencyDecimalSeparator)) - number = number.Replace(culture.NumberFormat.CurrencyDecimalSeparator, ""); - } - - private static void AddSymbol(ref string amount, CultureInfo culture) - { - var formatString = culture.NumberFormat.CurrencyPositivePattern switch - { - 0 => $"{culture.NumberFormat.CurrencySymbol}{{0}}", - 1 => $"{{0}}{culture.NumberFormat.CurrencySymbol}", - 2 => $"{culture.NumberFormat.CurrencySymbol} {{0}}", - 3 => $"{{0}} {culture.NumberFormat.CurrencySymbol}", - _ => $"{culture.NumberFormat.CurrencySymbol}{{0}}" - }; - amount = string.Format(formatString, amount); - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared.Tests/NickvisionMoney.Shared.Tests.csproj b/NickvisionMoney.Shared.Tests/NickvisionMoney.Shared.Tests.csproj deleted file mode 100644 index d0ca56de8..000000000 --- a/NickvisionMoney.Shared.Tests/NickvisionMoney.Shared.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - net8.0 - enable - enable - - false - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - diff --git a/NickvisionMoney.Shared/Controllers/AccountSettingsDialogController.cs b/NickvisionMoney.Shared/Controllers/AccountSettingsDialogController.cs deleted file mode 100644 index dcf4a40d7..000000000 --- a/NickvisionMoney.Shared/Controllers/AccountSettingsDialogController.cs +++ /dev/null @@ -1,163 +0,0 @@ -using Nickvision.Aura; -using NickvisionMoney.Shared.Models; -using System; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// Statuses for when account metadata is validated -/// -[Flags] -public enum AccountMetadataCheckStatus -{ - Valid = 1, - EmptyName = 2, - EmptyCurrencySymbol = 4, - InvalidCurrencySymbol = 8, - EmptyCurrencyCode = 16, - EmptyDecimalSeparator = 32, - SameSeparators = 64, - SameSymbolAndDecimalSeparator = 128, - SameSymbolAndGroupSeparator = 256, - NonMatchingPasswords = 512 -} - -/// -/// A controller for an AccountSettingsDialog -/// -public class AccountSettingsDialogController -{ - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// The metadata represented by the controller - /// - public AccountMetadata Metadata { get; init; } - /// - /// Whether or not the account is encrypted - /// - public bool IsEncrypted { get; init; } - /// - /// The new password for the account, if available - /// - public string? NewPassword { get; private set; } - - /// - /// Strings to show for a custom currency's amount styles if available - /// - public string[] CustomCurrencyAmountStyleStrings => Metadata.CustomCurrencySymbol == null ? Array.Empty() : new string[] { $"{Metadata.CustomCurrencySymbol}100", $"100{Metadata.CustomCurrencySymbol}", $"{Metadata.CustomCurrencySymbol} 100", $"100 {Metadata.CustomCurrencySymbol}" }; - - /// - /// Creates an AccountSettingsDialogController - /// - /// The AccountMetadata object represented by the controller - /// Whether or not the account is encrypted - internal AccountSettingsDialogController(AccountMetadata metadata, bool isEncrypted) - { - Metadata = (AccountMetadata)metadata.Clone(); - IsEncrypted = isEncrypted; - NewPassword = null; - } - - /// - /// Updates the Metadata object - /// - /// The new name of the account - /// The new type of the account - /// Whether or not to use a custom currency - /// The new custom currency symbol - /// The new custom currency code - /// The new custom currency amount style - /// The new custom decimal separator - /// The new custom group separator - /// The new custom decimal digits number - /// The new default transaction type - /// The new reminder threshold for transactions - /// The new password - /// The new password confirmed - /// AccountMetadataCheckStatus - public AccountMetadataCheckStatus UpdateMetadata(string name, AccountType type, bool useCustom, string? customSymbol, string? customCode, int? customAmountStyle, string? customDecimalSeparator, string? customGroupSeparator, int? customDecimalDigits, TransactionType defaultTransactionType, RemindersThreshold transactionReminder, string newPassword, string confirmPassword) - { - AccountMetadataCheckStatus result = 0; - if (string.IsNullOrWhiteSpace(name)) - { - result |= AccountMetadataCheckStatus.EmptyName; - } - if (useCustom && string.IsNullOrWhiteSpace(customSymbol)) - { - result |= AccountMetadataCheckStatus.EmptyCurrencySymbol; - } - if (useCustom && !string.IsNullOrWhiteSpace(customSymbol) && Decimal.TryParse(customSymbol, out _)) - { - result |= AccountMetadataCheckStatus.InvalidCurrencySymbol; - } - if (useCustom && string.IsNullOrWhiteSpace(customCode)) - { - result |= AccountMetadataCheckStatus.EmptyCurrencyCode; - } - if (useCustom && string.IsNullOrEmpty(customDecimalSeparator)) - { - result |= AccountMetadataCheckStatus.EmptyDecimalSeparator; - } - if (useCustom && !string.IsNullOrEmpty(customDecimalSeparator) && customDecimalSeparator == customGroupSeparator) - { - result |= AccountMetadataCheckStatus.SameSeparators; - } - if (useCustom && !string.IsNullOrEmpty(customDecimalSeparator) && customSymbol!.Contains(customDecimalSeparator)) - { - result |= AccountMetadataCheckStatus.SameSymbolAndDecimalSeparator; - } - if (useCustom && !string.IsNullOrEmpty(customGroupSeparator) && customSymbol!.Contains(customGroupSeparator)) - { - result |= AccountMetadataCheckStatus.SameSymbolAndGroupSeparator; - } - if (newPassword != confirmPassword) - { - result |= AccountMetadataCheckStatus.NonMatchingPasswords; - } - if (result != 0) - { - return result; - } - if (customSymbol != null && customSymbol.Length > 3) - { - customSymbol = customSymbol.Substring(0, 3); - } - if (customCode != null && customCode.Length > 3) - { - customCode = customCode.Substring(0, 3); - } - Metadata.Name = name; - Metadata.AccountType = type; - Metadata.UseCustomCurrency = useCustom; - if (Metadata.UseCustomCurrency) - { - Metadata.CustomCurrencySymbol = customSymbol; - Metadata.CustomCurrencyCode = customCode?.ToUpper(); - Metadata.CustomCurrencyAmountStyle = customAmountStyle; - Metadata.CustomCurrencyDecimalSeparator = customDecimalSeparator; - Metadata.CustomCurrencyGroupSeparator = customGroupSeparator; - Metadata.CustomCurrencyDecimalDigits = customDecimalDigits; - } - else - { - Metadata.CustomCurrencySymbol = null; - Metadata.CustomCurrencyCode = null; - Metadata.CustomCurrencyAmountStyle = null; - Metadata.CustomCurrencyDecimalSeparator = null; - Metadata.CustomCurrencyGroupSeparator = null; - Metadata.CustomCurrencyDecimalDigits = null; - } - Metadata.DefaultTransactionType = defaultTransactionType; - Metadata.TransactionRemindersThreshold = transactionReminder; - NewPassword = string.IsNullOrEmpty(newPassword) ? (NewPassword == "" ? "" : null) : newPassword; - return AccountMetadataCheckStatus.Valid; - } - - /// - /// Sets the password to be removed from the account - /// - public void SetRemovePassword() => NewPassword = ""; -} diff --git a/NickvisionMoney.Shared/Controllers/AccountViewController.cs b/NickvisionMoney.Shared/Controllers/AccountViewController.cs deleted file mode 100644 index 212e75ab4..000000000 --- a/NickvisionMoney.Shared/Controllers/AccountViewController.cs +++ /dev/null @@ -1,1219 +0,0 @@ -using Nickvision.Aura; -using Nickvision.Aura.Events; -using NickvisionMoney.Shared.Events; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// A controller for an AccountView -/// -public class AccountViewController : IDisposable -{ - private bool _disposed; - private readonly Account _account; - private List _filteredIds; - private decimal _filteredIncome; - private decimal _filteredExpense; - private readonly Dictionary _groupFilters; - private readonly Dictionary _tagFilters; - private DateOnly _filterStartDate; - private DateOnly _filterEndDate; - private string _searchDescription; - - /// - /// Whether or not the account has been fully opened and loaded - /// - public bool IsOpened { get; private set; } - - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// Whether to use native digits - /// - public bool UseNativeDigits => Configuration.Current.UseNativeDigits; - /// - /// The default color to use for a transaction - /// - public string TransactionDefaultColor => Configuration.Current.TransactionDefaultColor; - /// - /// The default color to use for a group - /// - public string GroupDefaultColor => Configuration.Current.GroupDefaultColor; - /// - /// The path of the account - /// - public string AccountPath => _account.Path; - /// - /// Whether or not the account needs a password - /// - public bool AccountNeedsPassword => _account.IsEncrypted; - /// - /// The title (filename without extension) of the account - /// - public string AccountTitle => _account.Metadata.Name; - /// - /// The type of the account - /// - public AccountType AccountType => _account.Metadata.AccountType; - /// - /// Transactions in the account - /// - public Dictionary Transactions => _account.Transactions; - /// - /// Groups in the account - /// - public Dictionary Groups => _account.Groups; - /// - /// The list of upcoming transaction reminders in the account - /// - public List<(string Title, string Subtitle)> TransactionReminders => _account.TransactionReminders; - /// - /// The CultureInfo to use when displaying a number string - /// - public CultureInfo CultureForNumberString => CultureHelpers.GetNumberCulture(_account.Metadata); - /// - /// The total amount of the account for today - /// - public decimal AccountTodayTotal => _account.TodayTotal; - /// - /// The total amount of the account for today as a string - /// - public string AccountTodayTotalString => $"{(_account.TodayTotal >= 0 ? "+ " : "− ")}{_account.TodayTotal.ToAmountString(CultureForNumberString, UseNativeDigits)}"; - /// - /// The income amount of the account for today - /// - public decimal AccountTodayIncome => _account.TodayIncome; - /// - /// The income amount of the account for today as a string - /// - public string AccountTodayIncomeString => _account.TodayIncome.ToAmountString(CultureForNumberString, UseNativeDigits); - /// - /// The expense amount of the account for today - /// - public decimal AccountTodayExpense => _account.TodayExpense; - /// - /// The expense amount of the account for today as a string - /// - public string AccountTodayExpenseString => _account.TodayExpense.ToAmountString(CultureForNumberString, UseNativeDigits); - /// - /// The number of filtered transactions being shown - /// - public int FilteredTransactionsCount => _filteredIds.Count; - /// - /// The total amount of the account for today as a string - /// - public string AccountFilteredTotalString => $"{((_filteredIncome - _filteredExpense) >= 0 ? "+ " : "− ")}{(_filteredIncome - _filteredExpense).ToAmountString(CultureForNumberString, UseNativeDigits)}"; - /// - /// The income amount of the account for today as a string - /// - public string AccountFilteredIncomeString => _filteredIncome.ToAmountString(CultureForNumberString, UseNativeDigits); - /// - /// The expense amount of the account for today as a string - /// - public string AccountFilteredExpenseString => _filteredExpense.ToAmountString(CultureForNumberString, UseNativeDigits); - - /// - /// Occurs when a notification is sent - /// - private event EventHandler? NotificationSent; - /// - /// Occurs when the recent accounts list is changed - /// - private event EventHandler? RecentAccountsChanged; - - /// - /// Occurs when the account's information is changed - /// - public event EventHandler? AccountInformationChanged; - /// - /// Occurs when a group is created - /// - public event EventHandler>? GroupCreated; - /// - /// Occurs when a group is deleted - /// - public event EventHandler? GroupDeleted; - /// - /// Occurs when a group is updated - /// - public event EventHandler>? GroupUpdated; - /// - /// Occurs when a tag is created - /// - public event EventHandler>? TagCreated; - /// - /// Occurs when a tag is updated - /// - public event EventHandler>? TagUpdated; - /// - /// Occurs when a transaction is created - /// - public event EventHandler>? TransactionCreated; - /// - /// Occurs when a transaction's position is moved - /// - public event EventHandler>? TransactionMoved; - /// - /// Occurs when a transaction is deleted - /// - public event EventHandler? TransactionDeleted; - /// - /// Occurs when a transaction is updated - /// - public event EventHandler>? TransactionUpdated; - /// - /// Occurs when a transfer is sent from this account - /// - public event EventHandler? TransferSent; - - /// - /// Creates an AccountViewController - /// - /// The path of the account - /// The notification sent event - /// The recent accounts changed event - internal AccountViewController(string path, EventHandler? notificationSent, EventHandler? recentAccountsChanged) - { - IsOpened = false; - _disposed = false; - _account = new Account(path); - _filteredIds = new List(); - _filteredIncome = 0; - _filteredExpense = 0; - _groupFilters = new Dictionary(); - _tagFilters = new Dictionary(); - NotificationSent = notificationSent; - RecentAccountsChanged = recentAccountsChanged; - //Setup Filters - _groupFilters.Add(-3, true); //Income - _groupFilters.Add(-2, true); //Expense - _filterStartDate = DateOnly.FromDateTime(DateTime.Today); - _filterEndDate = DateOnly.FromDateTime(DateTime.Today); - _searchDescription = ""; - } - - /// - /// Finalizes the AccountViewController - /// - ~AccountViewController() => Dispose(false); - - /// - /// Whether or not to show the groups section on the account view - /// - public bool ShowGroupsList - { - get => _account.Metadata.ShowGroupsList; - - set - { - if (_account.Metadata.ShowGroupsList != value) - { - _account.Metadata.ShowGroupsList = value; - _account.UpdateMetadata(_account.Metadata); - } - } - } - - /// - /// Whether or not to show the tags section on the account view - /// - public bool ShowTagsList - { - get => _account.Metadata.ShowTagsList; - - set - { - if (_account.Metadata.ShowTagsList != value) - { - _account.Metadata.ShowTagsList = value; - _account.UpdateMetadata(_account.Metadata); - } - } - } - - /// - /// The way in which to sort transactions - /// - public SortBy SortTransactionsBy - { - get => _account.Metadata.SortTransactionsBy; - - set - { - if (_account.Metadata.SortTransactionsBy != value) - { - _account.Metadata.SortTransactionsBy = value; - _account.UpdateMetadata(_account.Metadata); - SortUIUpdate(); - } - } - } - - /// - /// Whether or not to sort transactions from first to last - /// - public bool SortFirstToLast - { - get => _account.Metadata.SortFirstToLast; - - set - { - if (_account.Metadata.SortFirstToLast != value) - { - _account.Metadata.SortFirstToLast = value; - _account.UpdateMetadata(_account.Metadata); - SortUIUpdate(); - } - } - } - - /// - /// The list of dates in the account - /// - public List DatesInAccount - { - get - { - var datesInAccount = new List(); - foreach (var pair in _account.Transactions) - { - if (!datesInAccount.Contains(pair.Value.Date)) - { - datesInAccount.Add(pair.Value.Date); - } - } - return datesInAccount; - } - } - - /// - /// The list of years for the date range filter - /// - public List YearsForRangeFilter - { - get - { - var years = new List(); - if (_account.Transactions.Count > 0) - { - years.Add(DateTime.Now.Year.ToString()); - } - foreach (var pair in _account.Transactions) - { - var year = pair.Value.Date.Year.ToString(); - if (!years.Contains(year)) - { - years.Add(year); - } - } - years.Sort(); - return years; - } - } - - /// - /// The search description text - /// - public string SearchDescription - { - get => _searchDescription; - - set - { - _searchDescription = value; - FilterUIUpdate(); - } - } - - /// - /// The start date of the filter - /// - public DateOnly FilterStartDate - { - get => _filterStartDate; - - set - { - _filterStartDate = value; - FilterUIUpdate(); - } - } - - /// - /// The end date of the filter - /// - public DateOnly FilterEndDate - { - get => _filterEndDate; - - set - { - _filterEndDate = value; - FilterUIUpdate(); - } - } - - /// - /// Frees resources used by the AccountViewController object - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Frees resources used by the AccountViewController object - /// - protected virtual void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - if (disposing) - { - _account.Dispose(); - } - _disposed = true; - } - - /// - /// Sends a notification - /// - /// The message of the notification - /// The NotificationSeverity of the notification - public void SendNotification(string message, NotificationSeverity severity) => NotificationSent?.Invoke(this, new NotificationSentEventArgs(message, severity)); - - /// - /// The sorting function for transactions - /// - /// The id of the first transaction - /// The id of the second transaction - /// -1 if a < b, 0 if a = b, 1 if a > b - private int SortTransactions(uint a, uint b) - { - int compareTo = 0; - if (SortTransactionsBy == SortBy.Id) - { - compareTo = a.CompareTo(b); - } - else if (SortTransactionsBy == SortBy.Date) - { - compareTo = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); - compareTo = compareTo == 0 ? a.CompareTo(b) : compareTo; - } - else if (SortTransactionsBy == SortBy.Amount) - { - var aAmount = _account.Transactions[a].Amount * (_account.Transactions[a].Type == TransactionType.Income ? 1m : -1m); - var bAmount = _account.Transactions[b].Amount * (_account.Transactions[b].Type == TransactionType.Income ? 1m : -1m); - compareTo = aAmount.CompareTo(bAmount); - if (compareTo == 0) - { - compareTo = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); - compareTo = compareTo == 0 ? a.CompareTo(b) : compareTo; - } - } - if (!SortFirstToLast) - { - compareTo *= -1; - } - return compareTo; - } - - /// - /// Logins into an account - /// - /// The password of the account - /// True if login successful, else false - public bool Login(string? password) => _account.Login(password); - - /// - /// Initializes the AccountView - /// - public async Task StartupAsync() - { - if (!IsOpened) - { - await _account.LoadAsync(); - _searchDescription = ""; - //Metadata - Configuration.Current.AddRecentAccount(new RecentAccount(AccountPath) - { - Name = AccountTitle, - Type = AccountType - }); - Configuration.Current.Save(); - RecentAccountsChanged?.Invoke(this, EventArgs.Empty); - //Groups - foreach (var pair in _account.Groups.OrderBy(x => x.Value.Name == _("Ungrouped") ? " " : x.Value.Name)) - { - _groupFilters.Add((int)pair.Value.Id, true); - GroupCreated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - //Tags - foreach (var tag in _account.Tags) - { - _tagFilters.Add(tag, true); - TagCreated?.Invoke(this, new ModelEventArgs(tag, null, true)); - } - //Transactions - _filteredIds = _account.Transactions.Keys.ToList(); - _filteredIncome = _account.TodayIncome; - _filteredExpense = _account.TodayExpense; - _filteredIds.Sort(SortTransactions); - foreach (var id in _filteredIds) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(_account.Transactions[id], null, true)); - } - AccountInformationChanged?.Invoke(this, EventArgs.Empty); - //Register Events - Configuration.Current.Saved += ConfigurationChanged; - IsOpened = true; - } - } - - /// - /// Creates a new AccountSettingsDialogController - /// - /// The new AccountSettingsDialogController - public AccountSettingsDialogController CreateAccountSettingsDialogController() => new AccountSettingsDialogController(_account.Metadata, _account.IsEncrypted); - - /// - /// Creates a new TransactionDialogController for a new transaction - /// - /// The new TransactionDialogController - public TransactionDialogController CreateTransactionDialogController() => new TransactionDialogController(_account.NextAvailableTransactionId, _account.Transactions, _account.Groups, _account.Tags, _account.Metadata.DefaultTransactionType, TransactionDefaultColor, CultureForNumberString); - - /// - /// Creates a new TransactionDialogController for an existing transaction - /// - /// The id of the existing transaction - /// The TransactionDialogController for the existing transaction - public TransactionDialogController CreateTransactionDialogController(uint id) => new TransactionDialogController(_account.Transactions[id], _account.Transactions, _account.Groups, _account.Tags, true, TransactionDefaultColor, CultureForNumberString); - - /// - /// Creates a new TransactionDialogController for a copy transaction - /// - /// The transaction to copy - /// The TransactionDialogController for the copied transaction - public TransactionDialogController CreateTransactionDialogController(Transaction source) - { - var toCopy = new Transaction(_account.NextAvailableTransactionId) - { - Date = source.Date, - Description = $"{source.Description} {_("(Copy)")}", - Type = source.Type, - RepeatInterval = source.RepeatInterval, - Amount = source.Amount, - GroupId = source.GroupId, - RGBA = source.RGBA, - UseGroupColor = source.UseGroupColor, - Receipt = source.Receipt, - RepeatFrom = source.RepeatFrom, - RepeatEndDate = source.RepeatEndDate - }; - return new TransactionDialogController(toCopy, _account.Transactions, _account.Groups, _account.Tags, false, TransactionDefaultColor, CultureForNumberString); - } - - /// - /// Creates a new GroupDialogController - /// - /// The new GroupDialogController - public GroupDialogController CreateGroupDialogController() - { - var existingNames = new List(); - foreach (var pair in _account.Groups) - { - existingNames.Add(pair.Value.Name); - } - return new GroupDialogController(_account.NextAvailableGroupId, existingNames, GroupDefaultColor); - } - - /// - /// Creates a new GroupDialogController - /// - /// The id of the existing group - /// The GroupDialogController for the existing group - public GroupDialogController CreateGroupDialogController(uint id) - { - var existingNames = new List(); - foreach (var pair in _account.Groups) - { - existingNames.Add(pair.Value.Name); - } - return new GroupDialogController(_account.Groups[id], existingNames, GroupDefaultColor); - } - - /// - /// Creates a new TransferDialogController - /// - /// The new TransferDialogController - public TransferDialogController CreateTransferDialogController() => new TransferDialogController(new Transfer(AccountPath, AccountTitle), _account.TodayTotal, Configuration.Current.RecentAccounts, CultureForNumberString); - - /// - /// Occurs when the configuration is changed - /// - /// object? - /// EventArgs - private void ConfigurationChanged(object? sender, EventArgs e) => GroupUpdated?.Invoke(this, new ModelEventArgs(Groups[0], null, _groupFilters[0])); - - /// - /// Sets the new password of the account - /// - /// The new password - /// Whether or not to show the notification - public void SetPassword(string password, bool showNotification = true) - { - _account.Password = password; - if (showNotification) - { - if (string.IsNullOrEmpty(password)) - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("The password of the account was removed."), NotificationSeverity.Success)); - } - else - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("The password of the account was changed."), NotificationSeverity.Success)); - } - } - } - - /// - /// Updates the metadata of the account - /// - /// The new metadata - /// True if successful, else false - public void UpdateMetadata(AccountMetadata metadata) - { - var oldSymbol = _account.Metadata.CustomCurrencySymbol; - var oldStyle = _account.Metadata.CustomCurrencyAmountStyle; - var oldDecimalSeparator = _account.Metadata.CustomCurrencyDecimalSeparator; - var oldGroupSeparator = _account.Metadata.CustomCurrencyGroupSeparator; - var oldDecimalDigits = _account.Metadata.CustomCurrencyDecimalDigits; - _account.UpdateMetadata(metadata); - Configuration.Current.AddRecentAccount(new RecentAccount(AccountPath) - { - Name = AccountTitle, - Type = AccountType - }); - Configuration.Current.Save(); - RecentAccountsChanged?.Invoke(this, EventArgs.Empty); - if (oldSymbol != metadata.CustomCurrencySymbol || oldStyle != metadata.CustomCurrencyAmountStyle || oldDecimalSeparator != metadata.CustomCurrencyDecimalSeparator || oldGroupSeparator != metadata.CustomCurrencyGroupSeparator || oldDecimalDigits != metadata.CustomCurrencyDecimalDigits) - { - foreach (var pair in _account.Groups) - { - GroupUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, _groupFilters.ContainsKey((int)pair.Key) ? _groupFilters[(int)pair.Key] : true)); - } - foreach (var pair in _account.Transactions) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - } - AccountInformationChanged?.Invoke(this, EventArgs.Empty); - } - - /// - /// Adds a transaction to the account - /// - /// The transaction to add - public async Task AddTransactionAsync(Transaction transaction) - { - var groupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - var res = await _account.AddTransactionAsync(transaction); - if (res.Successful) - { - var transactions = _account.Transactions.Keys.ToList(); - transactions.Sort(SortTransactions); - for (var i = 0; i < transactions.Count; i++) - { - if (transactions[i] == transaction.Id) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(transaction, i, true)); - } - if (_account.Transactions[transactions[i]].RepeatFrom == transaction.Id) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(_account.Transactions[transactions[i]], i, true)); - } - } - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[groupId], null, _groupFilters[(int)groupId])); - foreach (var tag in res.NewTags) - { - _tagFilters.Add(tag, true); - TagCreated?.Invoke(this, new ModelEventArgs(tag, null, true)); - } - FilterUIUpdate(); - } - } - - /// - /// Updates a transaction in the account - /// - /// The transaction to update - public async Task UpdateTransactionAsync(Transaction transaction) - { - var originalGroupId = _account.Transactions[transaction.Id].GroupId == -1 ? 0u : (uint)_account.Transactions[transaction.Id].GroupId; - var newGroupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - var res = await _account.UpdateTransactionAsync(transaction); - if (res.Successful) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(transaction, null, true)); - if (transaction.RepeatInterval != TransactionRepeatInterval.Never) - { - foreach (var pair in _account.Transactions) - { - if (pair.Value.RepeatFrom == transaction.Id) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - } - } - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[originalGroupId], null, _groupFilters[(int)originalGroupId])); - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[newGroupId], null, _groupFilters[(int)newGroupId])); - foreach (var tag in res.NewTags) - { - _tagFilters.Add(tag, true); - TagCreated?.Invoke(this, new ModelEventArgs(tag, null, true)); - } - FilterUIUpdate(); - } - } - - /// - /// Updates a source transaction in the account - /// - /// The transaction to update - /// Whether or not to update generated transactions associated with the source - public async Task UpdateSourceTransactionAsync(Transaction transaction, bool updateGenerated) - { - var originalGroupId = _account.Transactions[transaction.Id].GroupId == -1 ? 0u : (uint)_account.Transactions[transaction.Id].GroupId; - var newGroupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - var res = await _account.UpdateSourceTransactionAsync(transaction, updateGenerated); - if (res.Successful) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(transaction, null, true)); - foreach (var pair in _account.Transactions) - { - if (updateGenerated && pair.Value.RepeatFrom == transaction.Id) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - else if (!updateGenerated) - { - if (pair.Value.RepeatFrom == -1) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - else if (pair.Value.RepeatFrom == transaction.Id) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - } - if (!_account.Transactions.ContainsKey(pair.Key)) - { - TransactionDeleted?.Invoke(this, pair.Key); - } - } - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[originalGroupId], null, _groupFilters[(int)originalGroupId])); - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[newGroupId], null, _groupFilters[(int)newGroupId])); - foreach (var tag in res.NewTags) - { - _tagFilters.Add(tag, true); - TagCreated?.Invoke(this, new ModelEventArgs(tag, null, true)); - } - FilterUIUpdate(); - } - } - - /// - /// Removes a transaction from the account - /// - /// The id of the transaction to delete - public async Task DeleteTransactionAsync(uint id) - { - var groupId = _account.Transactions[id].GroupId == -1 ? 0u : (uint)_account.Transactions[id].GroupId; - await _account.DeleteTransactionAsync(id); - TransactionDeleted?.Invoke(this, id); - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[groupId], null, _groupFilters[(int)groupId])); - FilterUIUpdate(); - } - - /// - /// Removes a source transaction from the account - /// - /// The id of the transaction to delete - /// Whether or not to delete generated transactions associated with the source - public async Task DeleteSourceTransactionAsync(uint id, bool deleteGenerated) - { - var groupId = _account.Transactions[id].GroupId == -1 ? 0u : (uint)_account.Transactions[id].GroupId; - TransactionDeleted?.Invoke(this, id); - if (deleteGenerated) - { - foreach (var pair in _account.Transactions) - { - if (pair.Value.RepeatFrom == id) - { - TransactionDeleted?.Invoke(this, pair.Value.Id); - } - } - } - await _account.DeleteSourceTransactionAsync(id, deleteGenerated); - if (!deleteGenerated) - { - foreach (var pair in _account.Transactions) - { - if (pair.Value.RepeatFrom == -1) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - } - } - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[groupId], null, _groupFilters[(int)groupId])); - FilterUIUpdate(); - } - - /// - /// Removes generated repeat transactions from the account - /// - /// The id of the source transaction - public async Task DeleteGeneratedTransactionsAsync(uint id) - { - var groupId = _account.Transactions[id].GroupId == -1 ? 0u : (uint)_account.Transactions[id].GroupId; - foreach (var pair in _account.Transactions) - { - if (pair.Value.RepeatFrom == id) - { - TransactionDeleted?.Invoke(this, pair.Value.Id); - } - } - await _account.DeleteGeneratedTransactionsAsync(id); - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[groupId], null, _groupFilters[(int)groupId])); - FilterUIUpdate(); - } - - /// - /// Gets whether or not the transaction with the provided id is a source repeat transaction - /// - /// The id of the transaction - /// True if transaction is a source repeat transaction, else false - public bool GetIsSourceRepeatTransaction(uint id) - { - try - { - return _account.Transactions[id].RepeatFrom == 0; - } - catch - { - return false; - } - } - - /// - /// Adds a group to the account - /// - /// The group to add - public async Task AddGroupAsync(Group group) - { - await _account.AddGroupAsync(group); - var groups = _account.Groups.Values.OrderBy(x => x.Name == _("Ungrouped") ? " " : x.Name).ToList(); - _groupFilters.Add((int)group.Id, true); - GroupCreated?.Invoke(this, new ModelEventArgs(group, groups.IndexOf(group), true)); - } - - /// - /// Updates a group in the account - /// - /// The group to update - public async Task UpdateGroupAsync(Group group, bool hasColorChanged) - { - await _account.UpdateGroupAsync(group); - GroupUpdated?.Invoke(this, new ModelEventArgs(group, null, _groupFilters[(int)group.Id])); - if (hasColorChanged) - { - foreach (var pair in _account.Transactions) - { - if (pair.Value.GroupId == group.Id) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - } - } - } - - /// - /// Removes a group from the account - /// - /// The id of the group to delete - public async Task DeleteGroupAsync(uint id) - { - var result = await _account.DeleteGroupAsync(id); - _groupFilters.Remove((int)id); - GroupDeleted?.Invoke(this, id); - foreach (var transaction in result.BelongingTransactions) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(_account.Transactions[transaction], null, true)); - } - } - - /// - /// Sends a transfer to another account - /// - /// The transfer to send - public async Task SendTransferAsync(Transfer transfer) - { - var newTransaction = await _account.SendTransferAsync(transfer, _("Transfer To {0}", transfer.DestinationAccountName)); - var transactions = _account.Transactions.Keys.ToList(); - transactions.Sort((a, b) => - { - var compareTo = SortTransactionsBy == SortBy.Date ? _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date) : a.CompareTo(b); - if (!SortFirstToLast) - { - compareTo *= -1; - } - return compareTo; - }); - for (var i = 0; i < transactions.Count; i++) - { - if (transactions[i] == newTransaction.Id) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(newTransaction, i, true)); - } - } - FilterUIUpdate(); - TransferSent?.Invoke(this, transfer); - } - - /// - /// Receives a transfer from another account - /// - /// The transfer to receive - public async Task ReceiveTransferAsync(Transfer transfer) - { - var newTransaction = await _account.ReceiveTransferAsync(transfer, _("Transfer From {0}", transfer.SourceAccountName)); - var transactions = _account.Transactions.Keys.ToList(); - transactions.Sort((a, b) => - { - var compareTo = SortTransactionsBy == SortBy.Date ? _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date) : a.CompareTo(b); - if (!SortFirstToLast) - { - compareTo *= -1; - } - return compareTo; - }); - for (var i = 0; i < transactions.Count; i++) - { - if (transactions[i] == newTransaction.Id) - { - TransactionCreated?.Invoke(this, new ModelEventArgs(newTransaction, i, true)); - } - } - FilterUIUpdate(); - } - - /// - /// Imports transaction from a file - /// - /// The path of the file - public async Task ImportFromFileAsync(string path) - { - ImportResult res; - try - { - res = await _account.ImportFromFileAsync(path, TransactionDefaultColor, GroupDefaultColor); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to import information from the file. Please ensure that the app has permissions to access the file and try again."), NotificationSeverity.Error)); - return; - } - if (!res.IsEmpty) - { - if (res.NewGroupIds.Count > 0) - { - var groupValues = _account.Groups.OrderBy(x => x.Value.Name == _("Ungrouped") ? " " : x.Value.Name).ToDictionary(x => x.Key, x => x.Value).Values.ToList(); - foreach (var id in res.NewGroupIds) - { - _groupFilters[(int)id] = true; - GroupCreated?.Invoke(this, new ModelEventArgs(_account.Groups[id], groupValues.IndexOf(_account.Groups[id]), true)); - } - } - if (res.NewTags.Count >= 0) - { - foreach (var tag in res.NewTags) - { - _tagFilters[tag] = true; - TagCreated?.Invoke(this, new ModelEventArgs(tag, null, true)); - } - } - if (res.NewTransactionIds.Count >= 0) - { - foreach (var id in res.NewTransactionIds) - { - var groupId = _account.Transactions[id].GroupId == -1 ? 0u : (uint)_account.Transactions[id].GroupId; - TransactionCreated?.Invoke(this, new ModelEventArgs(_account.Transactions[id], null, true)); - GroupUpdated?.Invoke(this, new ModelEventArgs(_account.Groups[groupId], null, _groupFilters[(int)groupId])); - } - FilterUIUpdate(); - SortUIUpdate(); - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_n("Imported {0} transaction from file.", "Imported {0} transactions from file.", res.NewTransactionIds.Count, res.NewTransactionIds.Count), NotificationSeverity.Success, res.NewTransactionIds.Count == 0 ? "help-import" : "")); - } - else - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to import transactions from the file."), NotificationSeverity.Error, "help-import")); - } - } - else - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Nothing to import from the file."), NotificationSeverity.Error, "help-import")); - } - } - - /// - /// Exports the account to a CSV file - /// - /// The path of the file - /// The information to export - public void ExportToCSV(string path, ExportMode exportMode) - { - if (_account.ExportToCSV(path, exportMode, _filteredIds)) - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Exported account to file successfully."), NotificationSeverity.Success, "open-export", path)); - } - else - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to export account to file."), NotificationSeverity.Error)); - } - } - - /// - /// Exports the account to a PDF file - /// - /// The path of the file - /// The information to export - /// The password to protect the PDF file with (null for no security) - public void ExportToPDF(string path, ExportMode exportMode, string? password) - { - if (_account.ExportToPDF(path, exportMode, _filteredIds, password)) - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Exported account to file successfully."), NotificationSeverity.Success, "open-export", path)); - } - else - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to export account to file."), NotificationSeverity.Error)); - } - } - - /// - /// Generates a graph based on the type - /// - /// GraphType - /// Whether or not to draw the graph in dark mode - /// The width of the graph - /// The height of the graph - /// The byte[] of the graph - public byte[] GenerateGraph(GraphType type, bool darkMode, int width, int height) => _account.GenerateGraph(type, darkMode, _filteredIds, width, height); - - /// - /// Gets whether or not a group filter is active - /// - /// The id of the filter - /// True if active, else false - public bool IsGroupFilterActive(int key) => _groupFilters[key]; - - /// - /// Updates whether or not a filter is active - /// - /// The id of the filter - /// The value of the filter - public void UpdateGroupFilterValue(int key, bool value) - { - _groupFilters[key] = value; - FilterUIUpdate(); - } - - /// - /// Resets group filters - /// - public void ResetGroupFilters() - { - foreach (var pair in _account.Groups) - { - _groupFilters[(int)pair.Key] = true; - GroupUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, true)); - } - FilterUIUpdate(); - } - - /// - /// Unselect all group filters - /// - public void UnselectAllGroupFilters() - { - foreach (var pair in _account.Groups) - { - _groupFilters[(int)pair.Key] = false; - GroupUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, false)); - } - FilterUIUpdate(); - } - - /// - /// Updates whether or not a tag filter is active - /// - /// The tag - /// Whether or not the tag filter is active - public void UpdateTagFilter(string tag, bool active) - { - _tagFilters[tag] = active; - FilterUIUpdate(); - } - - /// - /// Reset tag filters, setting all tags to enabled state - /// - public void ResetTagFilters() - { - foreach (var tag in _account.Tags) - { - _tagFilters[tag] = true; - TagUpdated?.Invoke(this, new ModelEventArgs(tag, null, true)); - } - FilterUIUpdate(); - } - - /// - /// Unselect all tag filters - /// - public void UnselectAllTagFilters() - { - foreach (var tag in _account.Tags) - { - _tagFilters[tag] = false; - TagUpdated?.Invoke(this, new ModelEventArgs(tag, null, false)); - } - FilterUIUpdate(); - } - - /// - /// Sets the start and end date of the filter to the same date - /// - /// The date to set - public void SetSingleDateFilter(DateOnly date) - { - _filterStartDate = date; - _filterEndDate = date; - FilterUIUpdate(); - } - - /// - /// Updates the UI when filters are changed - /// - private void FilterUIUpdate() - { - _filteredIds.Clear(); - _filteredIncome = 0; - _filteredExpense = 0; - var groupBalances = new Dictionary(); - foreach (var pair in _account.Transactions) - { - if (!string.IsNullOrWhiteSpace(SearchDescription)) - { - if (!pair.Value.Description.ToLower().Contains(SearchDescription.ToLower())) - { - continue; - } - } - if (pair.Value.Type == TransactionType.Income && !_groupFilters[-3]) - { - continue; - } - if (pair.Value.Type == TransactionType.Expense && !_groupFilters[-2]) - { - continue; - } - if (!_groupFilters[pair.Value.GroupId == -1 ? 0 : pair.Value.GroupId]) - { - continue; - } - if (!_tagFilters[_("Untagged")] && pair.Value.Tags.Count == 0) - { - continue; - } - if (!pair.Value.Tags.Any(x => _tagFilters[x]) && pair.Value.Tags.Count > 0) - { - continue; - } - if (_filterStartDate != DateOnly.FromDateTime(DateTime.Today) || _filterEndDate != DateOnly.FromDateTime(DateTime.Today)) - { - if (pair.Value.Date < _filterStartDate || pair.Value.Date > _filterEndDate) - { - continue; - } - } - _filteredIds.Add(pair.Value.Id); - if (pair.Value.Type == TransactionType.Income) - { - _filteredIncome += pair.Value.Amount; - } - else - { - _filteredExpense += pair.Value.Amount; - } - var groupKey = pair.Value.GroupId == -1 ? 0u : (uint)pair.Value.GroupId; - if (!groupBalances.ContainsKey(groupKey)) - { - groupBalances[groupKey] = (0m, 0m); - } - var income = groupBalances[groupKey].Income; - var expense = groupBalances[groupKey].Expense; - if (pair.Value.Type == TransactionType.Income) - { - income += pair.Value.Amount; - } - else - { - expense += pair.Value.Amount; - } - groupBalances[groupKey] = (income, expense); - } - //Update UI - if (_filteredIds.Count > 0) - { - foreach (var pair in _account.Transactions) - { - TransactionUpdated?.Invoke(this, new ModelEventArgs(pair.Value, null, _filteredIds.Contains(pair.Value.Id))); - } - } - foreach (var pair in _account.Groups) - { - var newGroup = Groups[pair.Key].Clone(groupBalances.ContainsKey(pair.Key) ? groupBalances[pair.Key].Income : 0m, groupBalances.ContainsKey(pair.Key) ? groupBalances[pair.Key].Expense : 0m); - GroupUpdated?.Invoke(this, new ModelEventArgs(newGroup, null, _groupFilters[(int)pair.Key])); - } - AccountInformationChanged?.Invoke(this, EventArgs.Empty); - } - - /// - /// Updates the UI when sorting is changed - /// - private void SortUIUpdate() - { - var transactions = _account.Transactions.Keys.ToList(); - transactions!.Sort(SortTransactions); - _filteredIds.Sort(SortTransactions); - for (var i = 0; i < transactions.Count; i++) - { - TransactionMoved?.Invoke(this, new ModelEventArgs(_account.Transactions[transactions[i]], i, _filteredIds.Contains(transactions[i]))); - } - } -} diff --git a/NickvisionMoney.Shared/Controllers/DashboardViewController.cs b/NickvisionMoney.Shared/Controllers/DashboardViewController.cs deleted file mode 100644 index 70b6fa2ad..000000000 --- a/NickvisionMoney.Shared/Controllers/DashboardViewController.cs +++ /dev/null @@ -1,126 +0,0 @@ -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System.Collections.Generic; -using System.Globalization; -using System.Text; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// An amount in the dashboard -/// -public class DashboardAmount -{ - /// - /// The list of currencies in the amount - /// - public List<(string Code, string Symbol)> Currencies { get; init; } - /// - /// The breakdown dictionary - /// - public Dictionary<(string Code, string Symbol), (decimal Total, string PerAccount)> Breakdowns { get; init; } - - /// - /// Constructs a DashboardAmount - /// - public DashboardAmount() - { - Currencies = new List<(string Code, string Symbol)>(); - Breakdowns = new Dictionary<(string Code, string Symbol), (decimal Total, string PerAccount)>(); - } -} - -/// -/// A controller for the a DashboardView -/// -public class DashboardViewController -{ - private List _openAccounts; - - /// - /// Whether to use native digits - /// - public bool UseNativeDigits => Configuration.Current.UseNativeDigits; - /// - /// The DashboardAmount object for incomes - /// - public DashboardAmount Income { get; init; } - /// - /// The DashboardAmount object for expenses - /// - public DashboardAmount Expense { get; init; } - /// - /// The DashboardAmount object for totals - /// - public DashboardAmount Total { get; init; } - /// - /// The list of DashboardAmounts for groups - /// - public Dictionary Groups { get; init; } - - /// - /// Constructs a DashboardViewController - /// - /// A default group color - internal DashboardViewController(List openAccounts, string defaultColor) - { - _openAccounts = openAccounts; - Income = new DashboardAmount(); - Expense = new DashboardAmount(); - Total = new DashboardAmount(); - Groups = new Dictionary(); - foreach (var controller in _openAccounts) - { - (string Code, string Symbol) currency = (controller.CultureForNumberString.NumberFormat.NaNSymbol, controller.CultureForNumberString.NumberFormat.CurrencySymbol); - if (controller.AccountTodayIncome > 0) - { - if (!Income.Currencies.Contains(currency)) - { - Income.Currencies.Add(currency); - Income.Breakdowns[currency] = (0, ""); - } - Income.Breakdowns[currency] = (Income.Breakdowns[currency].Total + controller.AccountTodayIncome, Income.Breakdowns[currency].PerAccount + $"{_("{0} from {1}", controller.AccountTodayIncomeString, controller.AccountTitle)}\n"); - } - if (controller.AccountTodayExpense > 0) - { - if (!Expense.Currencies.Contains(currency)) - { - Expense.Currencies.Add(currency); - Expense.Breakdowns[currency] = (0, ""); - } - Expense.Breakdowns[currency] = (Expense.Breakdowns[currency].Total + controller.AccountTodayExpense, Expense.Breakdowns[currency].PerAccount + $"{_("{0} from {1}", controller.AccountTodayExpenseString, controller.AccountTitle)}\n"); - } - if (controller.AccountTodayTotal != 0) - { - if (!Total.Currencies.Contains(currency)) - { - Total.Currencies.Add(currency); - Total.Breakdowns[currency] = (0, ""); - } - Total.Breakdowns[currency] = (Total.Breakdowns[currency].Total + controller.AccountTodayTotal, Total.Breakdowns[currency].PerAccount + $"{_("{0} from {1}", controller.AccountTodayTotalString, controller.AccountTitle)}\n"); - } - foreach (var group in controller.Groups.Values) - { - if (group.Balance != 0) - { - var name = group.Name.ToLower(); - var nameBuilder = new StringBuilder(name); - nameBuilder[0] = char.ToUpper(name[0], CultureInfo.CurrentCulture); - name = nameBuilder.ToString(); - if (!Groups.ContainsKey(name)) - { - Groups[name] = (new DashboardAmount(), string.IsNullOrWhiteSpace(group.RGBA) ? defaultColor : group.RGBA); - } - if (!Groups[name].DashboardAmount.Currencies.Contains(currency)) - { - Groups[name].DashboardAmount.Currencies.Add(currency); - Groups[name].DashboardAmount.Breakdowns[currency] = (0, ""); - } - var balanceString = $"{(group.Balance >= 0 ? "+ " : "- ")}{group.Balance.ToAmountString(controller.CultureForNumberString, UseNativeDigits)}"; - Groups[name].DashboardAmount.Breakdowns[currency] = (Groups[name].DashboardAmount.Breakdowns[currency].Total + group.Balance, Groups[name].DashboardAmount.Breakdowns[currency].PerAccount + $"{_("{0} from {1}", balanceString, controller.AccountTitle)}\n"); - } - } - } - } -} diff --git a/NickvisionMoney.Shared/Controllers/GroupDialogController.cs b/NickvisionMoney.Shared/Controllers/GroupDialogController.cs deleted file mode 100644 index 823b04f1d..000000000 --- a/NickvisionMoney.Shared/Controllers/GroupDialogController.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Nickvision.Aura; -using NickvisionMoney.Shared.Models; -using System.Collections.Generic; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// Statuses for when a group is validated -/// -public enum GroupCheckStatus -{ - Valid = 0, - EmptyName, - NameExists -} - -/// -/// A controller for a GroupDialog -/// -public class GroupDialogController -{ - private readonly string _originalName; - private readonly string _originalRGBA; - private readonly List _existingNames; - - /// - /// The group represented by the controller - /// - public Group Group { get; init; } - /// - /// Whether or not the dialog is editing a group - /// - public bool IsEditing { get; init; } - /// - /// Whether to use native digits - /// - public bool UseNativeDigits => Configuration.Current.UseNativeDigits; - - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// Whether or not the group color has changed - /// - public bool HasColorChanged => _originalRGBA != Group.RGBA; - - /// - /// Creates a GroupDialogController - /// - /// The Group object represented by the controller - /// The list of existing group names - /// A default color for the group - internal GroupDialogController(Group group, List existingNames, string groupDefaultColor) - { - _originalName = group.Name; - _originalRGBA = group.RGBA; - _existingNames = existingNames; - Group = (Group)group.Clone(); - IsEditing = true; - if (string.IsNullOrWhiteSpace(Group.RGBA)) - { - Group.RGBA = groupDefaultColor; - } - } - - /// - /// Creates a GroupDialogController - /// - /// The id of the new group - /// The list of existing group names - /// A default color for the group - internal GroupDialogController(uint id, List existingNames, string groupDefaultColor) - { - _originalName = ""; - _originalRGBA = groupDefaultColor; - _existingNames = existingNames; - Group = new Group(id); - IsEditing = false; - //Set Defaults For New Group - Group.RGBA = groupDefaultColor; - } - - /// - /// Updates the Group object - /// - /// The new name for the group - /// The new description for the group - /// The new rgba for the group - /// GroupCheckStatus - public GroupCheckStatus UpdateGroup(string name, string description, string rgba) - { - if (string.IsNullOrWhiteSpace(name)) - { - return GroupCheckStatus.EmptyName; - } - if (name != _originalName && _existingNames.Contains(name)) - { - return GroupCheckStatus.NameExists; - } - Group.Name = name; - Group.Description = description; - Group.RGBA = rgba; - return GroupCheckStatus.Valid; - } -} diff --git a/NickvisionMoney.Shared/Controllers/MainWindowController.cs b/NickvisionMoney.Shared/Controllers/MainWindowController.cs deleted file mode 100644 index 897e05918..000000000 --- a/NickvisionMoney.Shared/Controllers/MainWindowController.cs +++ /dev/null @@ -1,400 +0,0 @@ -using Nickvision.Aura; -using Nickvision.Aura.Events; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// A controller for a MainWindow -/// -public class MainWindowController : IDisposable -{ - private bool _disposed; - private string? _fileToLaunch; - private List _openAccounts; - - /// - /// A function for getting a password for an account - /// - public Func>? AccountLoginAsync { get; set; } - - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// The preferred theme of the application - /// - public Theme Theme => Configuration.Current.Theme; - /// - /// Whether to use native digits - /// - public bool UseNativeDigits => Configuration.Current.UseNativeDigits; - /// - /// The list of recent accounts - /// - public List RecentAccounts => Configuration.Current.RecentAccounts; - /// - /// The number of open accounts - /// - public int NumberOfOpenAccounts => _openAccounts.Count; - - /// - /// Occurs when a notification is sent - /// - public event EventHandler? NotificationSent; - /// - /// Occurs when an account is added - /// - public event EventHandler? AccountAdded; - /// - /// Occurs when the recent accounts list is changed - /// - public event EventHandler? RecentAccountsChanged; - - /// - /// Constructs a MainWindowController - /// - /// Command-line arguments - public MainWindowController(string[] args) - { - _disposed = false; - if (args.Length > 0) - { - _fileToLaunch = (Path.Exists(args[0]) && Path.GetExtension(args[0]).ToLower() == ".nmoney") ? args[0] : null; - } - _openAccounts = new List(); - Aura.Init("org.nickvision.money", "Nickvision Denaro"); - AppInfo.EnglishShortName = "Denaro"; - if (Directory.Exists($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}")) - { - // Move config files from older versions and delete old directory - try - { - foreach (var file in Directory.GetFiles($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}")) - { - File.Move(file, $"{UserDirectories.ApplicationConfig}{Path.DirectorySeparatorChar}{Path.GetFileName(file)}"); - } - } - catch (IOException) { } - Directory.Delete($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}", true); - } - AppInfo.Version = "2024.2.0"; - AppInfo.ShortName = _("Denaro"); - AppInfo.Description = _("Manage your personal finances"); - AppInfo.SourceRepo = new Uri("https://github.com/NickvisionApps/Denaro"); - AppInfo.IssueTracker = new Uri("https://github.com/NickvisionApps/Denaro/issues/new"); - AppInfo.SupportUrl = new Uri("https://github.com/NickvisionApps/Denaro/discussions"); - AppInfo.ExtraLinks[_("Matrix Chat")] = new Uri("https://matrix.to/#/#nickvision:matrix.org"); - AppInfo.Developers[_("Nicholas Logozzo")] = new Uri("https://github.com/nlogozzo"); - AppInfo.Developers[_("Contributors on GitHub ❤️")] = new Uri("https://github.com/NickvisionApps/Denaro/graphs/contributors"); - AppInfo.Designers[_("Nicholas Logozzo")] = new Uri("https://github.com/nlogozzo"); - AppInfo.Designers[_("Fyodor Sobolev")] = new Uri("https://github.com/fsobolev"); - AppInfo.Designers[_("DaPigGuy")] = new Uri("https://github.com/DaPigGuy"); - AppInfo.Designers[_("JoseBritto")] = new Uri("https://github.com/JoseBritto"); - AppInfo.Artists[_("David Lapshin")] = new Uri("https://github.com/daudix-UFO"); - AppInfo.Artists[_("Tobias Bernard")] = new Uri("https://github.com/bertob"); - AppInfo.TranslatorCredits = _("translator-credits"); - } - - /// - /// Finalizes the MainWindowController - /// - ~MainWindowController() => Dispose(false); - - /// - /// Whether or not to show a sun icon on the home page - /// - public bool ShowSun - { - get - { - var timeNowHours = DateTime.Now.Hour; - return timeNowHours >= 6 && timeNowHours < 18; - } - } - - /// - /// The string for greeting on the home page - /// - public string Greeting - { - get - { - return DateTime.Now.Hour switch - { - >= 0 and < 6 => _p("Night", "Good Morning!"), - < 12 => _p("Morning", "Good Morning!"), - < 18 => _("Good Afternoon!"), - < 24 => _("Good Evening!"), - _ => _("Good Day!") - }; - } - } - - /// - /// Whether or not to show graphs - /// - public bool ShowGraphs - { - get => Configuration.Current.ShowGraphs; - - set - { - Configuration.Current.ShowGraphs = value; - Configuration.Current.Save(); - } - } - - /// - /// Frees resources used by the MainWindowController object - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Frees resources used by the MainWindowController object - /// - protected virtual void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - if (disposing) - { - foreach (var controller in _openAccounts) - { - controller.Dispose(); - } - } - _disposed = true; - } - - /// - /// Creates a new PreferencesViewController - /// - /// The PreferencesViewController - public PreferencesViewController CreatePreferencesViewController() => new PreferencesViewController(); - - /// - /// Creates a new NewAccountDialogController - /// - /// The PreferencesViewController - public NewAccountDialogController CreateNewAccountDialogController() => new NewAccountDialogController(_openAccounts.Select(x => x.AccountPath)); - - /// - /// Creates a new DashboardViewController - /// - /// The DashboardViewController - public DashboardViewController CreateDashboardViewController() => new DashboardViewController(_openAccounts, Configuration.Current.GroupDefaultColor); - - /// - /// Gets an AccountViewController for the most recent account - /// - /// The AccountViewController - public AccountViewController GetMostRecentAccountViewController() => _openAccounts[_openAccounts.Count - 1]; - - /// - /// Starts the application - /// - public async Task StartupAsync() - { - if (_fileToLaunch != null) - { - await AddAccountAsync(_fileToLaunch); - _fileToLaunch = null; - } - } - - - /// - /// Creates an AccountViewController for the specified path - /// - /// The path of the open account - /// The AccountViewController or null if the account path is not open - public AccountViewController? CreateAccountViewController(string path) - { - try - { - return _openAccounts[_openAccounts.FindIndex(x => x.AccountPath == path)]; - } - catch - { - return null; - } - } - - /// - /// Gets a color for an account type - /// - /// The account type - /// The rgb color for the account type - public string GetColorForAccountType(AccountType accountType) - { - return accountType switch - { - AccountType.Checking => Configuration.Current.AccountCheckingColor, - AccountType.Savings => Configuration.Current.AccountSavingsColor, - AccountType.Business => Configuration.Current.AccountBusinessColor, - _ => Configuration.Current.AccountSavingsColor - }; - } - - /// - /// Gets whether or not an account with the given path is opened or not - /// - /// The path of the account to check - /// True if the account is open, else false - public bool IsAccountOpen(string path) => _openAccounts.Any(x => x.AccountPath == path); - - /// - /// Creates a new account and adds it to the list of opened accounts - /// - /// NewAccountDialogController - /// True if new account created and opened, else false - public async Task NewAccountAsync(NewAccountDialogController controller) - { - if (IsAccountOpen(controller.Path)) - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to overwrite an opened account."), NotificationSeverity.Error)); - return false; - } - if (File.Exists(controller.Path)) - { - if (controller.OverwriteExisting) - { - File.Delete(controller.Path); - } - else - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to overwrite an existing account."), NotificationSeverity.Error)); - return false; - } - } - var accountViewController = new AccountViewController(controller.Path, NotificationSent, RecentAccountsChanged); - accountViewController.TransferSent += OnTransferSent; - try - { - accountViewController.Login(null); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to open the account. Please ensure that the app has permissions to access the file and try again."), NotificationSeverity.Error)); - return false; - } - _openAccounts.Add(accountViewController); - AccountAdded?.Invoke(this, EventArgs.Empty); - await Task.Delay(100); - accountViewController.UpdateMetadata(controller.Metadata); - if (!string.IsNullOrEmpty(controller.Password)) - { - accountViewController.SetPassword(controller.Password, false); - } - if (File.Exists(controller.ImportFile)) - { - await accountViewController.ImportFromFileAsync(controller.ImportFile); - } - return true; - } - - /// - /// Adds an account to the list of opened accounts - /// - /// The path of the account - /// Whether or not to show a notification if an account is opened - /// A password for an account (if available) - /// True if account added, else false (account already added) - public async Task AddAccountAsync(string path, bool showOpenedNotification = true, string? password = null) - { - if (Path.GetExtension(path).ToLower() != ".nmoney") - { - path += ".nmoney"; - } - if (!_openAccounts.Any(x => x.AccountPath == path)) - { - var controller = new AccountViewController(path, NotificationSent, RecentAccountsChanged); - controller.TransferSent += OnTransferSent; - try - { - if (controller.AccountNeedsPassword && string.IsNullOrEmpty(password)) - { - password = await AccountLoginAsync!(controller.AccountPath); - } - if (!controller.Login(password)) - { - controller.Dispose(); - if (password != null) - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to login to account. Provided password is invalid."), NotificationSeverity.Error)); - } - return false; - } - } - catch (Exception e) - { - Console.Error.WriteLine(e); - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("Unable to open the account. Please ensure that the app has permissions to access the file and try again."), NotificationSeverity.Error)); - return false; - } - _openAccounts.Add(controller); - AccountAdded?.Invoke(this, EventArgs.Empty); - return true; - } - else - { - if (showOpenedNotification) - { - NotificationSent?.Invoke(this, new NotificationSentEventArgs(_("This account is already opened."), NotificationSeverity.Warning)); - } - return false; - } - } - - /// - /// Closes the account with the provided index - /// - /// int - public void CloseAccount(int index) - { - _openAccounts[index].Dispose(); - _openAccounts.RemoveAt(index); - } - - /// - /// Removes a recent account from the list - /// - /// The RecentAccount to remove - public void RemoveRecentAccount(RecentAccount recentAccount) - { - Configuration.Current.RemoveRecentAccount(recentAccount); - Configuration.Current.Save(); - RecentAccountsChanged?.Invoke(this, EventArgs.Empty); - } - - /// - /// Occurs when a transfer is sent from an account - /// - /// object? - /// The transfer sent - private async void OnTransferSent(object? sender, Transfer transfer) - { - await AddAccountAsync(transfer.DestinationAccountPath, false, transfer.DestinationAccountPassword); - var controller = _openAccounts.Find(x => x.AccountPath == transfer.DestinationAccountPath)!; - while (!controller.IsOpened) - { - await Task.Delay(200); - } - await controller.ReceiveTransferAsync(transfer); - } -} diff --git a/NickvisionMoney.Shared/Controllers/NewAccountDialogController.cs b/NickvisionMoney.Shared/Controllers/NewAccountDialogController.cs deleted file mode 100644 index 63ce0041f..000000000 --- a/NickvisionMoney.Shared/Controllers/NewAccountDialogController.cs +++ /dev/null @@ -1,187 +0,0 @@ -using Nickvision.Aura; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// Statuses for when the account name is validated -/// -[Flags] -public enum NameCheckStatus -{ - Valid = 1, - AlreadyOpen = 2, - Exists = 4 -} - -/// -/// Statuses for when the account currency is validated -/// -[Flags] -public enum CurrencyCheckStatus -{ - Valid = 1, - EmptyCurrencySymbol = 2, - InvalidCurrencySymbol = 4, - EmptyCurrencyCode = 8, - EmptyDecimalSeparator = 16, - SameSeparators = 32, - SameSymbolAndDecimalSeparator = 64, - SameSymbolAndGroupSeparator = 128, -} - -/// -/// A controller for a NewAccountDialog -/// -public class NewAccountDialogController -{ - private List _openAccountPaths; - - /// - /// The metadata represented by the controller - /// - public AccountMetadata Metadata { get; init; } - /// - /// The password of the new account - /// - public string? Password { get; set; } - /// - /// The folder to save the new account - /// - public string Folder { get; set; } - /// - /// Whether or not to overwrite existing accounts - /// - public bool OverwriteExisting { get; set; } - /// - /// A file to use to import data from - /// - public string ImportFile { get; set; } - - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// The path of the new account - /// - public string Path => $"{Folder}{System.IO.Path.DirectorySeparatorChar}{Metadata.Name}.nmoney"; - /// - /// Strings to show for a custom currency's amount styles if available - /// - public string[] CustomCurrencyAmountStyleStrings => Metadata.CustomCurrencySymbol == null ? Array.Empty() : new string[] { $"{Metadata.CustomCurrencySymbol}100", $"100{Metadata.CustomCurrencySymbol}", $"{Metadata.CustomCurrencySymbol} 100", $"100 {Metadata.CustomCurrencySymbol}" }; - - /// - /// Constructs a NewAccountDialogController - /// - /// The list of open account paths - public NewAccountDialogController(IEnumerable openAccountPaths) - { - _openAccountPaths = openAccountPaths.ToList(); - Metadata = new AccountMetadata("", AccountType.Checking); - Password = null; - Folder = ""; - OverwriteExisting = false; - ImportFile = ""; - } - - /// - /// Updates the account name - /// - /// The new name - /// NameCheckStatus - public NameCheckStatus UpdateName(string name) - { - var tempPath = $"{Folder}{System.IO.Path.DirectorySeparatorChar}{name}.nmoney"; - if (_openAccountPaths.Contains(tempPath)) - { - return NameCheckStatus.AlreadyOpen; - } - else if (File.Exists(tempPath) && !OverwriteExisting) - { - return NameCheckStatus.Exists; - } - Metadata.Name = name; - return NameCheckStatus.Valid; - } - - /// - /// Updates the Metadata object - /// - /// Whether or not to use a custom currency - /// The new custom currency symbol - /// The new custom currency code - /// The new custom currency amount style - /// The new custom decimal separator - /// The new custom group separator - /// The new custom decimal digits number - /// CurrencyCheckStatus - public CurrencyCheckStatus UpdateCurrency(bool useCustom, string? customSymbol, string? customCode, int? customAmountStyle, string? customDecimalSeparator, string? customGroupSeparator, int? customDecimalDigits) - { - CurrencyCheckStatus result = 0; - if (useCustom && string.IsNullOrWhiteSpace(customSymbol)) - { - result |= CurrencyCheckStatus.EmptyCurrencySymbol; - } - if (useCustom && !string.IsNullOrWhiteSpace(customSymbol) && Decimal.TryParse(customSymbol, out _)) - { - result |= CurrencyCheckStatus.InvalidCurrencySymbol; - } - if (useCustom && string.IsNullOrWhiteSpace(customCode)) - { - result |= CurrencyCheckStatus.EmptyCurrencyCode; - } - if (useCustom && string.IsNullOrEmpty(customDecimalSeparator)) - { - result |= CurrencyCheckStatus.EmptyDecimalSeparator; - } - if (useCustom && !string.IsNullOrEmpty(customDecimalSeparator) && customDecimalSeparator == customGroupSeparator) - { - result |= CurrencyCheckStatus.SameSeparators; - } - if (useCustom && !string.IsNullOrEmpty(customDecimalSeparator) && customSymbol!.Contains(customDecimalSeparator)) - { - result |= CurrencyCheckStatus.SameSymbolAndDecimalSeparator; - } - if (useCustom && !string.IsNullOrEmpty(customGroupSeparator) && customSymbol!.Contains(customGroupSeparator)) - { - result |= CurrencyCheckStatus.SameSymbolAndGroupSeparator; - } - if (result != 0) - { - return result; - } - if (customSymbol != null && customSymbol.Length > 3) - { - customSymbol = customSymbol.Substring(0, 3); - } - if (customCode != null && customCode.Length > 3) - { - customCode = customCode.Substring(0, 3); - } - Metadata.UseCustomCurrency = useCustom; - if (Metadata.UseCustomCurrency) - { - Metadata.CustomCurrencySymbol = customSymbol; - Metadata.CustomCurrencyCode = customCode?.ToUpper(); - Metadata.CustomCurrencyAmountStyle = customAmountStyle; - Metadata.CustomCurrencyDecimalSeparator = customDecimalSeparator; - Metadata.CustomCurrencyGroupSeparator = customGroupSeparator; - Metadata.CustomCurrencyDecimalDigits = customDecimalDigits; - } - else - { - Metadata.CustomCurrencySymbol = null; - Metadata.CustomCurrencyCode = null; - Metadata.CustomCurrencyAmountStyle = null; - Metadata.CustomCurrencyDecimalSeparator = null; - Metadata.CustomCurrencyGroupSeparator = null; - Metadata.CustomCurrencyDecimalDigits = null; - } - return CurrencyCheckStatus.Valid; - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Controllers/PreferencesViewController.cs b/NickvisionMoney.Shared/Controllers/PreferencesViewController.cs deleted file mode 100644 index 8ecc1bf35..000000000 --- a/NickvisionMoney.Shared/Controllers/PreferencesViewController.cs +++ /dev/null @@ -1,128 +0,0 @@ -using Nickvision.Aura; -using NickvisionMoney.Shared.Models; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// A controller for a PreferencesView -/// -public class PreferencesViewController -{ - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - - /// - /// Creates a PreferencesViewController - /// - internal PreferencesViewController() - { - - } - - /// - /// The preferred theme of the application - /// - public Theme Theme - { - get => Configuration.Current.Theme; - - set => Configuration.Current.Theme = value; - } - - /// - /// The default color of a transaction - /// - public string TransactionDefaultColor - { - get => Configuration.Current.TransactionDefaultColor; - - set => Configuration.Current.TransactionDefaultColor = value; - } - - /// - /// The default color of a transfer - /// - public string TransferDefaultColor - { - get => Configuration.Current.TransferDefaultColor; - - set => Configuration.Current.TransferDefaultColor = value; - } - - /// - /// The default color of a group - /// - public string GroupDefaultColor - { - get => Configuration.Current.GroupDefaultColor; - - set => Configuration.Current.GroupDefaultColor = value; - } - - /// - /// The color of accounts with Checking type - /// - public string AccountCheckingColor - { - get => Configuration.Current.AccountCheckingColor; - - set => Configuration.Current.AccountCheckingColor = value; - } - - /// - /// The color of accounts with Savings type - /// - public string AccountSavingsColor - { - get => Configuration.Current.AccountSavingsColor; - - set => Configuration.Current.AccountSavingsColor = value; - } - - /// - /// The color of accounts with Business type - /// - public string AccountBusinessColor - { - get => Configuration.Current.AccountBusinessColor; - - set => Configuration.Current.AccountBusinessColor = value; - } - - /// - /// Whether to use native digits - /// - public bool UseNativeDigits - { - get => Configuration.Current.UseNativeDigits; - - set => Configuration.Current.UseNativeDigits = value; - } - - /// - /// Decimal Separator Inserting - /// - public InsertSeparator InsertSeparator - { - get => Configuration.Current.InsertSeparator; - - set => Configuration.Current.InsertSeparator = value; - } - - /// - /// A folder to use to backup accounts as CSV - /// - public string CSVBackupFolder - { - get => Configuration.Current.CSVBackupFolder; - - set => Configuration.Current.CSVBackupFolder = value; - } - - /// - /// Saves the configuration to disk - /// - public void SaveConfiguration() => Configuration.Current.Save(); -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Controllers/TransactionDialogController.cs b/NickvisionMoney.Shared/Controllers/TransactionDialogController.cs deleted file mode 100644 index a40a69425..000000000 --- a/NickvisionMoney.Shared/Controllers/TransactionDialogController.cs +++ /dev/null @@ -1,361 +0,0 @@ -using Docnet.Core; -using Docnet.Core.Converters; -using Docnet.Core.Models; -using Nickvision.Aura; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using SixLabors.ImageSharp; -using SixLabors.ImageSharp.PixelFormats; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// Statuses for when a transaction is validated -/// -[Flags] -public enum TransactionCheckStatus -{ - Valid = 1, - EmptyDescription = 2, - InvalidAmount = 4, - InvalidRepeatEndDate = 8, - CannotAccessReceipt = 16 -} - -/// -/// A controller for a TransactionDialog -/// -public class TransactionDialogController : IDisposable -{ - private bool _disposed; - private readonly Dictionary _transactions; - private readonly Dictionary _groups; - - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// The transaction represented by the controller - /// - public Transaction Transaction { get; init; } - /// - /// The default color for transactions - /// - public string DefaultTransactionColor { get; init; } - /// - /// The list of tags in the account - /// - public List AccountTags { get; init; } - /// - /// Whether or not this transaction can be copied - /// - public bool CanCopy { get; init; } - /// - /// Whether or not the dialog is editing a transaction - /// - public bool IsEditing { get; init; } - /// - /// Whether or not there was a request to make a copy of transaction - /// - public bool CopyRequested { get; set; } - /// - /// The original repeat interval of a transaction - /// - public TransactionRepeatInterval OriginalRepeatInterval { get; init; } - /// - /// The CultureInfo to use when displaying a number string - /// - public CultureInfo CultureForNumberString { get; init; } - - /// - /// Whether to use native digits - /// - public bool UseNativeDigits => Models.Configuration.Current.UseNativeDigits; // Full name is required to avoid error because of ambiguous reference (there's also SixLabors.ImageSharp.Configuration) - /// - /// Decimal Separator Inserting - /// - public InsertSeparator InsertSeparator => Models.Configuration.Current.InsertSeparator; // Full name is required to avoid error because of ambiguous reference (there's also SixLabors.ImageSharp.Configuration) - /// - /// The list of group names - /// - public List GroupNames => _groups.Values.OrderBy(x => x.Name == _("Ungrouped") ? " " : x.Name).Select(x => x.Name).ToList(); - - /// - /// Constructs a TransactionDialogController - /// - /// The Transaction object represented by the controller - /// The list of groups in the account - /// The list of tags in the account - /// The list of transactions in the account - /// Whether or not the transaction can be copied - /// A default color for the transaction - /// The CultureInfo to use for the amount string - internal TransactionDialogController(Transaction transaction, Dictionary transactions, Dictionary groups, List accountTags, bool canCopy, string transactionDefaultColor, CultureInfo cultureNumber) - { - _disposed = false; - DefaultTransactionColor = transactionDefaultColor; - _transactions = transactions; - _groups = groups; - Transaction = (Transaction)transaction.Clone(); - AccountTags = new List(accountTags); - CanCopy = canCopy; - IsEditing = canCopy; - CopyRequested = false; - OriginalRepeatInterval = Transaction.RepeatInterval; - CultureForNumberString = cultureNumber; - if (string.IsNullOrWhiteSpace(Transaction.RGBA)) - { - Transaction.RGBA = DefaultTransactionColor; - } - AccountTags.Remove(AccountTags[0]); //remove untagged - } - - /// - /// Constructs a TransactionDialogController - /// - /// The id of the new transaction - /// The list of groups in the account - /// The list of tags in the account - /// The list of transactions in the account - /// A default type for the transaction - /// A default color for the transaction - /// The CultureInfo to use for the amount string - internal TransactionDialogController(uint id, Dictionary transactions, Dictionary groups, List accountTags, TransactionType transactionDefaultType, string transactionDefaultColor, CultureInfo cultureNumber) - { - _disposed = false; - DefaultTransactionColor = transactionDefaultColor; - _transactions = transactions; - _groups = groups; - AccountTags = new List(accountTags); - Transaction = new Transaction(id); - CanCopy = false; - IsEditing = false; - CopyRequested = false; - OriginalRepeatInterval = Transaction.RepeatInterval; - CultureForNumberString = cultureNumber; - //Set Defaults For New Transaction - Transaction.Type = transactionDefaultType; - Transaction.RGBA = DefaultTransactionColor; - AccountTags.Remove(AccountTags[0]); //remove untagged - } - - /// - /// Finalizes the TransactionDialogController - /// - ~TransactionDialogController() => Dispose(false); - - /// - /// The repeat interval index used by GUI - /// - public uint RepeatIntervalIndex => (uint)Transaction.RepeatInterval switch - { - 0 => (uint)Transaction.RepeatInterval, - 1 => (uint)Transaction.RepeatInterval, - 2 => (uint)Transaction.RepeatInterval, - 7 => 3, - _ => (uint)Transaction.RepeatInterval + 1 - }; - - /// - /// Frees resources used by the TransactionDialogController object - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Frees resources used by the TransactionDialogController object - /// - protected virtual void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - if (disposing) - { - if (IsEditing) - { - Transaction.Dispose(); - } - var jpgPath = $"{UserDirectories.ApplicationCache}{Path.DirectorySeparatorChar}Denaro_ViewReceipt_TEMP.jpg"; - if (File.Exists(jpgPath)) - { - File.Delete(jpgPath); - } - } - _disposed = true; - } - - /// - /// Gets a list of suggestions to finish a description - /// - /// The description to get suggestions for - /// The list of suggestions and their subtext and transactions - public List<(string, string, Transaction)> GetDescriptionSuggestions(string description) - { - return _transactions - .Where(x => FuzzySharp.Fuzz.PartialRatio(x.Value.Description.ToLower().Normalize(NormalizationForm.FormKD), description.ToLower().Normalize(NormalizationForm.FormKD)) > 75) - .GroupBy(x => x.Value.Description.ToLower()) - .Select(x => - { - var first = x.FirstOrDefault(y => y.Value.GroupId != -1, x.First()).Value; - return (first.Description, first.GroupId != -1 ? $"{_("Group")}: {_groups[(uint)first.GroupId].Name}" : "", first); - }) - .OrderByDescending(x => FuzzySharp.Fuzz.PartialRatio(x.Item1.ToLower().Normalize(NormalizationForm.FormKD), description.ToLower().Normalize(NormalizationForm.FormKD))) - .Take(5).ToList(); - } - - /// - /// Gets the name of a group from a group id - /// - /// The id of the group - /// The name of the group - public string GetGroupNameFromId(uint id) - { - try - { - return _groups[id].Name; - } - catch - { - return ""; - } - } - - /// - /// Gets an Image object for a file - /// - /// The image file path - /// Image? - public async Task GetImageFromPathAsync(string? path) - { - if (File.Exists(path)) - { - if (Path.GetExtension(path).ToLower() == ".jpeg" || Path.GetExtension(path).ToLower() == ".jpg" || Path.GetExtension(path).ToLower() == ".png") - { - return await Image.LoadAsync(path); - } - if (Path.GetExtension(path).ToLower() == ".pdf") - { - using var library = DocLib.Instance; - using var docReader = library.GetDocReader(path, new PageDimensions(1080, 1920)); - using var pageReader = docReader.GetPageReader(0); - return Image.LoadPixelData(pageReader.GetImage(new NaiveTransparencyRemover(255, 255, 255)), pageReader.GetPageWidth(), pageReader.GetPageHeight()); - } - } - return null; - } - - /// - /// Opens the receipt image of the transaction in the default viewer application - /// - public async Task OpenReceiptImageAsync() - { - if (Transaction.Receipt != null) - { - var jpgPath = $"{UserDirectories.ApplicationCache}{Path.DirectorySeparatorChar}Denaro_ViewReceipt_TEMP.jpg"; - await Transaction.Receipt.SaveAsJpegAsync(jpgPath); - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - Process.Start(new ProcessStartInfo("explorer", $"\"{jpgPath}\"") { CreateNoWindow = true }); - } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - Process.Start(new ProcessStartInfo("xdg-open", $"\"{jpgPath}\"")); - } - } - } - - /// - /// Updates the Transaction object - /// - /// The new DateOnly object - /// The new description - /// The new TransactionType - /// The new selected repeat index - /// The new Group name - /// The new rgba string - /// Whether or not to use the group's color instead of the transaction's color - /// List of transaction tags - /// The new amount string - /// The new receipt image - /// The new repeat end date DateOnly object - /// The new notes - /// TransactionCheckStatus - public TransactionCheckStatus UpdateTransaction(DateOnly date, string description, TransactionType type, int selectedRepeat, string groupName, string rgba, bool useGroupColor, List tags, string amountString, Image? receipt, DateOnly? repeatEndDate, string notes) - { - TransactionCheckStatus result = 0; - var amount = 0m; - if (string.IsNullOrWhiteSpace(description)) - { - result |= TransactionCheckStatus.EmptyDescription; - } - try - { - amount = decimal.Parse(amountString.ReplaceNativeDigits(CultureForNumberString), NumberStyles.Currency, CultureForNumberString.NumberFormat); - } - catch - { - result |= TransactionCheckStatus.InvalidAmount; - } - if (amount <= 0) - { - result |= TransactionCheckStatus.InvalidAmount; - } - if (repeatEndDate.HasValue && repeatEndDate.Value <= date) - { - result |= TransactionCheckStatus.InvalidRepeatEndDate; - } - if (result != 0) - { - return result; - } - Transaction.Date = date; - Transaction.Description = description; - Transaction.Type = type; - if (selectedRepeat == 3) - { - selectedRepeat = 7; - } - else if (selectedRepeat > 3) - { - selectedRepeat -= 1; - } - Transaction.RepeatInterval = (TransactionRepeatInterval)selectedRepeat; - Transaction.Amount = amount; - Transaction.GroupId = groupName == _("Ungrouped") ? -1 : (int)_groups.FirstOrDefault(x => x.Value.Name == groupName).Key; - Transaction.RGBA = rgba; - Transaction.UseGroupColor = useGroupColor; - Transaction.Tags = tags; - if (Transaction.Receipt != receipt) - { - Transaction.Receipt?.Dispose(); - Transaction.Receipt = receipt; - } - if (Transaction.RepeatInterval == TransactionRepeatInterval.Never) - { - Transaction.RepeatFrom = -1; - } - else if (Transaction.RepeatInterval != OriginalRepeatInterval) - { - Transaction.RepeatFrom = 0; - } - Transaction.RepeatEndDate = Transaction.RepeatInterval == TransactionRepeatInterval.Never ? null : repeatEndDate; - Transaction.Notes = notes; - return TransactionCheckStatus.Valid; - } -} diff --git a/NickvisionMoney.Shared/Controllers/TransferDialogController.cs b/NickvisionMoney.Shared/Controllers/TransferDialogController.cs deleted file mode 100644 index 26e712a88..000000000 --- a/NickvisionMoney.Shared/Controllers/TransferDialogController.cs +++ /dev/null @@ -1,241 +0,0 @@ -using Nickvision.Aura; -using NickvisionMoney.Shared.Helpers; -using NickvisionMoney.Shared.Models; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Threading.Tasks; - -namespace NickvisionMoney.Shared.Controllers; - -/// -/// Statuses for when a transfer is validated -/// -[Flags] -public enum TransferCheckStatus -{ - Valid = 1, - InvalidDestPath = 2, - DestAccountRequiresPassword = 4, - DestAccountPasswordInvalid = 8, - InvalidAmount = 16, - InvalidConversionRate = 32 -} - -/// -/// A controller for a TransferDialog -/// -public class TransferDialogController -{ - private readonly decimal _sourceAmount; - private string? _previousDestPath; - private AccountMetadata? _previousDestMetadata; - - /// - /// Gets the AppInfo object - /// - public AppInfo AppInfo => Aura.Active.AppInfo; - /// - /// The transfer represented by the controller - /// - public Transfer Transfer { get; init; } - /// - /// The list of recent accounts - /// - public List RecentAccounts { get; init; } - /// - /// The CultureInfo to use when displaying a source number string - /// - public CultureInfo CultureForSourceNumberString { get; init; } - /// - /// The CultureInfo to use when displaying a destination number string - /// - public CultureInfo? CultureForDestNumberString { get; private set; } - - /// - /// The currency code of the source account - /// - public string SourceCurrencyCode => CultureForSourceNumberString.NumberFormat.NaNSymbol; - /// - /// The currency code of the destination account, if available - /// - public string? DestinationCurrencyCode => CultureForDestNumberString == null ? null : CultureForDestNumberString.NumberFormat.NaNSymbol; - /// - /// Whether to use native digits - /// - public bool UseNativeDigits => Configuration.Current.UseNativeDigits; - /// - /// Decimal Separator Inserting - /// - public InsertSeparator InsertSeparator => Configuration.Current.InsertSeparator; - - /// - /// Constructs a TransferDialogController - /// - /// The Transfer model - /// The amount of the source account - /// The recent accounts of the app - /// The CultureInfo to use for the amount string - internal TransferDialogController(Transfer transfer, decimal sourceAmount, List recentAccounts, CultureInfo culture) - { - _sourceAmount = sourceAmount; - _previousDestPath = null; - _previousDestMetadata = null; - Transfer = transfer; - RecentAccounts = new List(); - foreach (var account in recentAccounts) - { - if (account.Path != Transfer.SourceAccountPath) - { - RecentAccounts.Add(account); - } - } - CultureForSourceNumberString = culture; - } - - /// - /// Gets a color for an account type - /// - /// The account type - /// The rgb color for the account type - public string GetColorForAccountType(AccountType accountType) - { - return accountType switch - { - AccountType.Checking => Configuration.Current.AccountCheckingColor, - AccountType.Savings => Configuration.Current.AccountSavingsColor, - AccountType.Business => Configuration.Current.AccountBusinessColor, - _ => Configuration.Current.AccountSavingsColor - }; - } - - /// - /// Gets the conversion rate from the source currency to the destination currency using the internet - /// - /// (string Source, string Destination) - public async Task<(string Source, string Destination)> GetConversionRateOnlineAsync() - { - if (string.IsNullOrWhiteSpace(DestinationCurrencyCode)) - { - return ("", ""); - } - var rates = await CurrencyConversionService.GetConversionRatesAsync(SourceCurrencyCode); - if (rates != null && rates.ContainsKey(DestinationCurrencyCode)) - { - return (rates[SourceCurrencyCode].ToAmountString(CultureForSourceNumberString, UseNativeDigits, false), rates[DestinationCurrencyCode].ToAmountString(CultureForDestNumberString!, UseNativeDigits, false, true)); - } - return ("", ""); - } - - /// - /// Updates the Transfer object - /// - /// The new path of the destination account - /// The password for the destination account (if needed) - /// The new amount string - /// The source currency conversion amount - /// The destination currency conversion amount - /// TransferCheckStatus - public TransferCheckStatus UpdateTransfer(string destPath, string? destPassword, string amountString, string sourceConversionAmountString, string destConversionAmountString) - { - TransferCheckStatus result = 0; - var amount = 0m; - var conversionRate = 0m; - if (string.IsNullOrWhiteSpace(destPath) || !Path.Exists(destPath) || Path.GetExtension(destPath).ToLower() != ".nmoney" || Transfer.SourceAccountPath == destPath) - { - result |= TransferCheckStatus.InvalidDestPath; - } - else - { - if (new Account(destPath).IsEncrypted && string.IsNullOrEmpty(destPassword)) - { - result |= TransferCheckStatus.DestAccountRequiresPassword; - } - else - { - if (_previousDestPath != destPath) - { - _previousDestPath = destPath; - _previousDestMetadata = null; - } - var lcMonetary = Environment.GetEnvironmentVariable("LC_MONETARY"); - if (lcMonetary != null && lcMonetary.Contains(".UTF-8")) - { - lcMonetary = lcMonetary.Remove(lcMonetary.IndexOf(".UTF-8"), 6); - } - if (lcMonetary != null && lcMonetary.Contains('_')) - { - lcMonetary = lcMonetary.Replace('_', '-'); - } - if (lcMonetary != null && lcMonetary.Contains('@')) - { - lcMonetary = lcMonetary.Replace('@', '-'); - } - CultureForDestNumberString = new CultureInfo(!string.IsNullOrWhiteSpace(lcMonetary) ? lcMonetary : CultureInfo.CurrentCulture.Name, true); - var destRegion = new RegionInfo(!string.IsNullOrWhiteSpace(lcMonetary) ? lcMonetary : CultureInfo.CurrentCulture.Name); - if (_previousDestMetadata == null) - { - _previousDestMetadata = AccountMetadata.LoadFromAccountFile(destPath, destPassword)!; - } - if (_previousDestMetadata == null) - { - result |= TransferCheckStatus.DestAccountPasswordInvalid; - } - else - { - Transfer.DestinationAccountPassword = destPassword; - if (_previousDestMetadata.UseCustomCurrency) - { - CultureForDestNumberString.NumberFormat.CurrencySymbol = _previousDestMetadata.CustomCurrencySymbol ?? CultureForDestNumberString.NumberFormat.CurrencySymbol; - CultureForDestNumberString.NumberFormat.NaNSymbol = _previousDestMetadata.CustomCurrencyCode ?? destRegion.ISOCurrencySymbol; - } - else - { - CultureForDestNumberString.NumberFormat.NaNSymbol = destRegion.ISOCurrencySymbol; - } - if (SourceCurrencyCode != DestinationCurrencyCode) - { - try - { - conversionRate = decimal.Parse(sourceConversionAmountString.ReplaceNativeDigits(CultureForSourceNumberString), NumberStyles.Number, CultureForSourceNumberString) / decimal.Parse(destConversionAmountString.ReplaceNativeDigits(CultureForSourceNumberString), NumberStyles.Number, CultureForSourceNumberString); - if (conversionRate == 0) - { - throw new ArgumentException(); - } - } - catch - { - result |= TransferCheckStatus.InvalidConversionRate; - } - } - else - { - conversionRate = 1.0m; - } - } - } - } - try - { - amount = decimal.Parse(amountString.ReplaceNativeDigits(CultureForSourceNumberString), NumberStyles.Currency, CultureForSourceNumberString); - } - catch - { - result |= TransferCheckStatus.InvalidAmount; - } - if (amount <= 0 || amount > _sourceAmount) - { - result |= TransferCheckStatus.InvalidAmount; - } - if (result != 0) - { - return result; - } - Transfer.DestinationAccountPath = destPath; - Transfer.DestinationAccountName = _previousDestMetadata!.Name; - Transfer.SourceAmount = amount; - Transfer.ConversionRate = conversionRate; - return TransferCheckStatus.Valid; - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Docs/html/C/configuration.html b/NickvisionMoney.Shared/Docs/html/C/configuration.html deleted file mode 100644 index 78b916893..000000000 --- a/NickvisionMoney.Shared/Docs/html/C/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ar/account.html b/NickvisionMoney.Shared/Docs/html/ar/account.html deleted file mode 100644 index a0eb7d315..000000000 --- a/NickvisionMoney.Shared/Docs/html/ar/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ar/configuration.html b/NickvisionMoney.Shared/Docs/html/ar/configuration.html deleted file mode 100644 index 2c5050b0e..000000000 --- a/NickvisionMoney.Shared/Docs/html/ar/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
اللون المبدئيُّ للمعاملات
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
اللون المبدئيُّ للتحويلات
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
اللون المبدئيُّ للمجموعات
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
لون حساب الأعمال
-

A color used to mark accounts with the Business type in a recent accounts list.

-
استخدم أرقام اللغة
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ar/import-export.html b/NickvisionMoney.Shared/Docs/html/ar/import-export.html deleted file mode 100644 index 906ba425a..000000000 --- a/NickvisionMoney.Shared/Docs/html/ar/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ar/index.html b/NickvisionMoney.Shared/Docs/html/ar/index.html deleted file mode 100644 index 149545b86..000000000 --- a/NickvisionMoney.Shared/Docs/html/ar/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ar/transaction.html b/NickvisionMoney.Shared/Docs/html/ar/transaction.html deleted file mode 100644 index 0fd143b0f..000000000 --- a/NickvisionMoney.Shared/Docs/html/ar/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -المعاملة - - - -
-

المعاملة

-
-
-

This page explains all properties of transactions in Denaro.

-
-
المعرِّف
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
المَبلغ
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
النوع
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
مدَّة التكرار
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
تاريخ انتهاء التكرار
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
الوسوم
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ar/transfer.html b/NickvisionMoney.Shared/Docs/html/ar/transfer.html deleted file mode 100644 index 6cada35a7..000000000 --- a/NickvisionMoney.Shared/Docs/html/ar/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/cs/account.html b/NickvisionMoney.Shared/Docs/html/cs/account.html deleted file mode 100644 index 7096ad4d3..000000000 --- a/NickvisionMoney.Shared/Docs/html/cs/account.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -Účet - - - -
-

Účet

-
-
-

Na této stránce jsou vysvětleny všechny vlastnosti účtů v aplikaci Denaro. Většina z nich je uvedena v dialogovém okně Nastavení účtu. Toto okno se také automaticky otevře po vytvoření nového účtu.

-

Každý účet je uložen v jednom souboru *.nmoney. Soubory vytvořené ve starší stabilní verzi aplikace Denaro lze bezpečně otevřít v novější stabilní verzi aplikace. Přestože aplikace může běžet na různých platformách (Windows a Linux), soubory *.nmoney jsou mezi platformami 100% kompatibilní, pokud pocházejí ze stejné verze aplikace (např. V2023.1.0).

-
- - -

Nestabilní (beta a RC) verze aplikace mohou obsahovat chyby nebo nedokončené úpravy, které mohou způsobit ztrátu dat. NEPOUŽÍVEJTE soubory účtů, které obsahují skutečná data, v nestabilních verzích aplikace!

-
-
-
Název
-

Název účtu se zobrazuje v seznamu posledních účtů a na kartách. Název nemá omezenou délku a může obsahovat libovolné znaky včetně emotikonů.

-
Typ účtu
-

K dispozici jsou 3 typy účtů: 🟣Běžný, 🔵Spořicí a 🟢Firemní. Typ účtu je pouze užitečné označení, které se zobrazuje v seznamu posledních účtů a nemá vliv na to, jak aplikace funguje nebo co můžete s účtem dělat. Každý typ účtu má svou vlastní barvu, tyto barvy lze nakonfigurovat v globálním nastavení .

-
Výchozí typ transakce
-

Při vytváření nové transakce bude její typ ve výchozím nastavení stejný jako v tomto nastavení.

-
Hranice pro připomenutí transakcí
-

Hranice použitá při zobrazování připomínek o nadcházejících transakcích.

-
Systémová měna
-
-

Při každém spuštění získá aplikace údaje o měně a formátování čísel z vašich systémových místních nastavení. Tyto údaje se použijí k zobrazení symbolu měny (pokud není použita vlastní měna, viz níže) a k určení, v jakém formátu budou čísla přijímána jako hodnoty částek transakcí. Několik příkladů:

-
    -
  • Pokud je vaše místní prostředí Angličtina (Spojené státy), symbol měny bude nastaven na $ a 1,000.00 bude akceptováno jako platné číslo.

  • -
  • Pokud je vaše místní prostředí Čeština, symbol měny bude nastaven na a 1 000,00 bude akceptováno jako platné číslo.

  • -
  • Pokud je vaše místní prostředí Ruština, symbol měny bude nastaven na a 1000,00 bude akceptováno jako platné číslo.

  • -
-
- - - - - - - - - - - - - -

V systému Linux je možné nastavit různé místní jazyky a formáty systému. Změna těchto nastavení se liší v závislosti na používaném desktopovém prostředí. Navzdory rozdílům v umístění těchto nastavení jejich změna upraví proměnné systémového prostředí, například LANG, LC_TIME a LC_MONETARY. Denaro se pokusí použít formáty částek a dat podle těchto proměnných. Pokud aplikace očekávané formáty nepoužívá, zkontrolujte, zda jsou proměnné správně nastaveny pomocí příkazu locale v terminálu. Pokud jste našli chybu a chcete ji nahlásit, poskytněte prosím výstup příkazu locale, aby mohli vývojáři reprodukovat váš problém se stejným nastavením.

-
-
-
Použít vlastní měnu
-

Pokud je tato možnost povolena, bude místo symbolu měny, který poskytuje vaše systémové prostředí, použit vlastní symbol měny.

-
Vlastní symbol měny
-

Až 3 znaky nebo 1 emotikon. Nemůže to být číslo.

-
Vlastní kód měny
-
-

Až 3 znaky nebo 1 emotikon.

-

Příklad pro pochopení rozdílu mezi symbolem a kódem: je symbol, CZK je kód.

-
-
Vlastní styl množství měny
-
-

Výběr mezi zobrazením množství jedním z následujících způsobů:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Vlastní oddělovače desetinných míst a skupin měn
-

Až 2 znaky nebo 1 emotikon.

-
Vlastní desetinné číslice měny
-

Velikost desetinné části hodnot částek. Při „neomezeném“ počtu číslic bude v desetinné části tolik čísel, kolik je potřeba k zobrazení přesné částky, ale pokud je částka celým číslem, nebude desetinná část žádná.

-
Heslo
-

Každý účet může být chráněn heslem. Přidáním hesla se účet zašifruje (bez dešifrování pomocí hesla není možné data číst). Buďte opatrní: pokud heslo ztratíte, nebudete moci data obnovit! Heslo lze také změnit nebo odstranit pomocí dialogového okna nastavení otevřeného účtu. Odstraněním hesla dojde k dešifrování účtu.

-
Řazení podle ID, data nebo částky
-

U každého účtu je uloženo, zda se mají transakce v hlavním okně řadit podle ID, data nebo částky. Pokaždé, když toto nastavení změníte, bude uloženo do souboru účtu a obnoví se při jeho opětovném otevření.

-
Pořadí řazení
-

Každý účet uchovává informace o pořadí transakcí v hlavním okně. Pokaždé, když je změníte, uloží se do souboru účtu a obnoví se při jeho opětovném otevření.

-
Viditelnost skupin
-

Každý účet ukládá informace o tom, zda je seznam skupin v hlavním okně skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu skupin, je tato informace uložena a poté obnovena při opětovném otevření účtu.

-
Viditelnost štítků
-

Každý účet ukládá informace o tom, zda je seznam štítků v hlavním okně skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu štítků, je tato informace uložena a poté obnovena při opětovném otevření účtu.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/cs/configuration.html b/NickvisionMoney.Shared/Docs/html/cs/configuration.html deleted file mode 100644 index dda9ec045..000000000 --- a/NickvisionMoney.Shared/Docs/html/cs/configuration.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Nastavení - - - -
-

Nastavení

-
-
-

Na této stránce je popsáno, co můžete změnit v nastavení aplikace.

-

V závislosti na platformě je konfigurace v rozhraní aplikace označena jako Předvolby nebo Nastavení.

-
-
Motiv
-

Nastavte si světlý nebo tmavý motiv, nebo nastavte, aby Denaro následovalo váš systémový motiv. Změna tohoto nastavení v systému Windows vyžaduje restart aplikace, aby se uplatnila.

-
Výchozí barva transakce
-

Barva, která bude vybrána jako výchozí při přidání nové transakce s jedinečnou barvou. Její změna neovlivní existující transakce, i když používají dříve zvolenou výchozí barvu.

-
Výchozí barva převodu
-

Barva, která bude použita pro transakce vytvořené pomocí převodu . Změna tohoto parametru neovlivní existující transakce.

-
Výchozí barva skupiny
-

Barva, která bude ve výchozím nastavení vybrána při přidávání nové skupiny. Je to také barva pro skupinu „Neseskupené“.

-
Barva běžného účtu
-

Barva používaná k označení účtů s typem Běžný v seznamu nedávných účtů.

-
Barva spořicího účtu
-

Barva používaná k označení účtů s typem Spořicí v seznamu nedávných účtů.

-
Barva firemního účtu
-

Barva používaná k označení účtů s typem Firemní v seznamu nedávných účtů.

-
Použít nativní číslice
-

Nastavení, zda se mají místo latinských číslic používat číslice, které jsou pro vaši oblast přirozené. Pokud je toto nastavení povoleno, bude například ٠١٢ použito místo 012 pro lokality, které používají východoarabské číslice.

-
Vložení desetinného oddělovače
-

Nastavení, pro které stisknuté klávesy se do pole částky vloží desetinný oddělovač lokálního jazyka: tečka na numerickém bloku, libovolná tečka a čárka nebo žádný. Pokud již je desetinný oddělovač v poli, nebude vložen.

-
Složka zálohy CSV
-

Složka, do které budou vaše data po každé změně automaticky exportována jako soubor CSV. Tato funkce nefunguje pro účty chráněné heslem, protože soubory CSV nelze chránit heslem.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/cs/import-export.html b/NickvisionMoney.Shared/Docs/html/cs/import-export.html deleted file mode 100644 index a65682d29..000000000 --- a/NickvisionMoney.Shared/Docs/html/cs/import-export.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Import/export - - - -
-

Import/export

-
-
-
-

Formáty importu

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Data by měla být ve formátu RRRRMMDD.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Data by měla být v anglickém (americkém) formátu (MM/DD/RRRR).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ Formát CSV je sice běžný a některé banky umožňují svým uživatelům exportovat informace ve formátu CSV, ale tyto soubory jsou ve skutečnosti tabulky, které mohou obsahovat libovolná data. Import souboru CSV vytvořeného v jiném programu selže, protože jeho data nebudou kompatibilní s tím, co se aplikace Denaro snaží ze souboru získat. Účelem importu/exportu CSV je poskytnout způsob, jak přidávat data do účtu pomocí externích programů, jako jsou textové editory a kancelářské balíky. Import přidá pouze nové transakce, aniž by přepsal ty stávající. Pokud chcete soubor CSV vytvořit ručně, toto je hlavička, která obsahuje všechny sloupce, které aplikace Denaro očekává, že najde:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      ID transakce, mělo by být pro daný účet jedinečné. ID začínají číslem 1.

      -
    • -
    • -

      Date

      -

      Datum transakce (nebo datum zahájení v případě opakované transakce) by mělo být v anglickém (americkém) formátu (MM/DD/RRRR).

      -
    • -
    • -

      Description

      -

      Popis transakce, může obsahovat libovolné znaky kromě středníku.

      -
    • -
    • -

      Type

      -

      Typ transakce: 0 pro příjem, 1 pro výdaj.

      -
    • -
    • -

      RepeatInterval

      -

      Číslo představující interval opakování transakce:

      -

      0 - Nikdy

      -

      1 - Denně

      -

      2 - Týdně

      -

      7 - Dvakrát týdně

      -

      3 - Měsíčně

      -

      4 - Čtvrtletně

      -

      5 - Ročně

      -

      6 - Dvakrát ročně

      -

      Podrobnosti o opakovaných transakcích naleznete v části Interval opakování na stránce transakce.

      -
    • -
    • -

      RepeatFrom

      -

      Mělo by to být buď ID zdrojové transakce nebo 0, pokud se jedná o zdrojovou transakci, nebo -1, pokud se nejedná o opakovanou transakci.

      -
    • -
    • -

      RepeatEndDate

      -

      Datum ukončení opakované transakce by mělo být v anglickém (americkém) formátu (MM/DD/RRRR). Pokud se nejedná o opakovanou transakci, ponechte jej prázdný.

      -
    • -
    • -

      Amount

      -

      Částka transakce v anglickém (americkém) formátu (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Barva transakce, by měla být ve formátu rgb(R,G,B), kde R, G a B jsou celá čísla v rozsahu 0 až 255.

      -
    • -
    • -

      UseGroupColor

      -

      Zda má transakce používat skupinovou barvu: 0 — ne, 1 — ano.

      -
    • -
    • -

      Group

      -

      ID skupiny transakce. ID začíná číslem 1. U neseskupených transakcí by mělo být -1 (ne 0, to je nesprávná hodnota pro ID skupiny).

      -
    • -
    • -

      GroupName

      -

      Název skupiny transakce, měl by odpovídat ID skupiny. Může obsahovat libovolné znaky kromě středníku. Pro transakce bez skupiny jej ponechte prázdný, v ostatních případech by neměl být prázdný.

      -
    • -
    • -

      GroupDescription

      -

      Popis skupiny transakce, měl by odpovídat identifikačnímu číslu skupiny. Může obsahovat libovolné znaky kromě středníku a může být prázdný. Pro transakce bez skupiny jej ponechte prázdný.

      -
    • -
    • -

      GroupRGBA

      -

      Barva skupiny, měla by být ve formátu rgb(R,G,B), kde R, G a B jsou celá čísla v rozsahu 0 až 255.

      -
    • -
    -

    Faktura a poznámky se v souboru CSV nenachází.

    -
  • -
-
-
-

Formáty exportu

-
-

Můžete si vybrat, zda chcete exportovat všechny informace, nebo pouze aktuální zobrazení. Pokud vyberete aktuální zobrazení, budou aktuálně zobrazené transakce exportovány ve stejném pořadí, v jakém jsou zobrazeny.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    Soubor bude obsahovat informace o účtu, seznam transakcí a obrázky faktur. Transakce jsou barevné jako v aplikaci, ale barvy jsou upraveny tak, že jsou poloprůhledné, aby byl černý text vždy dobře viditelný. Pro exportovaný soubor můžete nastavit heslo.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/cs/index.html b/NickvisionMoney.Shared/Docs/html/cs/index.html deleted file mode 100644 index d77792048..000000000 --- a/NickvisionMoney.Shared/Docs/html/cs/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Nápověda aplikace Denaro - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/cs/transaction.html b/NickvisionMoney.Shared/Docs/html/cs/transaction.html deleted file mode 100644 index 84fb6a3c3..000000000 --- a/NickvisionMoney.Shared/Docs/html/cs/transaction.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Transakce - - - -
-

Transakce

-
-
-

Na této stránce jsou vysvětleny všechny vlastnosti transakcí v aplikaci Denaro.

-
-
ID
-

Každá transakce má ID, které je pro daný účet jedinečné. ID začíná číslem 1 a zvyšuje se s každou přidanou transakcí. ID nelze měnit, identifikátory odstraněných transakcí se znovu nepoužívají.

-
Popis
-

Délka není omezena. Nesmí obsahovat středník.

-
Množství
-

Číslo ve formátu platném pro vaše místní prostředí, podrobnosti viz Systémová měna na stránce Účet.

-
Typ
-

Příjem nebo Výdaj. Ve výchozím nastavení se při otevření dialogu pro přidání nové transakce vybere ta, která byla zvolena v nastavení účtu.

-
Datum
-

Lze vybrat libovolné datum, můžete také vytvářet transakce pro budoucí data.

-
Interval opakování
-

Tuto možnost použijte k vytvoření opakující se transakce. Po přidání transakce s intervalem opakování se tato transakce stane zdrojovou transakcí. Aplikace Denaro bude automaticky generovat opakované transakce pro data do dnešního dne nebo zadaného data ukončení, pokud je nastaveno v minulosti. Opakované transakce nelze upravovat ani mazat, upravovat lze pouze zdrojové transakce. Při úpravě zdrojové transakce se aplikace Denaro zeptá, zda chcete upravit nebo zrušit přiřazení opakovaných transakcí. Pokud se rozhodnete pro zrušení přiřazení, opakované transakce se stanou normálními transakcemi a lze je upravovat nebo mazat samostatně.

-
Datum ukončení opakování
-

Datum ukončení transakce s opakováním. Nemůže být dřívější nebo stejné jako datum zahájení.

-
Skupina
-

Každá transakce může patřit pouze do jedné skupiny nebo do žádné (skupina „Neseskupené“).

-
Barva
-

Barva pro transakce. Lze nastavit použití barvy skupiny nebo jedinečné barvy. Při výběru jedinečné barvy bude ve výchozím nastavení nastavena na barvu vybranou v nastavení, lze ji ale změnit na libovolnou barvu.

-
Štítky
-

Seznam štítků pro transakci. Transakce může mít neomezený počet štítků (nebo může být bez nich). Štítky mohou obsahovat libovolné znaky kromě čárky (,) a mohou mít libovolnou délku, očekává se však, že se bude jednat o krátká klíčová slova. Štítky jsou určeny k dodatečnému filtrování, pokud nestačí použití skupin. Štítky se ukládají pouze v samotných transakcích, v důsledku čehož nepoužité štítky při uzavření účtu automaticky zmizí.

-
Faktura
-

Obrázek faktury za transakci. Můžete nahrát obrázek JPEG nebo PNG nebo dokument PDF, ale bez ohledu na formát bude převeden a uložen jako obrázek JPEG. V případě PDF bude uložena pouze první stránka. Soubor můžete kdykoli odstranit nebo nahrát jiný.

-
Poznámky
-

Volně formulovaná textová poznámka, která se připojí k transakci.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/cs/transfer.html b/NickvisionMoney.Shared/Docs/html/cs/transfer.html deleted file mode 100644 index 829cc08f6..000000000 --- a/NickvisionMoney.Shared/Docs/html/cs/transfer.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - -Převod - - - -
-

Převod

-
-
-

Převod je způsob, jak lze přenést peníze z jednoho účtu na druhý. Po provedení převodu se vytvoří 2 transakce s následujícími popisy:

-
    -
  • „Převod na Název cílového účtu“ na zdrojovém účtu.

  • -
  • „Převod z Název zdrojového účtu“ na cílovém účtu.

  • -
-

Transakce vytvořené pomocí převodu jsou jednoduché transakce, které lze libovolně upravovat nebo mazat. Tyto transakce nejsou propojené: úprava transakce na zdrojovém účtu neovlivní transakci na cílovém účtu a naopak.

-

Převod neumožňuje vytvářet opakující se transakce ani nastavovat jiné vlastnosti než částku. Pro vytvořené transakce se použije barva vybraná v nastavení .

-

Pokud vytváříte převod mezi účty v různých měnách, budete vyzváni k zadání převodního kurzu.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/da/account.html b/NickvisionMoney.Shared/Docs/html/da/account.html deleted file mode 100644 index c46d5c697..000000000 --- a/NickvisionMoney.Shared/Docs/html/da/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/da/configuration.html b/NickvisionMoney.Shared/Docs/html/da/configuration.html deleted file mode 100644 index 7a13b9fa8..000000000 --- a/NickvisionMoney.Shared/Docs/html/da/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/da/import-export.html b/NickvisionMoney.Shared/Docs/html/da/import-export.html deleted file mode 100644 index 5ae72c509..000000000 --- a/NickvisionMoney.Shared/Docs/html/da/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/da/index.html b/NickvisionMoney.Shared/Docs/html/da/index.html deleted file mode 100644 index 63a8008aa..000000000 --- a/NickvisionMoney.Shared/Docs/html/da/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/da/transaction.html b/NickvisionMoney.Shared/Docs/html/da/transaction.html deleted file mode 100644 index acdbc1809..000000000 --- a/NickvisionMoney.Shared/Docs/html/da/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/da/transfer.html b/NickvisionMoney.Shared/Docs/html/da/transfer.html deleted file mode 100644 index 94e718bc3..000000000 --- a/NickvisionMoney.Shared/Docs/html/da/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/de/account.html b/NickvisionMoney.Shared/Docs/html/de/account.html deleted file mode 100644 index 9dba59c76..000000000 --- a/NickvisionMoney.Shared/Docs/html/de/account.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -Konto - - - -
-

Konto

-
-
-

Auf dieser Seite werden alle Eigenschaften von Konten in Denaro erläutert. Die meisten von ihnen werden im Dialog Kontoeinstellungen angezeigt. Dieser Dialog wird auch automatisch geöffnet, nachdem du ein neues Konto erstellt hast.

-

Jedes Konto wird in einer einzelnen *.nmoney Datei gespeichert. Dateien, die in einer älteren stabilen Version von Denaro erstellt worden sind, können unbedenklich in einer aktuelleren stabilen Version der Anwendung geöffnet werden. Obwohl die Anwendung auf verschiedenen Betriebssystemen laufen kann (Windows und Linux), sind die *.nmoney Dateien nur dann 100% kompatibel zwischen den Betriebssystemen, wenn sie von derselben Anwendungsversion stammen (z. B. V2023.1.0).

-
- - -

Instabile (Beta und RC) Anwendungsversionen können Fehler oder nicht fertiggestellte Anpassungen enthalten, die zu Datenverlust führen können. Benutze KEINE Kontodateien, die echte Daten enthalten, in einer instabilen Version der Anwendung!

-
-
-
Name
-

Der Kontoname wird in der Liste der zuletzt verwendeten Konten und in den Registerkarten angezeigt. Ein Name hat keine Längenbeschränkung und kann beliebige Zeichen enthalten, einschließlich Emojis.

-
Konto Typ
-

Es sind 3 Konto - Typen verfügbar: 🟣Girokonto, 🔵Sparkonto und 🟢Geschäftskonto. Der Konto - Typ ist nur ein nützliches Kennzeichnung, welche keine Auswirkungen auf die Funktion der Anwendung haben. Der Konto - Typ wird in der Liste der kürzlich bearbeiteten Konten angezeigt. Jeder Konto - Typ hat eine eigene Farbe, welche in den Globalen Einstellungen bearbeitet werden können.

-
Standard-Transaktionsart
-

Wenn Sie eine neue Transaktion erstellen, ist ihr Typ standardmäßig derselbe wie in dieser Einstellung.

-
Schwellenwert für Überweisungserinnerungen
-

The threshold used when showing reminders about upcoming transactions.

-
Systemwährung
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Benutzerdefinierte Währung verwenden
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Benutzerdefiniertes Währungssymbol
-

Bis zu 3 Zeichen oder 1 Emoji. Es darf keine Zahl sein.

-
Benutzerdefinierter Währungscode
-
-

Bis zu 3 Zeichen oder 1 Emoji.

-

Ein Beispiel zum Verständnis des Unterschieds zwischen einem Symbol und einem Code: $ ist ein Symbol, USD ist ein Code.

-
-
Benutzerdefinierter Währungsbetragsstil
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Benutzerdefinierte Dezimal- und Gruppentrennzeichen für Währungen
-

Bis zu 2 Zeichen oder 1 Emoji.

-
Benutzerdefinierte Währungsdezimalziffern
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Passwort
-

Jedes Konto kann durch ein Passwort geschützt werden. Das Hinzufügen eines Passworts führt zur Verschlüsselung des Kontos (wodurch es unmöglich wird, die Daten ohne Entschlüsselung mit dem Passwort zu lesen). Vorsicht: Wenn das Passwort verloren geht, können die Daten nicht wiederhergestellt werden! Ein Passwort kann auch über den Kontoeinstellungen-Dialog eines offenen Kontos geändert oder entfernt werden. Das Entfernen eines Passworts entschlüsselt das Konto.

-
Nach Kennung, Datum oder Betrag sortieren
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sortierreihenfolge
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Gruppen-Sichtbarkeit
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Schlagwörter-Sichtbarkeit
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/de/configuration.html b/NickvisionMoney.Shared/Docs/html/de/configuration.html deleted file mode 100644 index c6b35816f..000000000 --- a/NickvisionMoney.Shared/Docs/html/de/configuration.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Konfiguration - - - -
-

Konfiguration

-
-
-

Diese Seite beschreibt, was Sie in der Anwendungskonfiguration ändern können.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Thema
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Standardfarbe für Überweisungen
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Standardfarbe der Gruppe
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Geschäftskontofarbe
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Native Ziffern verwenden
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Dezimaltrennzeichen einfügen
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV-Sicherungsordner
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/de/import-export.html b/NickvisionMoney.Shared/Docs/html/de/import-export.html deleted file mode 100644 index 88188cd3b..000000000 --- a/NickvisionMoney.Shared/Docs/html/de/import-export.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Importieren/Exportieren - - - -
-

Importieren/Exportieren

-
-
-
-

Importformate

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Die Daten sollten im Format JJJJMMTT sein.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Die Daten sollten im englischen (US) Format (MM/TT/JJJJ) sein.

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/de/index.html b/NickvisionMoney.Shared/Docs/html/de/index.html deleted file mode 100644 index a28923a2f..000000000 --- a/NickvisionMoney.Shared/Docs/html/de/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/de/transaction.html b/NickvisionMoney.Shared/Docs/html/de/transaction.html deleted file mode 100644 index e55fc665a..000000000 --- a/NickvisionMoney.Shared/Docs/html/de/transaction.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Überweisung - - - -
-

Überweisung

-
-
-

This page explains all properties of transactions in Denaro.

-
-
ID
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Wiederholungs-Intervall
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Wiederholungs-Ende
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/de/transfer.html b/NickvisionMoney.Shared/Docs/html/de/transfer.html deleted file mode 100644 index 9337984f9..000000000 --- a/NickvisionMoney.Shared/Docs/html/de/transfer.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - -Überweisung - - - -
-

Überweisung

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/es/account.html b/NickvisionMoney.Shared/Docs/html/es/account.html deleted file mode 100644 index 9664f9255..000000000 --- a/NickvisionMoney.Shared/Docs/html/es/account.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -Cuenta - - - -
-

Cuenta

-
-
-

Esta página explica todas las propiedades de las cuentas en Denaro. La mayoría de ellas se muestran en Diálogo de configuración de la cuenta. Este cuadro de diálogo también se abre automáticamente después de crear una cuenta nueva.

-

Cada cuenta se almacena en un único archivo *.nmoney. Los archivos creados en una versión estable anterior de Denaro pueden abrirse con seguridad en una versión estable más reciente de la aplicación. Aunque la aplicación puede funcionar en diferentes plataformas (Windows y Linux), los archivos *.nmoney son 100% compatibles entre plataformas siempre que sean de la misma versión de la aplicación (p.ej. V2023.1.0).

-
- - -

Las versiones inestables (Beta y RC) de la aplicación pueden contener errores o modificaciones inacabadas que pueden causar la pérdida de datos. ¡No use archivos de cuenta que contengan datos reales en versiones inestables de la aplicación!

-
-
-
Nombre
-

El nombre de la cuenta se muestra en la lista de cuentas recientes y en las pestañas. Un nombre no tiene límite de longitud y puede contener cualquier carácter, incluidos emojis.

-
Tipo de cuenta
-

Hay 3 tipos de cuenta disponibles: 🟣Corriente, 🔵Ahorros y 🟢Empresas. El tipo de cuenta es sólo una etiqueta útil que se muestra en la lista de cuentas recientes y no afecta al funcionamiento de la aplicación ni a lo que se puede hacer con una cuenta. Cada tipo de cuenta tiene su propio color, estos colores se pueden configurar en la configuración global.

-
Tipo de transacción predeterminado
-

Cuando crea una transacción nueva, su tipo predeterminado será el mismo que en esta configuración.

-
Umbral de recordatorios de las transacciones
-

El umbral usado cuando se muestran los recordatorios de las próximas transacciones.

-
Moneda del sistema
-
-

Cada vez que se inicia la aplicación, obtiene datos sobre el formato de la moneda y los números de la configuración regional de su sistema, y estos datos se usan para mostrar el símbolo de la moneda (a menos que se use una moneda personalizada, consulte a continuación) y para determinar en qué formato se aceptarán los valores para los importes de las transacciones. Algunos ejemplos:

-
    -
  • Si su idioma es inglés (EE. UU.), el símbolo de moneda se establecerá en $ y se aceptará 1,000.00 como un número válido.

  • -
  • Si su configuración regional es italiana, el símbolo de moneda se establecerá en y se aceptará 1.000,00 como un número válido.

  • -
  • Si su configuración regional es ruso, el símbolo de moneda se establecerá en y se aceptará 1000,00 como un número válido.

  • -
-
- - - - - - - - - - - - - -

En Linux, es posible establecer diferentes configuraciones regionales para el idioma y los formatos del sistema. La modificación de estos ajustes varía en función del entorno de escritorio que use. A pesar de las diferencias en la ubicación de estos ajustes en el escritorio, cambiar estos ajustes modifica las variables de entorno del sistema, como LANG, LC_TIME y LC_MONETARY. Denaro intentará usar los formatos de cantidad y fecha de acuerdo a estas variables. Si la aplicación falla al usar los formatos esperados, por favor asegúrese de que las variables están configuradas correctamente a través del comando locale en un terminal. Si ha encontrado un error y desea informar de ello, por favor proporcione la salida del comando locale para permitir a los desarrolladores reproducir su problema con la misma configuración.

-
-
-
Usar moneda personalizada
-

Si esta opción está activada, se usará Símbolo de moneda personalizado en lugar del símbolo de moneda proporcionado por la configuración regional de su sistema.

-
Símbolo de moneda personalizado
-

Hasta 3 caracteres o 1 emoji. No puede ser un número.

-
Código de moneda personalizado
-
-

Hasta 3 caracteres o 1 emoji.

-

Un ejemplo para entender la diferencia entre un símbolo y un código: $ es un símbolo, USD es un código.

-
-
Estilo del total de monedas personalizado
-
-

Elija entre mostrar las cantidades de una de las siguientes maneras:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Separadores decimales y de grupo personalizados
-

Hasta 2 caracteres o 1 emoji.

-
Dígitos decimales de moneda personalizados
-

El tamaño de la parte decimal de los valores de importe. Con dígitos "ilimitados" habrá tantos números en la parte decimal como sean necesarios para mostrar el importe exacto, pero no habrá parte decimal si el importe es un número entero.

-
Contraseña
-

Cada cuenta puede protegerse con una contraseña. Si añade una contraseña, la cuenta quedará encriptada (por lo que será imposible leer los datos sin desencriptarlos con la contraseña). Cuidado: si pierde la contraseña, no podrá recuperar los datos. La contraseña también puede cambiarse o eliminarse desde el cuadro de diálogo de configuración de una cuenta abierta. Al eliminar la contraseña, la cuenta quedará descifrada.

-
Ordenar por id, fecha o cantidad
-

Cada cuenta almacena si ordena las transacciones en la ventana principal por su id, fecha o cantidad. Cada vez que cambie esto, se guardará en el archivo de la cuenta y se restaurará cuando vuelva a abrir la cuenta.

-
Orden de clasificación
-

Cada cuenta almacena información sobre el orden de las transacciones en la ventana principal. Cada vez que cambie esto, se guardará en el archivo de la cuenta y se restaurará cuando vuelva a abrir la cuenta.

-
Visibilidad de grupos
-

Cada cuenta almacena información sobre si la lista de grupos en la ventana principal está oculta o no. Cada vez que cambia la visibilidad de la lista de grupos, se guarda y luego se restaura cuando vuelve a abrir la cuenta.

-
Visibilidad de las etiquetas
-

Cada cuenta almacena información sobre si la lista de las etiquetas de la ventana principal está oculta o no. Cada vez que cambie la visibilidad de la lista de las etiquetas, se guarda y después se restaura cuando vuelva a abrir la cuenta.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/es/configuration.html b/NickvisionMoney.Shared/Docs/html/es/configuration.html deleted file mode 100644 index 7fc1bec79..000000000 --- a/NickvisionMoney.Shared/Docs/html/es/configuration.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Configuración - - - -
-

Configuración

-
-
-

Esta página describe lo que puede cambiar en la configuración de la aplicación.

-

Dependiendo de su plataforma, en la interfaz de la aplicación, la configuración se denomina Preferencias o Configuración.

-
-
Tema
-

Establezca un tema claro u oscuro, o haga que Denaro siga el tema de su sistema. Cambiar esto en Windows requiere que se reinicie la aplicación para aplicar.

-
Color de transacción predeterminado
-

Un color que se seleccionará por defecto al agregar una transacción nueva con color único. Cambiar esto no afectará las transacciones existentes, incluso si usa el color predeterminado seleccionado previamente.

-
Color predeterminado de la transferencia
-

Un color que se usará para transacciones creadas usando transferencia. Cambiar esto no afectará las transacciones existentes.

-
Color predeterminado del grupo
-

Color que se seleccionará por defecto al añadir un grupo nuevo. También es un color para el grupo "No agrupado".

-
Color de la cuenta corriente
-

Color usado para marcar cuentas con el tipo Corriente en una lista de cuentas recientes.

-
Color de la cuenta de ahorros
-

Color usado para marcar cuentas con el tipo Ahorros en una lista de cuentas recientes.

-
Color de la cuenta de la empresa
-

Color usado para marcar cuentas con el tipo Empresas en una lista de cuentas recientes.

-
Usar dígitos nativos
-

Si usar numerales que son nativos para su localización en lugar de dígitos latinos. Por ejemplo, si esta opción está activada ٠١٢ se usará en lugar de 012 para las localizaciones que usan numerales arábigos orientales.

-
Insertar separador decimal
-

Establece para qué teclas pulsadas se insertará el separador decimal de la configuración regional en un campo de importe: punto del teclado numérico, cualquier punto y coma, o ninguno. Si el separador decimal ya aparece en un campo, no se insertará.

-
Carpeta de copia de seguridad CSV
-

Una carpeta donde sus datos se exportarán a CSV después de cada cambio. Esta función no funciona con cuentas protegidas con contraseña, ya que los archivos CSV no pueden protegerse con contraseña.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/es/import-export.html b/NickvisionMoney.Shared/Docs/html/es/import-export.html deleted file mode 100644 index 931581733..000000000 --- a/NickvisionMoney.Shared/Docs/html/es/import-export.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Importar/Exportar - - - -
-

Importar/Exportar

-
-
-
-

Formatos de importación

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Las fechas deben estar en formato AAAMMDD.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Las fechas deben estar en formato inglés (EE. UU.) (MM/DD/AAAA).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ Si bien CSV es un formato común y algunos bancos permiten a sus usuarios exportar información como CSV, estos archivos son, de hecho, tablas que pueden contener datos arbitrarios. La importación de un archivo CSV creado en otro programa fallará porque sus datos no serán compatibles con lo que Denaro intenta obtener de un archivo. El propósito de importar/exportar CSV es proporcionar una forma de agregar datos a una cuenta mediante programas externos, como editores de texto y paquetes de oficina. La importación solo agregará nuevas transacciones sin anular las existentes. Si desea crear un archivo CSV manualmente, este es el encabezado que incluye todas las columnas que Denaro espera encontrar:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Id de transacción, debe ser único para una cuenta determinada. Los ids empiezan por 1.

      -
    • -
    • -

      Date

      -

      La fecha de la transacción (o fecha de inicio en caso de transacción repetida), debe estar en formato inglés (EE. UU.) (MM/DD/AAAA).

      -
    • -
    • -

      Description

      -

      Descripción de la transacción, puede contener cualquier carácter excepto punto y coma.

      -
    • -
    • -

      Type

      -

      Tipo de transacción: 0 para ingresos, 1 para gastos.

      -
    • -
    • -

      RepeatInterval

      -

      Un número que representa el intervalo de repetición de la transacción:

      -

      0 - Nunca

      -

      1 - Diario

      -

      2 - Semanal

      -

      7 - Quincenal

      -

      3 - Mensual

      -

      4 - Trimestral

      -

      5 - Anual

      -

      6 - Bianual

      -

      Véase Intervalo de repetición en la página de transacción para obtener más información sobre las transacciones repetidas.

      -
    • -
    • -

      RepeatFrom

      -

      Debe ser un id de transacción de origen o 0 si es una transacción de origen o -1 si no es una transacción repetida.

      -
    • -
    • -

      RepeatEndDate

      -

      Fecha de finalización de la transacción repetida, debe estar en formato inglés (EE. UU.) (MM/DD/AAAA). Déjelo vacío si no es una transacción repetida.

      -
    • -
    • -

      Amount

      -

      Importe de la transacción en formato inglés (US) (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Color de la transacción, debe estar en formato rgb(R,G,B) donde R, G y B son enteros en un rango entre 0 y 255.

      -
    • -
    • -

      UseGroupColor

      -

      Si una transacción debe usar el color de grupo: 0 - falso, 1 - verdadero.

      -
    • -
    • -

      Group

      -

      Id de grupo de la transacción. Los ids empiezan por 1. Para una transacción no agrupada debe ser -1 (no 0, este es un valor incorrecto para el id de grupo).

      -
    • -
    • -

      GroupName

      -

      Nombre del grupo de la transacción, debe coincidir con el id del grupo. Puede contener cualquier carácter excepto punto y coma. Déjelo vacío para transacciones no agrupadas, en cualquier otro caso no debería estar vacío.

      -
    • -
    • -

      GroupDescription

      -

      Descripción del grupo de la transacción, debe coincidir con el id del grupo. Puede contener cualquier carácter excepto punto y coma y puede estar vacía. Déjelo vacío para transacciones no agrupadas.

      -
    • -
    • -

      GroupRGBA

      -

      Color del grupo, debe estar en formato rgb(R,G,B) donde R, G y B son números enteros comprendidos entre 0 y 255.

      -
    • -
    -

    Los recibos y notas no están presentes en CSV.

    -
  • -
-
-
-

Formatos de exportación

-
-

Puede seleccionar si desea exportar toda la información o sólo la de la vista actual. Si selecciona la vista actual, las transacciones mostradas actualmente se exportarán en el mismo orden en que se muestran.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    Un archivo contendrá la información de una cuenta, una lista de transacciones e imágenes de recibos. Las transacciones están coloreadas como en la aplicación, pero los colores se modifican haciéndolos semitransparentes para que el texto negro siempre sea claramente visible. Puede establecer una contraseña para un archivo exportado.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/es/index.html b/NickvisionMoney.Shared/Docs/html/es/index.html deleted file mode 100644 index 15730917e..000000000 --- a/NickvisionMoney.Shared/Docs/html/es/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Ayuda de Denaro - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/es/transaction.html b/NickvisionMoney.Shared/Docs/html/es/transaction.html deleted file mode 100644 index 5e9f60656..000000000 --- a/NickvisionMoney.Shared/Docs/html/es/transaction.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Transacción - - - -
-

Transacción

-
-
-

Esta página explica todas las propiedades de las transacciones en Denaro.

-
-
Id
-

Cada transacción tiene una identificación que es única para una cuenta determinada. Los identificadores comienzan con 1 y aumentan con cada transacción agregada. Los ID no se pueden cambiar, los ID de las transacciones eliminadas no se reusan.

-
Descripción
-

Sin límite de longitud. No puede contener punto y coma.

-
Cantidad
-

Un número en un formato que sea válido para su región, consulte Moneda del sistema en Página de la cuenta para obtener detalles.

-
Tipo
-

Ingresos o Gastos. De forma predeterminada, el elegido en configuración de la cuenta se seleccionará cuando abra un cuadro de diálogo para agregar una transacción nueva.

-
Fecha
-

Se puede seleccionar cualquier fecha, también puede crear transacciones para fechas futuras.

-
Intervalo de repetición
-

Use esta opción para crear una transacción recurrente. Después de agregar una transacción con un intervalo de repetición, esta transacción se convertirá en una transacción de origen. Denaro generará automáticamente transacciones repetidas para las fechas hasta hoy o una fecha de finalización proporcionada si se estableció en el pasado. Las transacciones repetidas no se pueden editar ni eliminar, solo se puede modificar origen. Cuando modifique la transacción fuente, Denaro le preguntará si desea modificar o desasociar las transacciones repetidas. Si elige desasociar, las transacciones repetidas se convierten en transacciones normales y se pueden editar o eliminar por separado.

-
Repetir fecha final
-

Fecha de finalización de una transacción con repetición. No puede ser anterior o el mismo día que la fecha de inicio.

-
Grupo
-

Cada transacción puede pertenecer a un solo grupo o a ninguno (grupo "No agrupado").

-
Color
-

Un color para la transacción. Puede configurarse para usar un color de grupo o un color único. Al seleccionar un color único, se establecerá por defecto el color seleccionado en la configuración, pero puede cambiarse a cualquier color.

-
Etiquetas
-

Una lista de etiquetas para la transacción. Una transacción puede tener un número ilimitado de etiquetas (o no tener etiquetas). Las etiquetas pueden contener cualquier carácter excepto una coma (,) y tener cualquier longitud, pero se espera que sean palabras clave cortas. Las etiquetas están destinadas a usarse para el filtrado adicional cuando el uso de los grupos no es suficiente. Las etiquetas solo se guardan en las transacciones mismas y, como un resultado, las etiquetas no usadas desaparecen automáticamente al cerrar la cuenta.

-
Recibo
-

Una imagen de un recibo de transacción. Puede cargar una imagen JPEG o PNG o un documento PDF, pero sin importar el formato, se convertirá y se guardará como una imagen JPEG. En caso de PDF, solo se guardará la primera página. Puede eliminar o cargar otro archivo en cualquier momento.

-
Notas
-

Una nota de texto libre para adjuntar a la transacción.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/es/transfer.html b/NickvisionMoney.Shared/Docs/html/es/transfer.html deleted file mode 100644 index 07341e8ba..000000000 --- a/NickvisionMoney.Shared/Docs/html/es/transfer.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - -Transferencia - - - -
-

Transferencia

-
-
-

La transferencia es una forma de mover dinero de una cuenta a otra. Después de ejecutar una transferencia, se crearán 2 transacciones con las siguientes descripciones:

-
    -
  • «Transferencia a Nombre de la cuenta de destino» en la cuenta de origen.

  • -
  • «Transferencia desde Nombre de la cuenta de origen» en la cuenta de destino.

  • -
-

Las transacciones creadas mediante la transferencia son transacciones simples que se pueden editar o eliminar libremente. Estas transacciones no están conectadas: la modificación de la transacción en la cuenta de origen no afectará la transacción en la cuenta de destino y viceversa.

-

La transferencia no le permite crear transacciones repetitivas ni establecer ninguna otra propiedad que no sea la cantidad. El color seleccionado en configuration se usará para las transacciones creadas.

-

Si crea una transferencia entre cuentas con divisas diferentes, se le pedirá que indique un tipo de conversión.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/et/account.html b/NickvisionMoney.Shared/Docs/html/et/account.html deleted file mode 100644 index bbba369c5..000000000 --- a/NickvisionMoney.Shared/Docs/html/et/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/et/configuration.html b/NickvisionMoney.Shared/Docs/html/et/configuration.html deleted file mode 100644 index 144d39bdb..000000000 --- a/NickvisionMoney.Shared/Docs/html/et/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/et/import-export.html b/NickvisionMoney.Shared/Docs/html/et/import-export.html deleted file mode 100644 index b554cb88e..000000000 --- a/NickvisionMoney.Shared/Docs/html/et/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/et/index.html b/NickvisionMoney.Shared/Docs/html/et/index.html deleted file mode 100644 index 7a9dc411f..000000000 --- a/NickvisionMoney.Shared/Docs/html/et/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/et/transaction.html b/NickvisionMoney.Shared/Docs/html/et/transaction.html deleted file mode 100644 index 6f20b99f9..000000000 --- a/NickvisionMoney.Shared/Docs/html/et/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/et/transfer.html b/NickvisionMoney.Shared/Docs/html/et/transfer.html deleted file mode 100644 index 13a51c0a5..000000000 --- a/NickvisionMoney.Shared/Docs/html/et/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fi/account.html b/NickvisionMoney.Shared/Docs/html/fi/account.html deleted file mode 100644 index 983fb1165..000000000 --- a/NickvisionMoney.Shared/Docs/html/fi/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fi/configuration.html b/NickvisionMoney.Shared/Docs/html/fi/configuration.html deleted file mode 100644 index a01130aba..000000000 --- a/NickvisionMoney.Shared/Docs/html/fi/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fi/import-export.html b/NickvisionMoney.Shared/Docs/html/fi/import-export.html deleted file mode 100644 index e803a6319..000000000 --- a/NickvisionMoney.Shared/Docs/html/fi/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fi/index.html b/NickvisionMoney.Shared/Docs/html/fi/index.html deleted file mode 100644 index 47070da9d..000000000 --- a/NickvisionMoney.Shared/Docs/html/fi/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fi/transaction.html b/NickvisionMoney.Shared/Docs/html/fi/transaction.html deleted file mode 100644 index b32d1315c..000000000 --- a/NickvisionMoney.Shared/Docs/html/fi/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tunnisteet
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fi/transfer.html b/NickvisionMoney.Shared/Docs/html/fi/transfer.html deleted file mode 100644 index f8a06b468..000000000 --- a/NickvisionMoney.Shared/Docs/html/fi/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fr/account.html b/NickvisionMoney.Shared/Docs/html/fr/account.html deleted file mode 100644 index 609dd7b69..000000000 --- a/NickvisionMoney.Shared/Docs/html/fr/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Compte - - - -
-

Compte

-
-
-

Cette page explique toutes les propriétés des comptes dans Denaro. La plupart sont affichées dans la boîte de dialogue des Paramètres du compte. Cette boîte de dialogue s’ouvre automatiquement à la création d’un nouveau compte.

-

Chaque compte est enregistré dans un fichier *.nmoney. Les fichiers créés dans une ancienne version stable de Denaro peuvent être ouverts sans risque dans une version stable plus récente de l’application. Bien que l’application puisse être exécutée sous plusieurs plateformes (Windows et Linux), les fichiers *.nmoney sont 100% compatibles entre ces plateformes, tant qu’ils proviennent de la même version de l’application (i.e. V2023.1.0).

-
- - -

Les version instables (Beta et RC) de l’application peuvent contenir des bogues ou des modifications inachevées pouvant causer des pertes de données. N'UTILISEZ PAS des fichiers de comptes contenant vos vraies données dans des versions instables de l’application !

-
-
-
Nom
-

Le nom du compte est affiché dans la liste des comptes récents et dans les onglets. Un nom n’a pas de limite de taille et peut contenir n’importe quel caractère, dont des émojis.

-
Type de compte
-

Il y a trois types de comptes possibles : 🟣Chèques, 🔵Épargne et 🟢Affaires. Le type de compte est uniquement une étiquette utile affichée dans la liste des comptes récents et n’affecte ni le fonctionnement de l’application ni les actions possibles avec un compte. Chaque type de compte a sa propre couleur, qui peut être configurée dans les paramètres généraux.

-
Type de transaction par défaut
-

Lorsque vous créerez une nouvelle transaction, son type par défaut sera le même que dans ce paramètre.

-
Seuil de rappel des transactions
-

Le seuil utilisé pour afficher des rappels des transactions à venir.

-
Devise du système
-
-

Chaque fois que l’application est lancée, elle récupère les données sur la monnaie et le format numérique de la langue locale de votre système ; ces données sont utilisées pour afficher le symbole monétaire (à moins qu’une devise personnalisée soit spécifiée, voir ci-dessous) et pour déterminer dans quel format les nombres seront acceptés comme des valeurs pour des montants de transactions. Quelques exemples :

-
    -
  • Si votre langue locale est l’Anglais (US), le symbole monétaire sera $ et 1,000.00 sera accepté comme une valeur numérique valide.

  • -
  • Si votre langue locale est l’Italien, le symbole monétaire sera et 1.000,00 sera accepté comme une valeur numérique valide.

  • -
  • Si votre langue locale est le Russe, le symbole monétaire sera et 1000,00 sera accepté comme une valeur numérique valide.

  • -
-
- - - - - - - - - - - - - -

Sous Linux il est possible de définir plusieurs langues locales et formats numériques. La manière de modifier ce paramètre varie selon l’environnement de bureau utilisé. Malgré ces différences dans l’emplacement de ces paramètres, les modifier affecte des variables de l’environnement du système, comme LANG, LC_TIME, et LC_MONETARY. Denaro essaiera d’utiliser les formats numériques et de langue selon ces variables. Si l’application échoue à utiliser les formats attendus, assurez-vous que les variables sont correctement définies via la commande locale dans un terminal. Si vous trouvez un bogue et souhaitez le signaler, veillez fournir le résultat donné par la commande locale pour permettre aux développeurs de reproduire votre problème avec les mêmes paramètres.

-
-
-
Utiliser une devise personnalisée
-

Si cette option est activée, un Symbole monétaire personnalisé sera utilisé à la place de celui fourni par la langue locale de votre système.

-
Symbole monétaire personnalisé
-

Jusqu’à trois caractères ou 1 émoji. Il ne peut s’agir d’un nombre.

-
Code de devise personnalisé
-
-

Jusqu’à trois caractères ou 1 émoji.

-

Un exemple pour comprendre la différence entre un symbole et un code : $ est un symbole, USD est un code.

-
-
Style d’affichage personnalisé des montants de devises
-
-

Un choix entre plusieurs affichages possibles pour les montants de devises :

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Séparateur de décimales et de groupes personnalisé
-

Jusqu’à 2 caractères ou 1 émoji.

-
Chiffres des décimales personnalisés
-

La taille des décimales de la valeur d’un montant. Avec des chiffres « Illimités » la taille des décimales sera celle requise pour afficher le montant précis, mais il n’y aura pas de décimales si le montant est un nombre entier.

-
Mot de passe
-

Chaque compte peut être protégé par un mot de passe. Ajouter un mot de passe cryptera le compte (ce qui rendra la lecture des données impossible sans décryptage avec le bon mot de passe). Soyez prudent⋅e : si le mot de passe est perdu, vous ne pourrez pas récupérer les données ! Un mot de passe peut également être changé ou supprimé en utilisant la boîte de dialogue des paramètres du compte. Supprimer un mot de passe décryptera le compte.

-
Trier par identifiant, date ou montant
-

Au sein de chaque compte vous pouvez trier les transactions dans la fenêtre principale par identifiant, date ou montant. Chaque fois que vous le modifierez, le tri sera enregistré dans le fichier du compte et restauré à la prochaine ouverture.

-
Ordre de tri
-

Au sein de chaque compte vous pouvez modifier l’ordre des transactions dans la fenêtre principale. Chaque fois que vous modifierez l’ordre de tri, celui-ci sera enregistré dans le fichier du compte et restauré à la prochaine ouverture.

-
Visibilité des groupes
-

Chaque compte enregistre l’état affiché ou masqué de la liste des groupes dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de la liste des groupes, ce paramètre sera enregistré puis restauré à la prochaine ouverture.

-
Visibilité des étiquettes
-

Chaque compte enregistre l’état affiché ou masqué de la liste des étiquettes dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de la liste des étiquettes, ce paramètre sera enregistré puis restauré à la prochaine ouverture.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fr/configuration.html b/NickvisionMoney.Shared/Docs/html/fr/configuration.html deleted file mode 100644 index 0bf737df3..000000000 --- a/NickvisionMoney.Shared/Docs/html/fr/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

Cette page décrit ce que vous pouvez modifier dans la configuration de l’application.

-

Dépendant de votre plateforme, la configuration apparaît dans l’interface de l’application sous le vocable Préférences ou Paramètres.

-
-
Thème
-

Définissez un thème sombre ou clair, ou faites en sorte que Denaro suive celui du système. Le changement de ce paramètre sous Windows requiert un redémarrage de l’application.

-
Couleur par défaut des transactions
-

Une couleur qui sera sélectionnée par défaut lors de l’ajout d’une nouvelle transaction avec une couleur unique. Changer ce paramètre n’affectera pas les transactions existantes, même si elles utilisaient la couleur par défaut précédemment sélectionnée.

-
Couleur par défaut des transferts
-

Une couleur qui sera utilisée pour les transactions créées par un transfert. Changer ce paramètre n’affectera pas les transactions existantes.

-
Couleur de groupe par défaut
-

Couleur sélectionnée par défaut lorsqu’un nouveau groupe sera ajouté. C’est également la couleur du groupe « Sans groupe ».

-
Couleur des comptes de chèques
-

Couleur utilisée pour marquer les comptes avec le type Chèques dans une liste des comptes récents.

-
Couleur des comptes d’épargne
-

Couleur utilisée pour marquer les comptes avec le type Épargne dans une liste des comptes récents.

-
Couleur du compte d’affaires
-

Couleur utilisée pour marquer les comptes avec le type affaires dans une liste des comptes récents.

-
Utiliser des chiffres natifs
-

Indique s’il faut utiliser des chiffres natifs de votre langue à la place de chiffres latins. Par exemple, si ce paramètre est activé ٠١٢ sera utilisé à la place de 012 pour les langues locales utilisant des chiffres de l’arabe oriental.

-
Insérer un séparateur de décimales
-

Définissez pour quelles touches pressées le séparateur décimal de la langue locale sera inséré lors de la saisie d’un montant : point du pavé numérique, n’importe quel point ou virgule du clavier, ou aucune. Si le séparateur des décimales est déjà présent dans le champ de saisie, il ne sera pas inséré.

-
Dossier de sauvegarde CSV
-

Un dossier où vos données seront automatiquement exportées au format CSV après chaque modification. Cette fonctionnalité ne fonctionne pas pour les comptes protégés par mot de passe, car les fichiers CSV ne peuvent être protégés par un mot de passe.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fr/import-export.html b/NickvisionMoney.Shared/Docs/html/fr/import-export.html deleted file mode 100644 index 2914cdba2..000000000 --- a/NickvisionMoney.Shared/Docs/html/fr/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Importer / Exporter - - - -
-

Importer / Exporter

-
-
-
-

Formats d’importation

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Les dates devraient être au format AAAAMMJJ.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Les dates devraient être au format Anglais (US) (MM/JJ/AAAA).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ Bien que le format CSV soit courant et que certaines banques permettent à leurs utilisateurs d’exporter des informations au format CSV, ces fichiers sont en fait des tableaux qui peuvent contenir n’importe quelles données. L’importation d’un fichier CSV créé dans un autre programme échouera, car ses données ne seront pas compatibles avec ce que Denaro tentera d’obtenir du fichier. L’objectif de l’importation/exportation de fichiers CSV est de fournir un moyen d’ajouter des données à un compte à l’aide de programmes externes tels que des éditeurs de texte et des suites bureautiques. L’importation n’ajoutera que les nouvelles transactions sans remplacer les transactions existantes. Si vous souhaitez créer un fichier CSV manuellement, voici l’en-tête qui inclut toutes les colonnes que Denaro s’attend à trouver :

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Identification de transaction, devrait être unique pour un compte donné. Les identifiants commencent à 1.

      -
    • -
    • -

      Date

      -

      La date de la transaction (ou la date de départ dans le cas d’une transaction répétée), devrait être au format américain (MM/JJ/AAAA).

      -
    • -
    • -

      Description

      -

      Description de la transaction, elle peut contenir n’importe quel caractère sauf des points-virgules.

      -
    • -
    • -

      Type

      -

      Type de transaction : 0 pour un revenu, 1 pour une dépense.

      -
    • -
    • -

      RepeatInterval

      -

      Un nombre représentant un intervalle de répétition de la transaction :

      -

      0 - Jamais

      -

      1 - Quotidien

      -

      2 - Hebdomadaire

      -

      7 - Bi-hebdomadaire

      -

      3 - Mensuel

      -

      4 - Trimestriel

      -

      5 - Annuel

      -

      6 - Bi-annuel

      -

      Voir Intervalle de répétition dans la page des transactions pour des détails sur les transactions répétées.

      -
    • -
    • -

      RepeatFrom

      -

      Devrait être soit un identifiant de transaction source, ou 0 si c’est une transaction source, ou -1 si ce n’est pas une transaction répétée.

      -
    • -
    • -

      RepeatEndDate

      -

      Date de fin pour la transaction répétée ; elle devrait être au format américain (MM/JJ/AAAA). Laissez-la vide si ce n’est pas une transaction répétée.

      -
    • -
    • -

      Amount

      -

      Montant de la transaction au format américain (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Couleur de la transaction ; elle devrait être au format rgb (R,G,B)) où R, G et B sont des nombres entiers compris entre 0 et 255.

      -
    • -
    • -

      UseGroupColor

      -

      Indique si une transaction devrait utiliser le groupe de couleur : 0 — non, 1 — oui.

      -
    • -
    • -

      Group

      -

      Identifiant du groupe de transactions. Les identifiant commencent à 1. Pour les transactions sans groupe, ce devrait être -1 (et non pas 0 qui est une valeur incorrecte pour un identifiant de groupe).

      -
    • -
    • -

      GroupName

      -

      Nom du groupe de transactions ; il devrait correspondre à l’identifiant du groupe. Il peut contenir n’importe quel caractère, à l’exception des points-virgules. Laissez-le vide pour les transactions sans groupe ; dans tous les autres cas il ne devrait pas être vide.

      -
    • -
    • -

      GroupDescription

      -

      Description du groupe de transactions ; elle devrait correspondre à l’identifiant du groupe. Elle peut contenir n’importe quel caractère à l’exception des points-virgules. Laissez-la vide pour les transactions sans groupe.

      -
    • -
    • -

      GroupRGBA

      -

      Couleur du groupe ; elle devrait être au format rgb(R,G,B)R, G et B sont des nombres entiers compris entre 0 et 255.

      -
    • -
    -

    Les reçus et les notes ne sont pas présents dans le fichier CSV.

    -
  • -
-
-
-

Formats d’exportation

-
-

Vous pouvez choisir d’exporter toutes les informations ou seulement celles de la vue actuelle. Si vous sélectionnez cette dernière option, les transactions actuellement affichées seront exportées dans le même ordre que celui dans lequel elles apparaissent.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    Un fichier contiendra les informations du compte, une liste des transactions et les images des reçus. Les transactions seront colorées comme dans l’application, mais les couleurs seront modifiées en étant rendues à moitié transparentes pour que le texte en noir reste toujours visible. Vous pouvez définir un mot de passe pour le fichier exporté.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fr/index.html b/NickvisionMoney.Shared/Docs/html/fr/index.html deleted file mode 100644 index 41cb965cf..000000000 --- a/NickvisionMoney.Shared/Docs/html/fr/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Aide de Denaro - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fr/transaction.html b/NickvisionMoney.Shared/Docs/html/fr/transaction.html deleted file mode 100644 index 989cee25e..000000000 --- a/NickvisionMoney.Shared/Docs/html/fr/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

Cette page explique toutes les propriétés des transactions dans Denaro.

-
-
Identifiant
-

Chaque transaction a un identifiant unique pour un compte donné. Les identifiants commencent avec 1 et augmentent pour chaque transaction ajoutée. Les identifiants ne peuvent être modifiés, et les identifiants des transactions supprimées ne sont pas réutilisés.

-
Description
-

Pas de limite de taille. Elle ne peut contenir des points-virgules.

-
Montant
-

Un nombre dans un format valide pour votre langue locale, voir Devise du système dans la page du compte pour plus de détails.

-
Type
-

Revenu ou Dépense. Par défaut la valeur choisie dans les Paramètres du compte sera sélectionnée lorsque vous ouvrirez une boîte de dialogue pour ajouter une nouvelle transaction.

-
Date
-

N’importe quelle date peut être sélectionnée, vous pouvez aussi créer des transactions pour des dates futures.

-
Intervalle de répétition
-

Utilisez cette option pour créer une transaction récurrente. Après avoir ajouté la transaction avec l’intervalle de répétition, celle-ci deviendra une transaction source. Denaro générera automatiquement des transactions répétées pour les dates indiquées à partir d’aujourdhui ou jusqu’à la date de fin définie. Les transactions répétées ne peuvent pas être modifiées ou supprimées, mais seulement leur source. Lorsque vous modifierez la transaction source, Denaro vous demandera si vous souhaiter modifier ou dissocier les transactions répétées. Si vous choisissez la dissociation, les transactions répétées deviendront des transactions normales et pourront être modifiées ou supprimées séparément.

-
Date de fin de répétition
-

Date de fin d’une transaction récurrente. Elle ne peut pas être avant ou le même jour que la date de début.

-
Groupe
-

Chaque transaction peut appartenir à un ou bien à aucun groupe (groupe « Sans groupe »).

-
Couleur
-

Une couleur pour les transactions. Elle peut être définie pour utiliser un groupe de couleur ou une couleur unique. Lors de la sélection d’une couleur unique, elle sera définie par défaut comme la couleur sélectionnée dans la configuration, mais peut être modifiée en n’importe quelle couleur.

-
Étiquettes
-

Une liste d’étiquettes pour les transactions. Une transaction peut avoir un nombre illimité d’étiquettes (ou ne pas en avoir). Les étiquettes peuvent contenir n’importe quel caractère sauf des virgules (,), et peuvent avoir n’importe quelle longueur, bien qu’elles soient conçues pour de courts mots-clés. Les étiquettes sont conçues pour être utilisées pour obtenir un filtrage additionnel quand l’utilisation des groupes ne suffit pas. Les étiquettes sont uniquement enregistrées dans les transactions elles-mêmes, et ainsi celles non utilisées disparaissent automatiquement à la fermeture du compte.

-
Reçu
-

Image d’un reçu pour une transaction. Vous pouvez téléverser des images JPEG, PNG ou un document PDF, mais peut importe le format il sera converti et enregistré en tant qu’image JPEG. Dans le cas d’un PDF, seule la première page sera enregistrée. Vous pouvez supprimer le fichier ou en téléverser un autre à tout moment.

-
Notes
-

Un texte de forme libre qui peut être joint à la transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/fr/transfer.html b/NickvisionMoney.Shared/Docs/html/fr/transfer.html deleted file mode 100644 index 82405c812..000000000 --- a/NickvisionMoney.Shared/Docs/html/fr/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfert - - - -
-

Transfert

-
-
-

Le transfert est un moyen de déplacer de l’argent d’un compte à un autre. Après avoir opéré un transfert, 2 transactions seront créées avec les descriptions suivantes :

-
    -
  • « Transfert vers Nom du compte récipiendaire » dans le compte source.

  • -
  • « Transfert depuis Nom du compte source » dans le compte destinataire.

  • -
-

Les transactions créées par un transfert sont de simples transactions qui peuvent être supprimées ou modifiées sans risque. Ces transactions ne sont pas connectées : la modification de la transaction sur le compte source n’affectera pas la celle sur le compte destinataire, et vice versa.

-

Le transfert ne vous permet pas de créer des transactions répétées ou de définir une autre propriété que le montant. La couleur sélectionnée dans la configuration sera utilisée pour les transactions créées.

-

Si vous créez un transfert entre des comptes avec différentes devises, il vous sera demander de fournir un taux de change.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/gl/account.html b/NickvisionMoney.Shared/Docs/html/gl/account.html deleted file mode 100644 index 61e9b462c..000000000 --- a/NickvisionMoney.Shared/Docs/html/gl/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Nome
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Tipo de conta
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/gl/configuration.html b/NickvisionMoney.Shared/Docs/html/gl/configuration.html deleted file mode 100644 index 803ba8bc4..000000000 --- a/NickvisionMoney.Shared/Docs/html/gl/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/gl/import-export.html b/NickvisionMoney.Shared/Docs/html/gl/import-export.html deleted file mode 100644 index 5e145b1b8..000000000 --- a/NickvisionMoney.Shared/Docs/html/gl/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/gl/index.html b/NickvisionMoney.Shared/Docs/html/gl/index.html deleted file mode 100644 index 1364e0931..000000000 --- a/NickvisionMoney.Shared/Docs/html/gl/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/gl/transaction.html b/NickvisionMoney.Shared/Docs/html/gl/transaction.html deleted file mode 100644 index 14d471bc1..000000000 --- a/NickvisionMoney.Shared/Docs/html/gl/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
ID
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Descrición
-

No limit on length. It can't contain semicolon.

-
Importe
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Data
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Grupo
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Apuntamentos
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/gl/transfer.html b/NickvisionMoney.Shared/Docs/html/gl/transfer.html deleted file mode 100644 index add52ea56..000000000 --- a/NickvisionMoney.Shared/Docs/html/gl/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hi/account.html b/NickvisionMoney.Shared/Docs/html/hi/account.html deleted file mode 100644 index abaaed9c5..000000000 --- a/NickvisionMoney.Shared/Docs/html/hi/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hi/configuration.html b/NickvisionMoney.Shared/Docs/html/hi/configuration.html deleted file mode 100644 index 06534e277..000000000 --- a/NickvisionMoney.Shared/Docs/html/hi/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hi/import-export.html b/NickvisionMoney.Shared/Docs/html/hi/import-export.html deleted file mode 100644 index 51efb4932..000000000 --- a/NickvisionMoney.Shared/Docs/html/hi/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hi/index.html b/NickvisionMoney.Shared/Docs/html/hi/index.html deleted file mode 100644 index 3e7be6473..000000000 --- a/NickvisionMoney.Shared/Docs/html/hi/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hi/transaction.html b/NickvisionMoney.Shared/Docs/html/hi/transaction.html deleted file mode 100644 index 1a661b252..000000000 --- a/NickvisionMoney.Shared/Docs/html/hi/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hi/transfer.html b/NickvisionMoney.Shared/Docs/html/hi/transfer.html deleted file mode 100644 index 052d57c67..000000000 --- a/NickvisionMoney.Shared/Docs/html/hi/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hr/account.html b/NickvisionMoney.Shared/Docs/html/hr/account.html deleted file mode 100644 index af3697198..000000000 --- a/NickvisionMoney.Shared/Docs/html/hr/account.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -Račun - - - -
-

Račun

-
-
-

Ova stranica objašnjava sva svojstva računa u aplikaciji Denaro. Većina se prikazuju u Dijalog postavki računa. Ovaj se dijalog također automatski otvara nakon stvaranja novog računa.

-

Svaki račun se sprema u yasebnu *.nmoney datoteku. Datoteke stvorene u starijoj stabilnoj verziji Denaro aplikacije mogu se sigurno otvoriti u novijoj stabilnoj verziji aplikacije. Iako aplikacija radi na različitim platformama (Windows i Linux), *.nmoney datoteke su 100 % kompatibilne između platformi sve dok su stvorene s istom verzijom aplikacije (tj. V2023.1.0).

-
- - -

Nestabilne verzije aplikacije (beta i kandidati za izdanje) mogu sadržati greške ili nedovršene promjene i mogu uzrokovati gubitak podataka. U nestabilnim verzijama aplikacije NEMOJ koristiti datoteke računa koje sadrže stvarne podatke!

-
-
-
Ime
-

Ime računa se prikazuje u popisu nedavnih računa i na karticama. Dužina imena nije ograničena i može sadržati bilo koje znakove, uključujući emojije.

-
Vrsta računa
-

Postoje 3 vrste računa: 🟣žiro račun, 🔵štedni račun i 🟢poslovni račun. Vrsta računa je samo korisna oznaka koja se prikazuje u popisu nedavnih računa i ne utječe na to kako aplikacija radi ili što možeš učiniti s računom. Svaka vrsta računa ima vlastitu boju. Boje se mogu odrediti u globalnim postavkama.

-
Standardna vrsta transakcije
-

Kada stvoriš novu transakciju, njezina će vrsta standardno biti ista kao u ovoj postavci.

-
Prag podsjetnika za transakcije
-

Prag koji se koristi prilikom prikazivanja podsjetnika o nadolazećim transakcijama.

-
Valuta sustava
-
-

Svaki put kada se aplikacija pokrene, ona dobiva podatke o valuti i formatu brojeva iz postavke jezičnog područja tvog sustava. Ti se podaci koriste za prikaz simbola valute (osim ako se koristi prilagođena valuta, pogledaj dolje) i za određivanje formata brojeva koji će se prihvatiti kao vrijednosti za iznose transakcija. Par primjera:

-
    -
  • Ako je tvoje jezično područje engleski (SAD), simbol valute će biti $ i 1,000.00 će se prihvatiti kao valjani broj.

  • -
  • Ako je tvoje jezično područje hrvatski, simbol valute će biti i 1.000,00 će se prihvatiti kao valjani broj.

  • -
  • Ako je tvoje jezično područje ruski, simbol valute će biti i 1000,00 će se prihvatiti kao valjani broj.

  • -
-
- - - - - - - - - - - - - -

Na Linuxu je moguće postaviti različita jezična područja za jezik sustava i formate. Mijenjanje ovih postavki razlikuje se ovisno o radnoj površini. Unatoč razlikama u smještaju ovih postavki u okruženju, mijenjanje tih postavki mijenja varijable okruženja sustava, kao što su LANG, LC_TIME i LC_MONETARY. Denaro će pokušati koristiti formate iznosa i datuma u skladu s tim varijablama. Ako aplikacija ne uspije koristiti očekivane formate, provjeri jesu li varijable ispravno postavljene putem naredbe locale u terminalu. Ako naiđeš na grešku i želiš je prijaviti, pošalji rezultat naredbe locale kako bi programeri mogli reproducirati problem s istim postavkama.

-
-
-
Koristi prilagođenu valutu
-

Ako je ova opcija aktivirana, umjesto simbola valute jezičnog područja tvog sustava koristit će se Prilagođeni simbol valute.

-
Simbol prilagođene valute
-

Do 3 znaka ili 1 emoji. Ne može biti broj.

-
Kȏd prilagođene valute
-
-

Do 3 znaka ili 1 emoji.

-

Primjer za razumijevanje razlike između simbola i koda: $ je simbol, USD je kod.

-
-
Prilagođeni stil iznosa valute
-
-

Izbor prikaza iznosa na jedan od sljedećih načina:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Prilagođeni decimalni znakovi i znakovi tisućica valute
-

Do 2 znaka ili 1 emoji.

-
Prilagođeni broj decimala valute
-

Broj decimala za iznose. S opcijom „Neograničeno” prikazat će se onoliko decimala koliko je potrebno za prikaz točnog iznosa. Decimale se neće koristiti ako je iznos cijeli broj.

-
Lozinka
-

Svaki račun se može zaštititi lozinkom. Dodavanje lozinke uzrokuje šifriranje računa (što onemogućuje čitanje podataka bez dešifriranja pomoću lozinke). Oprez: ako izgubiš lozinku, nećeš moći obnoviti podatke! Lozinka se također može promijeniti ili ukloniti pomoću dijaloga postavki računa jednog otvorenog računa. Uklanjanje lozinke će dešifrirati račun.

-
Razvrstaj prema ID-u, datumu ili iznosu
-

Svaki račun sprema razvrstavanje transakcija u glavnom prozoru prema ID-u, datumu ili iznosu. Pri svakoj promjeni će se razvrstavanje spremiti u datoteku računa i obnoviti kada ponovo otvoriš račun.

-
Redoslijed
-

Svaki račun sprema podatke o redoslijedu transakcija u glavnom prozoru. Pri svakoj promjeni će se redoslijed spremiti u datoteku računa i obnoviti kada ponovo otvoriš račun.

-
Vidljivost grupa
-

Svaki račun sprema podatke o prikazivanju ii skrivanju popisa grupa u glavnom prozoru. Pri svakoj promjeni će se vidljivost popisa grupa spremiti i obnoviti kada ponovo otvoriš račun.

-
Vidljivost oznaka
-

Svaki račun sprema podatke o prikazivanju ii skrivanju popisa oznaka u glavnom prozoru. Pri svakoj promjeni vidljivosti popisa oznaka, promjena će se spremiti i obnoviti kada ponovo otvoriš račun.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hr/configuration.html b/NickvisionMoney.Shared/Docs/html/hr/configuration.html deleted file mode 100644 index 05f976e35..000000000 --- a/NickvisionMoney.Shared/Docs/html/hr/configuration.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Konfiguracija - - - -
-

Konfiguracija

-
-
-

Ova stranica opisuje što možeš promijeniti u konfiguraciji aplikacije.

-

Ovisno o platformi, u sučelju aplikacije se konfiguracija zove Osobitosti ili Postavke.

-
-
Tema
-

Postavi svijetlu ili tamnu temu ili neka Denaro slijedi temu tvog sustava. Za primjenu promjene teme u Windows sustavu zahtijeva ponovno pokretanje aplikacije.

-
Standardna boja transakcija
-

Standardna boja prilikom dodavanja nove transakcije s jedinstvenom bojom. Mijenjanje boje neće utjecati na postojeće transakcije, čak i ako koriste prethodno odabranu standardnu boju.

-
Standardna boja transfera
-

Standardna boja za transakcije stvorene pomoću transfera. Mijenjanje boje neće utjecati na postojeće transakcije.

-
Standardna boja grupa
-

Standardna boja prilikom dodavanja nove grupe. Koristi se i za „negrupirane” grupe.

-
Boja žiro računa
-

Boja za označavanje računa vrste žiro račun u popisu nedavnih računa.

-
Boja štednog računa
-

Boja za označavanje računa vrste štedni račun u popisu nedavnih računa.

-
Boja poslovnog računa
-

Boja za označavanje računa vrste poslovni račun u popisu nedavnih računa.

-
Koristi brojke jezika
-

Da li umjesto arapskih brojki koristiti brojke tvog tvoje jezičnog područja. Na primjer, ako je ova postavka deaktivirana, umjesto 012 će se koristiti ٠١٢ za jezična područja koja koriste istočnoarapske brojeve.

-
Umetni decimalni znak
-

Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa: točka na numeričkoj tipkovnici, bilo koja točka i zarez ili ništa. Ako decimalni znak već postoji u polju onda se on neće umetnuti.

-
Mapa sigurnosnih kopija u CSV formatu
-

Mapa u kojoj će se tvoji podaci automatski izvesti u CSV datoteku nakon svake promjene. Ova funkcija ne radi za račune koji su zaštićeni lozinkom jer CSV datoteke ne mogu biti zaštićene lozinkom.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hr/import-export.html b/NickvisionMoney.Shared/Docs/html/hr/import-export.html deleted file mode 100644 index a17316aef..000000000 --- a/NickvisionMoney.Shared/Docs/html/hr/import-export.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Uvoz/Izvoz - - - -
-

Uvoz/Izvoz

-
-
-
-

Formati uvoza

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Datumi bi trebali biti u formatu YYYYMMDD.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Datumi bi trebali biti u engleskom (SAD) formatu (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ Iako je CSV uobičajeni format i neke banke dopuštaju svojim korisnicima izvoz podataka u CSV formatu, te su datoteke zapravo tablice koje mogu sadržati proizvoljne podatke. Uvoz CSV datoteke stvorene u jednom drugom programu neće uspjeti jer njezini podaci neće biti kompatibilni s onim što Denaro pokušava dobiti iz datoteke. Svrha uvoza/izvoza CSV datoteka je omogućiti način dodavanja podataka računu pomoću programa kao što su uređivači teksta i uredski paketi. Uvoz će samo dodati nove transakcije bez prepisivanja postojećih. Ako želiš ručno izraditi CSV datoteku, ovo je zaglavlje koje uključuje sve stupce koje Denaro očekuje pronaći:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      ID transakcije. Mora biti jedinstven za određeni račun. ID-ovi počinju s 1.

      -
    • -
    • -

      Date

      -

      Datum transakcije (ili početni datum u slučaju ponovljajuće transakcije). Mora biti u engleskom (SAD) formatu (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Opis transakcije. Može sadržati bilo koje znakove osim točke sa zarezom (;).

      -
    • -
    • -

      Type

      -

      Vrsta transakcije: 0 za prihod, 1 za rashod.

      -
    • -
    • -

      RepeatInterval

      -

      Broj koji predstavlja interval ponavljanja transakcije:

      -

      0 – Nikada

      -

      1 – Dnevno

      -

      2 – Tjedno

      -

      7 – Dvotjeno

      -

      3 – Mjesečno

      -

      4 – Kvartalno

      -

      5 – Godišnje

      -

      6 – Dvogodišnje

      -

      Za detalje o ponovljajućim transakcijama pogledaj Interval ponavljanja na stranici transakcija.

      -
    • -
    • -

      RepeatFrom

      -

      Treba biti ID izvorne transakcije ili 0 ako je izvorna transakcija ili -1 ako nije ponavljajuća transakcija.

      -
    • -
    • -

      RepeatEndDate

      -

      Krajnji datum ponavljajuće transakcije. Mora biti u engleskom (SAD) formatu (MM/DD/YYYY). Ostavi polje praznim ako nije ponavljajuća transakcija.

      -
    • -
    • -

      Amount

      -

      Iznos transakcije u engleskom (SAD) formatu (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Boja transakcije u rgb(R,G,B) formatu, gdje su R, G i B cijeli brojevi od 0 do 255.

      -
    • -
    • -

      UseGroupColor

      -

      Treba li transakcija koristiti boju grupe: 0 – ne, 1 – da.

      -
    • -
    • -

      Group

      -

      ID grupe transakcije. ID-ovi počinju s brojem 1. Za negrupirane transakcije trebao bi biti -1 (ne 0, jer to nije valjana vrijednost za ID grupe).

      -
    • -
    • -

      GroupName

      -

      Ime grupe transakcije treba odgovarati ID-u grupe. Može sadržati bilo koje znakove osim točke sa zarezom (;). Ostavi polje prazno za negrupirane transakcije. U svim drugim slučajevima polje ne bi trebalo biti prazno.

      -
    • -
    • -

      GroupDescription

      -

      Opis grupe transakcije trebao bi odgovarati ID-u grupe. Može sadržati bilo koje znakove osim točke sa zarezom (;) i može biti prazan. Ostavi polje prazno za negrupiranu transakciju.

      -
    • -
    • -

      GroupRGBA

      -

      Boja grupe u rgb(R,G,B) formatu, gdje su R, G i B cijeli brojevi od 0 do 255.

      -
    • -
    -

    CSV datoteka ne sadrži podatke o priznanici i bilješke.

    -
  • -
-
-
-

Formati izvoza

-
-

Odaberi želiš li izvesti sve podatke ili samo podatke iz trenutačnog prikaza. Ako odabereš trenutačni prikaz, trenutačno prikazane transakcije će se izvesti u prikazanom redoslijedu.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    Datoteka će sadržati podatke o računu, popis transakcija i slike priznanica. Transakcije su obojene kao u aplikaciji, ali su boje poluprozirne, kako bi crni tekst uvijek bio jasno vidljiv. Za izvezenu datoteku možeš postaviti lozinku.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hr/index.html b/NickvisionMoney.Shared/Docs/html/hr/index.html deleted file mode 100644 index 6057221ab..000000000 --- a/NickvisionMoney.Shared/Docs/html/hr/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -Denaro pomoć - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hr/transaction.html b/NickvisionMoney.Shared/Docs/html/hr/transaction.html deleted file mode 100644 index 9a6e9384f..000000000 --- a/NickvisionMoney.Shared/Docs/html/hr/transaction.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Transakcija - - - -
-

Transakcija

-
-
-

Ova stranica objašnjava sva svojstva transakcija u aplikaciji Denaro.

-
-
ID
-

Svaka transakcija ima ID koji je jedinstven za određeni račun. ID-ovi počinju s 1 i povećavaju se sa svakom dodanom transakcijom. ID-ovi se ne mogu mijenjati. ID-ovi uklonjenih transakcija se ne koriste ponovo.

-
Opis
-

Dužina opisa nije ograničena. Ne smije sadržati znak točke sa zarezom (;).

-
Iznos
-

Broj u ispravnom formatu za tvoje jezično područje. Za detalje pogledaj Valuta sustava u Stranica računa.

-
Vrsta
-

Prihod ili Rashod. Odabrana opcija u postavkama računa će se standardno odabrati kada otvoriš dijalog za dodavanje nove transakcije.

-
Datum
-

Možeš odabrati bilo koji datum. Također možeš stvoriti transakcije za buduće datume.

-
Interval ponavljanja
-

Koristi ovu opciju za stvaranje ponavljajuće transakcije. Nakon što dodaš transakciju s intervalom ponavljanja, ova će transakcija postati izvorna transakcija. Denaro će automatski generirati ponovljajuće transakcije za datume do danas ili za navedeni krajnji datum ako je postavljen u prošlosti. Ponovljajuće transakcije se ne mogu uređivati ili izbrisati, samo se izvor može promijeniti. Kada promijeniš izvornu transakciju, Denaro će te pitati želiš li promijeniti ili poništiti vezu ponovljajućih transakcija. Ako odlučiš poništiti vezu, ponovljajuće transakcije postaju normalne transakcije i mogu se zasebno uređivati ili brisati.

-
Krajnji datum ponavljanja
-

Krajnji datum za ponavljajuću transakciju. Ne može biti prije ili na isti dan kao početni datum.

-
Grupa
-

Svaka transakcija može pripadati samo jednoj grupi ili nijednoj („Negrupirana” grupa).

-
Boja
-

Boja za transakciju. Može se postaviti da koristi boju grupe ili jedinstvene boje. Prilikom biranja jedinstvene boje, boja će se standardno postaviti na odabranu boju u konfiguraciji, ali se može promijeniti u bilo koju boju.

-
Oznake
-

Popis oznaka za transakciju. Transakcija može imati neograničen broj oznaka (ili ne imati oznake). Oznake mogu sadržati bilo koje znakove osim zareza (,) i imati bilo koju dužinu, ali se očekuje da budu kratke ključne riječi. Oznake su namijenjene za dodatno filtriranje kada korištenje grupa nije dovoljno. Oznake se spremaju samo u samim transakcijama, a kao rezultat toga nekorištene oznake automatski nestaju pri zatvaranju računa.

-
Priznanica
-

Slika priznanice za transakciju. Možeš učitati JPEG ili PNG sliku ili PDF dokument, ali bez obzira na format slika će se pretvorit i spremiti kao JPEG slika. U slučaju PDF-a će se spremiti samo prva stranica. U bilo kojem trenutku možeš izbrisati ili prenijeti jednu drugu datoteku.

-
Bilješke
-

Tekstna bilješka za prilaganje transakciji.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/hr/transfer.html b/NickvisionMoney.Shared/Docs/html/hr/transfer.html deleted file mode 100644 index 0ea14773b..000000000 --- a/NickvisionMoney.Shared/Docs/html/hr/transfer.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer je način premještanja novca s jednog računa na drugi. Nakon pokretanja transfera stvorit će se 2 transakcije sa sljedećim opisima:

-
    -
  • „Transfer na Ime odredišnog računa” na izvornom računu.

  • -
  • „Transfer iz Ime izvornog računa” na odredišni račun.

  • -
-

Transakcije koje su stvorene korištenjem tranfera su jednostavne transakcije koje se mogu slobodno urediti ili izbrisati. Ove transakcije nisu povezane: mijenjanje transakcije u izvornom računu neće utjecati na transakciju u odredišnom računu, i obratno.

-

Transfer ne dozvoljava stvaranje ponavljajućih transakcija niti postavljanje bilo kojih svojstava osim iznosa. Za stvaranje transakcije će se koristiti boja koja je odabrana u konfiguraciji.

-

Ako stvoriš transfer između računa s različitim valutama morat ćeš zadati stopu konverzije.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/id/account.html b/NickvisionMoney.Shared/Docs/html/id/account.html deleted file mode 100644 index be8b1df59..000000000 --- a/NickvisionMoney.Shared/Docs/html/id/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/id/configuration.html b/NickvisionMoney.Shared/Docs/html/id/configuration.html deleted file mode 100644 index 234d3cfbb..000000000 --- a/NickvisionMoney.Shared/Docs/html/id/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Gunakan Digit Bawaan
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/id/import-export.html b/NickvisionMoney.Shared/Docs/html/id/import-export.html deleted file mode 100644 index cfef641ee..000000000 --- a/NickvisionMoney.Shared/Docs/html/id/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/id/index.html b/NickvisionMoney.Shared/Docs/html/id/index.html deleted file mode 100644 index 5f1a10e44..000000000 --- a/NickvisionMoney.Shared/Docs/html/id/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/id/transaction.html b/NickvisionMoney.Shared/Docs/html/id/transaction.html deleted file mode 100644 index 315356faa..000000000 --- a/NickvisionMoney.Shared/Docs/html/id/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Catatan
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/id/transfer.html b/NickvisionMoney.Shared/Docs/html/id/transfer.html deleted file mode 100644 index 645f351ba..000000000 --- a/NickvisionMoney.Shared/Docs/html/id/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/it/account.html b/NickvisionMoney.Shared/Docs/html/it/account.html deleted file mode 100644 index f0bc64c19..000000000 --- a/NickvisionMoney.Shared/Docs/html/it/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Conti - - - -
-

Conti

-
-
-

In questa pagina vengono spiegate tutte le proprietà degli account in Denaro. La maggior parte di esse è mostrata nella finestra di dialogo Impostazioni conto. Questa finestra viene aperta automaticamente alla creazione di un nuovo conto.

-

Ciascun conto è registrato in un singolo file *.nmoney. I file creati da una vecchia versione stabile di Denaro possono essere aperti senza rischi con una versione stabile più recente dell'applicazione. Anche se l'applicazione può girare su più piattaforme (Windows e Linux), i file *.nmoney sono compatibili al 100% tra le piattaforme purché provengano dalla stessa versione dell'applicazione (per esempio V2023.1.0).

-
- - -

Le versioni instabili (beta ed RC) dell'applicazione possono contenere errori o modifiche non terminate, che possono causare la perdita di dati. È sconsigliato usare versioni instabili l'applicazione con file conto che contengono i propri dati veri.

-
-
-
Nome
-

Il nome del conto viene mostrato nella lista dei conti più recenti e nelle schede. I nomi non hanno un limite di lunghezza e possono contenere qualsiasi carattere, anche gli emoji.

-
Tipo di conto
-

Sono disponibili tre tipi di conto: 🟣conto corrente, 🔵deposito and 🟢aziendale. Il tipo di conto è solo un'etichetta, mostrata nella lista dei conti recenti, che non influisce sul funzionamento dell'applicazione o sulle azioni disponibili per ciascun conto. Ciascun tipo di conto ha il suo colore, che può essere configurato nelle impostazioni generali.

-
Tipo di transazione predefinito
-

Questo parametro determina il tipo predefinito di una nuova transazione alla sua creazione.

-
Soglia per i promemoria delle transazioni
-

La soglia utilizzata quando vengono visualizzati promemoria sulle transazioni imminenti.

-
Valuta di sistema
-
-

Ad ogni avvio, l'applicazione recupera i dati sulla valuta e la formattazione dei numeri dai formati di sistema, e usa questi dati per mostrare i simboli delle valute (a meno che sia stata scelta una valuta personalizzata, vedere più sotto) e per determinare in quale formato accettare i valori per l'ammontare delle transazioni. Alcuni esempi:

-
    -
  • Se il proprio formato è Inglese (US), il simbolo della valuta sarà impostato su $ e 1,000.00 verrà accettato come un valore numerico valido.

  • -
  • Se il proprio formato è Italiano, il simbolo della valuta sarà impostato su e 1.000,00 verrà accettato come un valore numerico valido.

  • -
  • Se il proprio formato è Russo, il simbolo della valuta sarà impostato su e 1000,00 verrà accettato come un valore numerico valido.

  • -
-
- - - - - - - - - - - - - -

Su Linux è possibile impostare diversi formati per la lingua e i valori numerici. Il modo per modificare queste impostazioni varia a seconda dell'ambiente desktop usato. Nonostante queste impostazioni si possano trovare in luoghi diversi del desktop, la loro modifica influisce su alcune variabili d'ambiente di sistema come LANG, LC_TIME, e LC_MONETARY. Denaro tenterà di usare i formati numerici e di data specificati da queste variabili. Se non vengono usati i formati che ci si aspetta, assicurarsi che le variabili siano impostate correttamente usando il comando locale in un terminale. Se si verifica un errore e lo si vuole segnalare, fornire l'output del comando locale per permettere agli sviluppatori di riprodurre tale errore con le medesime impostazioni.

-
-
-
Usa valuta personalizzata
-

Se abilitata, simbolo valuta personalizzato verrà usato al posto del simbolo fornito dalle impostazioni del proprio sistema.

-
Simbolo valuta personalizzato
-

Fino a tre caratteri oppure un emoji. Non può essere un numero.

-
Codice valuta personalizzato
-
-

Fino a tre caratteri oppure un emoji.

-

Un esempio per capire la differenza tra simbolo e codice: $ è un simbolo, USD è un codice.

-
-
Stile importo valuta personalizzato
-
-

Possibilità di visualizzare un importo in uno dei seguenti modi:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Separatore decimale e dei gruppi personalizzato
-

Fino a due caratteri oppure un emoji.

-
Cifre decimali personalizzate
-

La dimensione della parte decimale degli importi. Con «Illimitata» ci potranno essere tante cifre decimali quante ne serviranno per mostrare l'importo esatto, ma non verrà mostrata la parte decimale se l'importo è un numero intero.

-
Password
-

Ciascun conto può essere protetto da una password. Aggiungere una password rende il conto cifrato (rendendo impossibile leggerne i dati senza decifrarlo con la password). Attenzione: se la password viene dimenticata, non sarà possibile ripristinare i dati. È possibile rimuovere o cambiare la password tramite le impostazioni del conto, una volta aperto. Rimuovere la password decifrerà il conto.

-
Ordinare per Id, data o importo
-

Ogni conto registra se ordina le transazioni nella finestra principale per il loro ID, la data o l'importo. Quando si modifica la modalità di ordinamento, viene salvata nel file del conto e riprisrinata alla riapertura.

-
Verso dell'ordinamento
-

Ogni conto registra il modo in cui ordina le transazioni nella finestra principale. Quando si modifica la modalità di ordinamento, viene salvata nel file del conto e ripristinata alla riapertura.

-
Visibilità dei gruppi
-

Ogni conto registra se la lista dei gruppi nella finestra principale è nascosta o no. Quando si modifica la visibilità dei gruppi, viene salvata e ripristinata alla riapertura del conto.

-
Visibilità dei tag
-

Ogni account memorizza informazioni sul fatto che l'elenco dei tag nella finestra principale sia nascosto o meno. Ogni volta che modifichi la visibilità dell'elenco dei tag, questo viene salvato e quindi ripristinato quando riapri l'account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/it/configuration.html b/NickvisionMoney.Shared/Docs/html/it/configuration.html deleted file mode 100644 index 9aea800fb..000000000 --- a/NickvisionMoney.Shared/Docs/html/it/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configurazione - - - -
-

Configurazione

-
-
-

Questa pagina descrive cosa è possibile cambiare nella configurazione dell'applicazione.

-

A seconda della propria piattaforma, è possibile trovare la configurazione nell'interfaccia dell'applicazione sotto Preferenze oppure Impostazioni.

-
-
Stile
-

Impostare lo stile chiaro o scuro, oppure dire a Denaro di seguire lo stile di sistema. Cambiare lo stile su Windows richiede il riavvio dell'applicazione per applicare le modifiche.

-
Colore predefinito delle transazioni
-

Un colore che verrà selezionato inizialmente all'aggiunta di una nuova transazione con colore speciale. Cambiare questo colore non avrà effetto sulle transazioni esistenti, anche se usavano un colore predefinito precedentemente selezionato.

-
Colore predefinito dei trasferimenti
-

Un colore che verrà usato per le transazioni create usando i trasferimenti. Cambiare questo colore non avrà effetto sulle transazioni esistenti.

-
Colore dei gruppi predefinito
-

Un colore che verrà selezionato inizialmente all'aggiunta di un nuovo gruppo. È anche il colore per il gruppo «Senza gruppo».

-
Colore dei conti correnti
-

Un colore usato per contrassegnare i conti del tipo conto corrente nella lista dei conti recenti.

-
Colore dei conti deposito
-

Un colore usato per contrassegnare i conti del tipo conto deposito nella lista dei conti recenti.

-
Colore dei conti aziendali
-

Un colore usato per contrassegnare i conti del tipo conto azientale nella lista dei conti recenti.

-
Usa cifre native
-

Se usare delle cifre che sono native della propria regione anziché quelle latine. Per esempio, per sistemi che usano i numeri indo-arabi, se questa opzione è attiva verrà usato ٠١٢ invece di 012.

-
Inserimento separatore decimale
-

Imposta per quali tasti, quando premuti, verrà inserito al loro posto il separatore decimale durante la digitazione di un importo: il punto del tastierino numerico, un punto qualsiasi e una virgola, o nessuno di essi. Se il separatore decimale è già presente nel campo di inserimento, non verrà inserito nuovamente.

-
Cartella di backup in CSV
-

Una cartella in cui i propri dati verranno automaticamente esportati in formato CSV dopo ogni modifica. Questa funzionalità non è attiva per i file protetti da password, poiché i file CSV non possono essere protetti in tale modo.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/it/import-export.html b/NickvisionMoney.Shared/Docs/html/it/import-export.html deleted file mode 100644 index 2b0182ffe..000000000 --- a/NickvisionMoney.Shared/Docs/html/it/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Importazione ed esportazione - - - -
-

Importazione ed esportazione

-
-
-
-

Formati per l'importazione

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Le date devono essere in formato YYYYMMDD.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Le date devono essere nel formato americano (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ Per quanto CSV sia un formato comune e alcune banche permettano ai loro utenti di esportare le informazioni in file CSV, tali file sono a tutti gli effetti tabelle che possono contenere dati arbitrari. Importare un file CSV creato con altri programmi non sarà possibile, perché i dati non saranno compatibili con ciò che Denaro tenta di leggere in un file. Lo scopo dell'importazione ed esportazione in CSV è quello di fornire un modo di aggiungere dati ad un conto usando programmi esterni come editor di testo e suite per ufficio. L'importazione aggiungerà soltanto nuove transazioni, senza sovrascrivere quelle già esistenti. Per creare un file CSV a mano, questa è la riga dei titoli delle colonne che Denaro si aspetta di trovare:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      L'ID della transazione, che deve essere univoco all'interno di ciascun conto. Gli ID partono da 1.

      -
    • -
    • -

      Date

      -

      La data della transazione (o la data d'inizio per quelle ricorrenti) deve essere in formato americano (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      La descrizione della transizione; può contenere qualsiasi carattere tranne il punto e virgola.

      -
    • -
    • -

      Type

      -

      Tipo di transazione: 0 per le entrate, 1 per le uscite.

      -
    • -
    • -

      RepeatInterval

      -

      Un numero che rappresenta la frequenza di ripetizione della transazione:

      -

      0 - Mai

      -

      1 - Ogni giorno

      -

      2 - Ogni settimana

      -

      7 - Ogni due settimane

      -

      3 - Ogni mese

      -

      4 - Ogni tre mesi

      -

      5 - Ogni anno

      -

      6 - Ogni due anni

      -

      Consultare Frequenza in transazioni per dettagli sulle transazioni ricorrenti.

      -
    • -
    • -

      RepeatFrom

      -

      Deve essere o l'ID di una transazione originale, oppure 0 se è una transazione “sorgente” o -1 se non è ricorrente.

      -
    • -
    • -

      RepeatEndDate

      -

      La data di termine per una transazione ricorrente, in formato americano (MM/DD/YYYY). Lasciare vuoto per le transazioni non ricorrenti.

      -
    • -
    • -

      Amount

      -

      Importo della transazione in formato americano (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Il colore della transazione, in formato rgb(R,G,B) dove R, G e B sono numeri interi tra 0 e 255.

      -
    • -
    • -

      UseGroupColor

      -

      Se una transazione deve usare il colore del gruppo: 0 — falso, 1 — vero.

      -
    • -
    • -

      Group

      -

      L'ID del gruppo della transazione. Gli ID partono da 1. Usare il valore -1 per le transazioni che non sono in alcun gruppo (non si usi 0, è un valore incorretto per l'ID del gruppo).

      -
    • -
    • -

      GroupName

      -

      Il nome del gruppo della transazione, che deve corrispondere all'ID del gruppo. Può contenere qualsiasi carattere tranne il punto e virgola. Lasciare vuoto per una transazione che non è in alcun gruppo; in tutti gli altri casi non deve essere vuoto.

      -
    • -
    • -

      GroupDescription

      -

      La descrizione del gruppo della transazione, che deve corrispondere all'ID del gruppo. Può contenere qualsiasi carattere tranne il punto e virgola, e può anche essere vuota. Lasciarla vuota per una transazione che non è in alcun gruppo.

      -
    • -
    • -

      GroupRGBA

      -

      Il colore del gruppo, in formato rgb(R,G,B) dove R, G e B sono numeri interi tra 0 e 255.

      -
    • -
    -

    Ricevute e annotazioni non si trovano nel file CSV.

    -
  • -
-
-
-

Formati per l'esportazione

-
-

È possibile selezionare se esportare tutte le informazioni oppure solo quelle nella vista corrente. Se si seleziona la vista corrente, le transazioni visualizzare verranno esportate nello stesso ordine in cui sono mostrate.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    Un file conterrà le informazioni sul conto, una lista di transazioni e le immagini delle ricevute. Le transazioni sono colorate come nell'applicazione, ma i colori sono resi semitrasparenti in modo che il testo nero sia sempre visibile chiaramente. È possibile impostare una password per il file esportato.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/it/index.html b/NickvisionMoney.Shared/Docs/html/it/index.html deleted file mode 100644 index dac671e21..000000000 --- a/NickvisionMoney.Shared/Docs/html/it/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Aiuto di Denaro - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/it/transaction.html b/NickvisionMoney.Shared/Docs/html/it/transaction.html deleted file mode 100644 index 3f1291e7a..000000000 --- a/NickvisionMoney.Shared/Docs/html/it/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transazione - - - -
-

Transazione

-
-
-

Questa pagina spiega tutte le proprietà delle transazioni in Denaro.

-
-
ID
-

Ciascuna transazione possiede un ID, che è univoco all'interno di ciascun conto. L'ID parte da 1 e viene incrementato ad ogni transazione aggiunta. Gli ID non possono essere cambiati, e quelli delle transazioni rimosse non vengono riusati.

-
Descrizione
-

Nessun limite di lunghezza. Non può contenere punti e virgola.

-
Importo
-

Un numero valido per le proprie impostazioni regionali; si veda Valuta di sistema nella pagina Conti per dettagli.

-
Tipo
-

Entrate o Uscite. All'apertura della finestra per creare una nuova transazione, sarà selezionata l'opzione predefinita scelta nelle impostazioni conto.

-
Data
-

Si può selezionare qualsiasi data, e creare transazioni anche per date future.

-
Frequenza
-

Usare questa opzione per creare una transazione ricorrente. Una volta aggiunta una transazione impostando una frequenza di ricorsione, essa diventerà una transazione sorgente. Denaro genererà automaticamente le transazioni collegate per le date fino ad oggi o fino alla data di termine indicata se è nel passato. Le transazioni collegate non possono essere modificate o eliminate, solo la sorgente può esserlo. Quando si modifica la transazione sorgente, Denaro chiederà se si desidera modificare anche le transazioni collegate o se scollegarle. Se si sceglie di scollegarle, esse diventeranno delle normali transazioni e potranno essere modificate o eliminate individualmente.

-
Fine ripetizione
-

La data di termine di una transazione ricorrente. Non può essere uguale alla data di inizio o precederla.

-
Gruppo
-

Ciascuna transazione può appartenere a un solo gruppo, oppure nessuno (cioè appartiene al gruppo «Senza gruppo»).

-
Colore
-

Un colore per la transazione. Si può impostare affinché la transazione usi il colore del gruppo a cui appartiene, oppure un colore speciale. Se si sceglie il secondo, verrà inizialmente impostato al colore predefinito selezionato nella configurazione, ma può essere cambiato in qualsiasi altro colore.

-
Etichette
-

Un elenco di tag per la transazione. Una transazione può avere un numero illimitato di tag (o non avere tag). I tag possono contenere qualsiasi carattere tranne la virgola (,) e avere qualsiasi lunghezza, ma si prevede che siano parole chiave brevi. I tag sono pensati per essere utilizzati per ulteriori filtri quando l'utilizzo dei gruppi non è sufficiente. I tag vengono salvati solo nelle transazioni stesse e, di conseguenza, i tag non utilizzati scompaiono automaticamente alla chiusura del conto.

-
Ricevuta
-

L'immagine di una ricevuta per la transazione. È possibile caricare immagini in formato JPEG o PNG, oppure documenti PDF, ma a prescindere dal formato verrà convertita e salvata come immagine JPEG. Nel caso del PDF, verrà salvata solo la prima pagina. È possibile eliminare o caricare un altro file in qualsiasi momento.

-
Annotazioni
-

Un testo libero da allegare alla transazione.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/it/transfer.html b/NickvisionMoney.Shared/Docs/html/it/transfer.html deleted file mode 100644 index 38113f191..000000000 --- a/NickvisionMoney.Shared/Docs/html/it/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Trasferimenti - - - -
-

Trasferimenti

-
-
-

I trasferimenti sono un modo per spostare denaro da un conto all'altro. Una volta creato un trasferimento, verranno create due transazioni con le seguenti descrizioni:

-
    -
  • «Trasferimento a Conto di destinazione» sul conto di origine.

  • -
  • «Trasferimento da Conto di origine» sul conto di destinazione.

  • -
-

Le transazioni create da un trasferimento sono delle semplici transazioni che possono essere modificate o eliminate liberamente. Non sono connesse tra loro: modificare la transazione sul conto di origine non avrà effetto sul conto di destinazione, e viceversa.

-

I trasferimenti non permettono di creare transazioni ricorrenti o di impostare altre proprietà oltre all'importo. Il colore scelto nella configurazione sarà usato per le transazioni generate.

-

Se si crea un trasferimento tra conti in valute diverse, verrà chiesto di specificare un tasso di conversione.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ja/account.html b/NickvisionMoney.Shared/Docs/html/ja/account.html deleted file mode 100644 index f91a8c7fd..000000000 --- a/NickvisionMoney.Shared/Docs/html/ja/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ja/configuration.html b/NickvisionMoney.Shared/Docs/html/ja/configuration.html deleted file mode 100644 index d53312757..000000000 --- a/NickvisionMoney.Shared/Docs/html/ja/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
テーマ
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ja/import-export.html b/NickvisionMoney.Shared/Docs/html/ja/import-export.html deleted file mode 100644 index 06d8ce734..000000000 --- a/NickvisionMoney.Shared/Docs/html/ja/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ja/index.html b/NickvisionMoney.Shared/Docs/html/ja/index.html deleted file mode 100644 index 28fd73fe2..000000000 --- a/NickvisionMoney.Shared/Docs/html/ja/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ja/transaction.html b/NickvisionMoney.Shared/Docs/html/ja/transaction.html deleted file mode 100644 index d9af32870..000000000 --- a/NickvisionMoney.Shared/Docs/html/ja/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
デーツ
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ja/transfer.html b/NickvisionMoney.Shared/Docs/html/ja/transfer.html deleted file mode 100644 index c17ea151d..000000000 --- a/NickvisionMoney.Shared/Docs/html/ja/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/nl/account.html b/NickvisionMoney.Shared/Docs/html/nl/account.html deleted file mode 100644 index 860b3f0ca..000000000 --- a/NickvisionMoney.Shared/Docs/html/nl/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Naam
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Accounttype
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Standaaardtransactietype
-

When you create a new transaction its type by default will be the same as in this setting.

-
Drempelwaarde voor transactie­herinneringen
-

The threshold used when showing reminders about upcoming transactions.

-
Systeemvaluta
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Aangepaste valuta gebruiken
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Aangepast valutasymbool
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Aangepaste valutacode
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Wachtwoord
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorteervolgorde
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groepszichtbaarheid
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Label­zichtbaarheid
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/nl/configuration.html b/NickvisionMoney.Shared/Docs/html/nl/configuration.html deleted file mode 100644 index 16c5d8f63..000000000 --- a/NickvisionMoney.Shared/Docs/html/nl/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuratie - - - -
-

Configuratie

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Thema
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Standaard­transactiekleur
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Standaard­overdrachtkleur
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Standaard­groepskleur
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Kleur van betaal­rekening
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Kleur van spaar­rekening
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Kleur van bedrijfs­rekening
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Lokale decimale notatie gebruiken
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Decimaal scheidings­teken invoegen
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV-back-up­map
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/nl/import-export.html b/NickvisionMoney.Shared/Docs/html/nl/import-export.html deleted file mode 100644 index 3a3811c70..000000000 --- a/NickvisionMoney.Shared/Docs/html/nl/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Importeren/exporteren - - - -
-

Importeren/exporteren

-
-
-
-

Formaten importeren

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Nooit

      -

      1 - Dagelijks

      -

      2 - Wekelijks

      -

      7 - Twee­wekelijks

      -

      3 - Maandelijks

      -

      4 - Eén keer per kwartaal

      -

      5 - Jaarlijks

      -

      6 - Twee­jaarlijks

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Formaten exporteren

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/nl/index.html b/NickvisionMoney.Shared/Docs/html/nl/index.html deleted file mode 100644 index 1690931d8..000000000 --- a/NickvisionMoney.Shared/Docs/html/nl/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Hulp voor Denaro - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/nl/transaction.html b/NickvisionMoney.Shared/Docs/html/nl/transaction.html deleted file mode 100644 index 1c67eb179..000000000 --- a/NickvisionMoney.Shared/Docs/html/nl/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transactie - - - -
-

Transactie

-
-
-

This page explains all properties of transactions in Denaro.

-
-
ID
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Omschrijving
-

No limit on length. It can't contain semicolon.

-
Hoeveelheid
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Datum
-

Any date can be selected, you can also create transactions for future dates.

-
Herhalingsinterval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Einddatum herhalen
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Groep
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Kleur
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Factuur
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Aantekeningen
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/nl/transfer.html b/NickvisionMoney.Shared/Docs/html/nl/transfer.html deleted file mode 100644 index 08e0e4cee..000000000 --- a/NickvisionMoney.Shared/Docs/html/nl/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Overdracht - - - -
-

Overdracht

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/oc/account.html b/NickvisionMoney.Shared/Docs/html/oc/account.html deleted file mode 100644 index e0531167f..000000000 --- a/NickvisionMoney.Shared/Docs/html/oc/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/oc/configuration.html b/NickvisionMoney.Shared/Docs/html/oc/configuration.html deleted file mode 100644 index 1940bf63a..000000000 --- a/NickvisionMoney.Shared/Docs/html/oc/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/oc/import-export.html b/NickvisionMoney.Shared/Docs/html/oc/import-export.html deleted file mode 100644 index 59dbc5360..000000000 --- a/NickvisionMoney.Shared/Docs/html/oc/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/oc/index.html b/NickvisionMoney.Shared/Docs/html/oc/index.html deleted file mode 100644 index 2e59d9632..000000000 --- a/NickvisionMoney.Shared/Docs/html/oc/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/oc/transaction.html b/NickvisionMoney.Shared/Docs/html/oc/transaction.html deleted file mode 100644 index 535aa8de9..000000000 --- a/NickvisionMoney.Shared/Docs/html/oc/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/oc/transfer.html b/NickvisionMoney.Shared/Docs/html/oc/transfer.html deleted file mode 100644 index f2bd9cf1c..000000000 --- a/NickvisionMoney.Shared/Docs/html/oc/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pl/account.html b/NickvisionMoney.Shared/Docs/html/pl/account.html deleted file mode 100644 index 3271b545e..000000000 --- a/NickvisionMoney.Shared/Docs/html/pl/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Konto - - - -
-

Konto

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Nazwa
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Rodzaj konta
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Rodzaj domyślnej transakcji
-

When you create a new transaction its type by default will be the same as in this setting.

-
Częstotliwość przypomnień o transakcji
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Użyj własnej waluty
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Niestandardowy symbol waluty
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Niestandardowy kod waluty
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Hasło
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Kolejność sortowania
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Widzialność grup
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Widoczność tagów
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pl/configuration.html b/NickvisionMoney.Shared/Docs/html/pl/configuration.html deleted file mode 100644 index d516d8209..000000000 --- a/NickvisionMoney.Shared/Docs/html/pl/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Domyślny kolor transakcji
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Domyślny kolor przelewu
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Domyślny kolor grupy
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Kolor konta bieżącego
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Kolor konta oszczędnościowego
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Kolor konta firmowego
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Używaj cyfr rodzimych
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Wstawianie separatora dziesiętnego
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
Folder kopii zapasowych CSV
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pl/import-export.html b/NickvisionMoney.Shared/Docs/html/pl/import-export.html deleted file mode 100644 index 7c16445f7..000000000 --- a/NickvisionMoney.Shared/Docs/html/pl/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Eksport - - - -
-

Import/Eksport

-
-
-
-

Formaty importu

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Nigdy

      -

      1 - Codziennie

      -

      2 - Tygodniowo

      -

      7 - Co dwa tygodnie

      -

      3 - Miesięcznie

      -

      4 - Kwartalnie

      -

      5 - Rocznie

      -

      6 - Co dwa lata

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Formaty eksportu

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pl/index.html b/NickvisionMoney.Shared/Docs/html/pl/index.html deleted file mode 100644 index 6e9bbfe59..000000000 --- a/NickvisionMoney.Shared/Docs/html/pl/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Pomoc Denaro - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pl/transaction.html b/NickvisionMoney.Shared/Docs/html/pl/transaction.html deleted file mode 100644 index 27e2246f3..000000000 --- a/NickvisionMoney.Shared/Docs/html/pl/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transakcja - - - -
-

Transakcja

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Identyfikator (ID)
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Opis
-

No limit on length. It can't contain semicolon.

-
Kwota
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Rodzaj
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Data
-

Any date can be selected, you can also create transactions for future dates.

-
Interwał powtarzania
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Data końca powtarzania
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Grupa
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Kolor
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tagi
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Potwierdzenie
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Uwagi
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pl/transfer.html b/NickvisionMoney.Shared/Docs/html/pl/transfer.html deleted file mode 100644 index 592644018..000000000 --- a/NickvisionMoney.Shared/Docs/html/pl/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Przelew - - - -
-

Przelew

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt/account.html b/NickvisionMoney.Shared/Docs/html/pt/account.html deleted file mode 100644 index 9cdc03516..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt/configuration.html b/NickvisionMoney.Shared/Docs/html/pt/configuration.html deleted file mode 100644 index 3a776c792..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt/import-export.html b/NickvisionMoney.Shared/Docs/html/pt/import-export.html deleted file mode 100644 index eaaaacd82..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt/index.html b/NickvisionMoney.Shared/Docs/html/pt/index.html deleted file mode 100644 index f30407065..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt/transaction.html b/NickvisionMoney.Shared/Docs/html/pt/transaction.html deleted file mode 100644 index 4f7576495..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt/transfer.html b/NickvisionMoney.Shared/Docs/html/pt/transfer.html deleted file mode 100644 index c2278d4aa..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt_BR/account.html b/NickvisionMoney.Shared/Docs/html/pt_BR/account.html deleted file mode 100644 index 0a51091c7..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt_BR/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Conta - - - -
-

Conta

-
-
-

Esta página explica todas as propriedades das contas no Denaro. A maioria deles é mostrada na Caixa de Diálogo de Configurações da Conta. Essa caixa de diálogo também abre automaticamente depois de criar uma nova conta.

-

Cada conta é armazenada em um único arquivo *.nmoney. Os arquivos criados em uma versão estável mais antiga do Denaro podem ser abertos com segurança em uma versão estável mais recente do aplicativo. Embora, o app possa ser executado em diferentes plataformas (Windows e Linux), os arquivos *.nmoney são 100% compatíveis entre as plataformas, desde que sejam da mesma versão do aplicativo (V2023.1.0, por exemplo).

-
- - -

As versões instáveis (Beta e RC) do aplicativo podem conter bugs ou modificações inacabadas que podem causar perda de dados. NÃO use arquivos de conta que contêm dados reais em versões instáveis do app!

-
-
-
Nome
-

O nome da conta é mostrado na lista de contas recentes e nas abas. Um nome não possui limite de tamanho e pode conter quaisquer caracteres, incluindo emojis.

-
Tipo de Conta
-

Existem 3 tipos de conta disponíveis: 🟣Corrente, 🔵Poupança e 🟢Comercial. O tipo da conta é so um rótulo útil que é mostrado na lista de contas recentes e não afeta o funcionamento do aplicativo ou o que pode ser feito com uma conta. Cada tipo de conta possui sua própria cor. Essas cores podem ser configuradas nas configurações globais.

-
Tipo Padrão das Transações
-

Quando você cria uma nova transação, o seu tipo, por padrão, será o mesmo que nesta configuração.

-
Limite de Lembretes de Transação
-

The threshold used when showing reminders about upcoming transactions.

-
Moeda do Sistema
-
-

Sempre que o aplicativo é iniciado, ele obtém os dados sobre a moeda e formatação de números do seu sistema e os usa para mostrar o símbolo da moeda (a menos que uma moeda personalizada seja usada. Veja abaixo) e para determinar em que formato os números serão aceitos como valor para as transações. Alguns exemplos:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt_BR/configuration.html b/NickvisionMoney.Shared/Docs/html/pt_BR/configuration.html deleted file mode 100644 index 2a194b8ec..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt_BR/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt_BR/import-export.html b/NickvisionMoney.Shared/Docs/html/pt_BR/import-export.html deleted file mode 100644 index d8a5f143e..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt_BR/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt_BR/index.html b/NickvisionMoney.Shared/Docs/html/pt_BR/index.html deleted file mode 100644 index 20ab47f90..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt_BR/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt_BR/transaction.html b/NickvisionMoney.Shared/Docs/html/pt_BR/transaction.html deleted file mode 100644 index 4070b2858..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt_BR/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/pt_BR/transfer.html b/NickvisionMoney.Shared/Docs/html/pt_BR/transfer.html deleted file mode 100644 index 50a38db58..000000000 --- a/NickvisionMoney.Shared/Docs/html/pt_BR/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ro/account.html b/NickvisionMoney.Shared/Docs/html/ro/account.html deleted file mode 100644 index e9f2d0c44..000000000 --- a/NickvisionMoney.Shared/Docs/html/ro/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Nume
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Tipul contului
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ro/configuration.html b/NickvisionMoney.Shared/Docs/html/ro/configuration.html deleted file mode 100644 index 626f90d0a..000000000 --- a/NickvisionMoney.Shared/Docs/html/ro/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ro/import-export.html b/NickvisionMoney.Shared/Docs/html/ro/import-export.html deleted file mode 100644 index aaf88adf8..000000000 --- a/NickvisionMoney.Shared/Docs/html/ro/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ro/index.html b/NickvisionMoney.Shared/Docs/html/ro/index.html deleted file mode 100644 index 4e5975878..000000000 --- a/NickvisionMoney.Shared/Docs/html/ro/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ro/transaction.html b/NickvisionMoney.Shared/Docs/html/ro/transaction.html deleted file mode 100644 index 217461f22..000000000 --- a/NickvisionMoney.Shared/Docs/html/ro/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Tranzacție - - - -
-

Tranzacție

-
-
-

This page explains all properties of transactions in Denaro.

-
-
ID
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Descriere
-

No limit on length. It can't contain semicolon.

-
Sumă
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Gen
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Data
-

Any date can be selected, you can also create transactions for future dates.

-
Interval de repetare
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Data sfârșitul repetiției
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Grupă
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Etichete
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Chitanță
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Note
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ro/transfer.html b/NickvisionMoney.Shared/Docs/html/ro/transfer.html deleted file mode 100644 index 33f2308bc..000000000 --- a/NickvisionMoney.Shared/Docs/html/ro/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ru/account.html b/NickvisionMoney.Shared/Docs/html/ru/account.html deleted file mode 100644 index 996aa9bc3..000000000 --- a/NickvisionMoney.Shared/Docs/html/ru/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Счёт - - - -
-

Счёт

-
-
-

На этой странице перечислены все свойства счетов в Denaro. Большинство из них отображены в Диалоге настроек счёта. Этот диалог открывается автоматически, когда вы создаёте новый счёт.

-

Каждый счёт хранится в одном файле *.nmoney. Файлы, созданные в старых стабильных версиях Denaro, могут быть безопасно открыты в более новых стабильных версиях приложения. Приложение поддерживает различные платформы (Windows and Linux), и файлы *.nmoney 100% совместимы между платформами, если используется та же версия приложения (например, V2023.1.0).

-
- - -

Нестабильные (Beta и RC) версии приложения могут содержать ошибки или незавершённые изменения, который могут привести к потере данных. НЕ ИСПОЛЬЗУЙТЕ файлы счетов, содержащие важные данные, в нестабильных версиях приложения!

-
-
-
Имя
-

Имя счёта отображается в списке недавних счетов и во вкладках. На количество символов в имени нет ограничения, и оно может содержать любые символы, включая эмодзи.

-
Тип счёта
-

Доступно 3 типа счетов: 🟣Расчётный, 🔵Сберегательный и 🟢Бизнес. Тип счёта представляет собой лишь полезную метку, которая отображается в списке недавних счетов, и никак не влияет на работу приложения, не меняет ничего в том, как вы можете использовать счёт. У каждого типа счёта есть свой цвет, цвета можно настроить в глобальной конфигурации.

-
Тип транзакции по умолчанию
-

Когда вы создаёте новую транзакцию, её тип по умолчанию будет тем же, что указан этой настройкой.

-
Порог напоминаний для транзакций
-

Этот порог используется для отображения напоминаний для грядущих транзакций.

-
Системная валюта
-
-

Каждый раз, когда приложение запускается, оно получает данные о валюте и формате чисел из региональных настроек вашей системы, и эти данные используются для отображения символа валюты (если только вы не указали свою валюту, смотрите ниже), а также для определения того, в каком формате числа будут приниматься в качестве значения суммы для транзакций. Несколько примеров:

-
    -
  • Если ваш регион Английский (США), знак $ будет символом валюты, а 1,000.00 будет приниматься как корректное число.

  • -
  • Если ваш регион Итальянский, знак будет символом валюты, а 1.000,00 будет приниматься как корректное число.

  • -
  • Если ваш регион Российский, знак будет символом валюты, а 1000,00 будет приниматься как корректное число.

  • -
-
- - - - - - - - - - - - - -

В ОС Linux возможно установить разные региональные настройки отдельно для языка и форматов. Способ изменения этих настроек зависит от вашего рабочего окружения. Несмотря на различия в расположении этих настроек, их изменение приводит к модификации системных переменных окружения, таких как LANG (формат языка), LC_TIME (формат дат и времени) и LC_MONETARY (формат чисел и валюты). Denaro попытается использовать форматы для сумм транзакций и дат в соответствии с этими переменными. Если приложение не использует ожидаемые форматы, проверьте корректность значений переменных, используя команду locale в терминале. Если вы нашли ошибку в приложении и хотите сообщить о ней, добавьте вывод команды locale в ваше сообщение, чтобы разработчики смогли воспроизвести ошибку, установив идентичные настройки.

-
-
-
Использование своей валюты
-

Если эта опция включена, свой Символ валюты будет использоваться вместо символа, предоставленного региональными настройками вашей системы.

-
Свой символ валюты
-

До 3 текстовых символов, либо 1 эмодзи. Не может быть числом.

-
Свой код валюты
-
-

До 3 текстовых символов, либо 1 эмодзи.

-

Пример для понимания разницы между символом и кодом: $ — символ, USD — код.

-
-
Свой стиль отображения сумм
-
-

Можно выбрать один из следующих стилей:

-
    -
  • ₽n

  • -
  • n₽

  • -
  • ₽ n

  • -
  • n ₽

  • -
-
-
Десятичный разделитель и разделитель групп разрядов
-

До 2 текстовых символов, либо 1 эмодзи.

-
Цифры в дробной части
-

Размер дробной части значений сумм. При выборе неограниченного размера будет отображаться столько цифр, сколько необходимо для отображения точного значения, но дробной части не будет, если число целое.

-
Пароль
-

Каждый счёт может быть защищён паролем. Добавление пароля делает счёт зашифрованным (доступ к данным невозможно получить, не расшифровав файл с помощью пароля). Будьте осторожны: если вы забудете пароль, вы не сможете восстановить данные! Пароль может быть изменён или удалён в диалоге настроек счёта. Удаление пароля расшифровывает данные.

-
Сортировка по номеру, дате или сумме
-

Каждый счёт хранит информацию о том, должны ли транзакции в главном окне быть отсортированы по номеру, дате или сумме. Каждый раз, когда вы меняете сортировку, она сохраняется для открытого счёта и будет восстановлена, когда вы снова откроете этот счёт.

-
Порядок сортировки
-

Каждый счёт хранит информацию о том, в каком порядке должны отображаться транзакции в главном окне. Каждый раз, когда вы меняете порядок, он сохраняется для открытого счёта и будет восстановлен, когда вы снова откроете этот счёт.

-
Видимость групп
-

Каждый счёт хранит информацию о том, должен ли список групп быть показан в главном окне. Каждый раз, когда вы меняете видимость списка групп, информация об этом сохраняется для открытого счёта и состояние списка групп будет восстановлено, когда вы снова откроете этот счёт.

-
Видимость меток
-

Каждый счёт хранит информацию о том, должен ли список меток быть показан в главном окне. Каждый раз, когда вы меняете видимость списка меток, информация об этом сохраняется для открытого счёта и состояние списка меток будет восстановлено, когда вы снова откроете этот счёт.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ru/configuration.html b/NickvisionMoney.Shared/Docs/html/ru/configuration.html deleted file mode 100644 index 08bf414a7..000000000 --- a/NickvisionMoney.Shared/Docs/html/ru/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Конфигурация - - - -
-

Конфигурация

-
-
-

На этой странице перечислены настройки, которые вы можете изменить в конфигурации приложения.

-

В зависимости от вашей ОС, в интерфейсе приложения конфигурация называется другим термином: Параметры или Настройки.

-
-
Тема
-

Установите, должно ли приложение использовать светлую или тёмную тему, либо следовать настройкам вашей системы. Для применения темы в ОС Windows требуется перезапуск программы.

-
Цвет транзакции по умолчанию
-

Цвет, который будет выбран по умолчанию при создании новой транзакции с собственным цветом. Изменение цвета не затронет существующие транзакции, даже если они используют цвет, который ранее был цветом по умолчанию.

-
Цвет перевода средств по умолчанию
-

Цвет, который будет использован для транзакций, созданных с помощью перевода средств. Изменение цвета не затронет существующие транзакции.

-
Цвет группы по умолчанию
-

Цвет, который будет выбран по умолчанию при создании новой группы. Это также цвет группы «Несгруппированные».

-
Цвет расчётного счёта
-

Цвет, которым отмечаются Расчётные счета в списке недавних счетов.

-
Цвет сберегательного счёта
-

Цвет, которым отмечаются Сберегательные счета в списке недавних счетов.

-
Цвет бизнес счёта
-

Цвет, которым отмечаются Бизнес счета в списке недавних счетов.

-
Использовать местные цифры
-

Должно ли приложение использовать цифры, родные для вашего региона, вместо арабских цифр. Например, если эта настройка включена, ٠١٢ будут отображаться вместо 012 при региональных настройках, которые используют восточные арабские цифры.

-
Вставка десятичного разделителя
-

Установите, нажатия каких кнопок будут вставлять десятичный разделитель в поля сумм: точка на Numpad, любая точка или запятая, либо можно отключить эту функцию. Если десятичный разделитель уже присутствует в строке, он не будет добавлен.

-
Папка резервных копий CSV
-

Папка, в которую ваши данные будут автоматически экспортироваться в формате CSV после каждого изменения. Эта функция не работает для счетов, защищённых паролем, т.к. CSV файлы не могут быть защищены паролем.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ru/import-export.html b/NickvisionMoney.Shared/Docs/html/ru/import-export.html deleted file mode 100644 index 7c07ca193..000000000 --- a/NickvisionMoney.Shared/Docs/html/ru/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Импорт/Экспорт - - - -
-

Импорт/Экспорт

-
-
-
-

Форматы импорта

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Даты должны быть в формате ГГГГММДД.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Даты должны быть в Английском (США) формате (ММ/ДД/ГГГГ).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ Хотя CSV является распространённым форматом, и некоторые банки предоставляют возможность своим клиентам экспортировать данные в формате CSV, такие файлы фактически являются таблицами, которые могут содержать произвольные данные. Импорт CSV файла, созданного в другой программе, не удастся, т.к. данные не будут совместимы с тем, что Denaro ожидает получить из файла. Смысл импорта/экспорта CSV в том, чтобы предоставить возможность добавлять новые данные в счёт, используя сторонние программы, например, текстовые редакторы или офисные приложения. При импорте только создаются новые транзакции, существующие не перезаписываются. Если вы хотите создать CSV файл вручную, заголовок таблицы со всеми столбцами, которые Denaro ожидает найти, выглядит следующим образом:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Номер транзакции, должен быть уникальным для данного счёта. Номера начинаются с 1.

      -
    • -
    • -

      Date

      -

      Дата транзакции (или дата начала для повторяющейся транзакции), должна быть в Английском (США) формате (ММ/ДД/ГГГГ).

      -
    • -
    • -

      Description

      -

      Описание транзакции, может содержать любые символы, кроме точки с запятой.

      -
    • -
    • -

      Type

      -

      Тип транзакции: 0 - доход, 1 - расход.

      -
    • -
    • -

      RepeatInterval

      -

      Число, соответствующее интервалу повтора транзакции:

      -

      0 - Никогда

      -

      1 - Ежедневно

      -

      2 - Еженедельно

      -

      7 - Раз в 2 недели

      -

      3 - Ежемесячно

      -

      4 - Ежеквартально

      -

      5 - Ежегодно

      -

      6 - Раз в два года

      -

      Подробности о повторящихся транзакциях смотрите в описании Интервала Повтора на странице о транзакциях.

      -
    • -
    • -

      RepeatFrom

      -

      Либо номер транзакции-источника, либо 0, если это транзакция-источник, либо -1, если это не повторящаяся транзакция.

      -
    • -
    • -

      RepeatEndDate

      -

      Дата окончания повторяющейся транзакции, должна быть в Английском (США) формате (ММ/ДД/ГГГГ). Оставьте это поле пустым, если транзакция не повторяющаяся.

      -
    • -
    • -

      Amount

      -

      Сумма транзакции в Английском (США) формате (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Цвет транзакции, должен быть в формате rgb(R,G,B), где R (красный), G (зелёный) и B (синий) — это целые числа в диапазоне от 0 до 255.

      -
    • -
    • -

      UseGroupColor

      -

      Должен ли для транзакции использоваться цвет группы: 0 — нет, 1 — да.

      -
    • -
    • -

      Group

      -

      Номер группы транзакции. Номера начинаются с 1. Для транзакции без группы укажите -1 (не 0, это некорректное значение для номера группы).

      -
    • -
    • -

      GroupName

      -

      Имя группы транзакции, должно соответствовать номеру группы. Может содержать любые символы, кроме точки с запятой. Оставьте это поле постым для транзакции без группы, но если транзакция принадлежит к какой-либо группе, имя не должно быть пустым.

      -
    • -
    • -

      GroupDescription

      -

      Описание группы транзакции, должно соответствовать номеру группы. Может содержать любые символы, кроме точки с запятой, и может быть пустым. Оставьте это поле постым для транзакции без группы.

      -
    • -
    • -

      GroupRGBA

      -

      Цвет группы, должен быть в формате rgb(R,G,B), где R (красный), G (зелёный) и B (синий) — это целые числа в диапазоне от 0 до 255.

      -
    • -
    -

    Чек и заметки не присутствуют в формате CSV.

    -
  • -
-
-
-

Форматы экспорта

-
-

Вы можете выбрать, следует ли экспортировать всю информацию или только из текущего вида. Если выберите текущий вид, отображаемые в данный момент транзакции будут экспортированы в том же порядке, в котором они показаны.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    Файл будет содержать информацию о счёте, список транзакций и изображения чеков. Транзакции окрашены цветами так же, как в приложении, но цвета сделаны полупрозрачными, чтобы на них всегда был отчётливо виден чёрный текст. Вы можете защитить экспортируемый файл паролем.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ru/index.html b/NickvisionMoney.Shared/Docs/html/ru/index.html deleted file mode 100644 index 071f5f53a..000000000 --- a/NickvisionMoney.Shared/Docs/html/ru/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Справка Denaro - - - -
-

Справка Denaro

-
-

Эта документация призвана помочь вам понять, как управлять данными в Denaro, чтобы использовать приложение максимально эффективно.

-

Для получения дополнительной помощи посетите раздел проблем или обсуждения на Github, либо наш канал в Matrix.

- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ru/transaction.html b/NickvisionMoney.Shared/Docs/html/ru/transaction.html deleted file mode 100644 index 22c1e33a7..000000000 --- a/NickvisionMoney.Shared/Docs/html/ru/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Транзакция - - - -
-

Транзакция

-
-
-

На этой странице перечислены все свойства транзакций в Denaro.

-
-
Номер
-

Каждой транзакции присваивается идентификационный номер, уникальный в пределах счёта. Номера начинаются с 1 и увеличиваются с каждой добавленной транзакцией. Номер нельзя изменить, номера удалённых транзакций не используются повторно.

-
Описание
-

Нет ограничений по длине. Может содержать любые символы, кроме точки с запятой.

-
Сумма
-

Число в формате, корректном для ваших региональных настроек, для подробностей почитайте о Системной валюте на странице о счетах.

-
Тип
-

Доходы или Расходы. По умолчанию при открытии диалога добавления новой транзакции будет выбран тот тип, что указан в настройках счёта.

-
Дата
-

Может быть выбрана любая дата, вы также можете создавать транзакции для будущих дат.

-
Интервал повтора
-

Укажите интервал повтора для создания повторяющихся транзакций. После добавления транзакции с интервалом повтора, эта транзакция становится транзакцией-источником. Denaro автоматически сгенерирует транзакции-повторы вплоть до текущего дня, либо до даты окончания повтора, если она в прошлом. Повторы нельзя редактировать и удалять, только источник может быть изменён. Когда вы внесёте изменения в источник, Denaro спросит, хотите ли вы так же изменить повторы, либо же отвязать их. Если вы отвяжете транзакции-повторы, они станут обычными транзакциями, которые можно будет по отдельности редактировать и удалять.

-
Дата окончания повтора
-

Крайняя дата для транзакции с повтором. Она не может быть раньше или в тот же день что и дата начала.

-
Группа
-

Каждая транзакция может принадлежать только к одной группе, либо быть без группы (т.е. принадлежать к группе «Несгруппированные»).

-
Цвет
-

Цвет транзакции. Можно либо использовать цвет группы, либо указать собственный цвет. При выборе собственного цвета, по умолчанию он будет соответствовать цвету, указанному в конфигурации, но он может быть изменён на любой другой цвет.

-
Метки
-

Список меток для транзакции. У транзакции может быть сколько угодно меток (либо не быть меток вовсе). Метки могут содержать любые символы, кроме запятой (,), и у них может быть любая длина, но предполагается что это буду короткие ключевые слова. Метки предназначены для дополнительной фильтрации, когда использования групп недостаточно. Метки сохраняются в самих транзакциях, в результате чего неиспользованные метки исчезают автоматически при закрытии счёта.

-
Чек
-

Изображение чека транзакции. Вы можете загрузить изображение в формате JPEG или PNG, либо PDF документ, но независимо от формата файл будет конвертирован и сохранён как изображение JPEG. Если вы загрузил PDF, только первая страница будет сохранена. Удалить или загрузить другой файл можно в любой момент.

-
Заметки
-

Текстовая заметка в свободной форме для прикрепления к транзакции.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ru/transfer.html b/NickvisionMoney.Shared/Docs/html/ru/transfer.html deleted file mode 100644 index 6e396cb6b..000000000 --- a/NickvisionMoney.Shared/Docs/html/ru/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Перевод средств - - - -
-

Перевод средств

-
-
-

Перевод средств — это способ перечислить деньги с одного счёта на другой. После выполнения перевода будут созданы 2 транзакции со следующими описаниями:

-
    -
  • «Перевод на Имя целевого счёта» на исходном счёте.

  • -
  • «Перевод с Имя исходного счёта» на целевом счёте.

  • -
-

Транзакции, созданные с помощью перевода средств, являются простыми транзакциями, которые можно свободно редактировать и удалять. Эти транзакции не связаны: изменение транзакции на исходном счёте не изменит транзакцию на целевом счёте, и наоборот.

-

Перевод средств не позволяет создавать повторяющиеся транзакции или задавать какие-либо другие свойства, кроме суммы. Цвет, выбранный в конфигурации, будет использован для созданных транзакций.

-

Если вы производите перевод средств между счетами с разными валютами, Denaro попросит вас указать обменный курс.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/sv/account.html b/NickvisionMoney.Shared/Docs/html/sv/account.html deleted file mode 100644 index bdf1f2854..000000000 --- a/NickvisionMoney.Shared/Docs/html/sv/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/sv/configuration.html b/NickvisionMoney.Shared/Docs/html/sv/configuration.html deleted file mode 100644 index c0e5947ab..000000000 --- a/NickvisionMoney.Shared/Docs/html/sv/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/sv/import-export.html b/NickvisionMoney.Shared/Docs/html/sv/import-export.html deleted file mode 100644 index d3e3dfd7b..000000000 --- a/NickvisionMoney.Shared/Docs/html/sv/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/sv/index.html b/NickvisionMoney.Shared/Docs/html/sv/index.html deleted file mode 100644 index ce56294d9..000000000 --- a/NickvisionMoney.Shared/Docs/html/sv/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/sv/transaction.html b/NickvisionMoney.Shared/Docs/html/sv/transaction.html deleted file mode 100644 index 8b7efdde3..000000000 --- a/NickvisionMoney.Shared/Docs/html/sv/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/sv/transfer.html b/NickvisionMoney.Shared/Docs/html/sv/transfer.html deleted file mode 100644 index 90ac01ba8..000000000 --- a/NickvisionMoney.Shared/Docs/html/sv/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ta/account.html b/NickvisionMoney.Shared/Docs/html/ta/account.html deleted file mode 100644 index ea057297b..000000000 --- a/NickvisionMoney.Shared/Docs/html/ta/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ta/configuration.html b/NickvisionMoney.Shared/Docs/html/ta/configuration.html deleted file mode 100644 index 521095370..000000000 --- a/NickvisionMoney.Shared/Docs/html/ta/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ta/import-export.html b/NickvisionMoney.Shared/Docs/html/ta/import-export.html deleted file mode 100644 index bf5681707..000000000 --- a/NickvisionMoney.Shared/Docs/html/ta/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ta/index.html b/NickvisionMoney.Shared/Docs/html/ta/index.html deleted file mode 100644 index 034ffc596..000000000 --- a/NickvisionMoney.Shared/Docs/html/ta/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ta/transaction.html b/NickvisionMoney.Shared/Docs/html/ta/transaction.html deleted file mode 100644 index c9a21c1d2..000000000 --- a/NickvisionMoney.Shared/Docs/html/ta/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ta/transfer.html b/NickvisionMoney.Shared/Docs/html/ta/transfer.html deleted file mode 100644 index db7d93a2f..000000000 --- a/NickvisionMoney.Shared/Docs/html/ta/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/tr/account.html b/NickvisionMoney.Shared/Docs/html/tr/account.html deleted file mode 100644 index c30077cd5..000000000 --- a/NickvisionMoney.Shared/Docs/html/tr/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
İşlem Hatırlatma Eşiği
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/tr/configuration.html b/NickvisionMoney.Shared/Docs/html/tr/configuration.html deleted file mode 100644 index bd5dfee1b..000000000 --- a/NickvisionMoney.Shared/Docs/html/tr/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Öntanımlı İşlem Rengi
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Öntanımlı Aktarım Rengi
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Öntanımlı Grup Rengi
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Kurumsal Hesap Rengi
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Yerel Rakamları Kullan
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/tr/import-export.html b/NickvisionMoney.Shared/Docs/html/tr/import-export.html deleted file mode 100644 index 59090cd9b..000000000 --- a/NickvisionMoney.Shared/Docs/html/tr/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/tr/index.html b/NickvisionMoney.Shared/Docs/html/tr/index.html deleted file mode 100644 index 5c5639cfa..000000000 --- a/NickvisionMoney.Shared/Docs/html/tr/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/tr/transaction.html b/NickvisionMoney.Shared/Docs/html/tr/transaction.html deleted file mode 100644 index c55139339..000000000 --- a/NickvisionMoney.Shared/Docs/html/tr/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -İşlem - - - -
-

İşlem

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Tür
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Tekrarlama Aralığı
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Tekrarlama Bitiş Tarihi
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Etiketler
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/tr/transfer.html b/NickvisionMoney.Shared/Docs/html/tr/transfer.html deleted file mode 100644 index cf1ccb292..000000000 --- a/NickvisionMoney.Shared/Docs/html/tr/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ur/account.html b/NickvisionMoney.Shared/Docs/html/ur/account.html deleted file mode 100644 index 87e57661b..000000000 --- a/NickvisionMoney.Shared/Docs/html/ur/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Account - - - -
-

Account

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
Name
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
Account Type
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
Default Transaction Type
-

When you create a new transaction its type by default will be the same as in this setting.

-
Transaction Reminders Threshold
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
Use Custom Currency
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
Password
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ur/configuration.html b/NickvisionMoney.Shared/Docs/html/ur/configuration.html deleted file mode 100644 index e61b1dc27..000000000 --- a/NickvisionMoney.Shared/Docs/html/ur/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
Theme
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
Transaction Default Color
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
Transfer Default Color
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
Group Default Color
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
Checking Account Color
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
Savings Account Color
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
Business Account Color
-

A color used to mark accounts with the Business type in a recent accounts list.

-
Use Native Digits
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
Insert Decimal Separator
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CSV Backup Folder
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ur/import-export.html b/NickvisionMoney.Shared/Docs/html/ur/import-export.html deleted file mode 100644 index acaba3d39..000000000 --- a/NickvisionMoney.Shared/Docs/html/ur/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ur/index.html b/NickvisionMoney.Shared/Docs/html/ur/index.html deleted file mode 100644 index 4fd8028c0..000000000 --- a/NickvisionMoney.Shared/Docs/html/ur/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ur/transaction.html b/NickvisionMoney.Shared/Docs/html/ur/transaction.html deleted file mode 100644 index fe19ed2ec..000000000 --- a/NickvisionMoney.Shared/Docs/html/ur/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Transaction - - - -
-

Transaction

-
-
-

This page explains all properties of transactions in Denaro.

-
-
Id
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
Description
-

No limit on length. It can't contain semicolon.

-
Amount
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
Type
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
Date
-

Any date can be selected, you can also create transactions for future dates.

-
Repeat Interval
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
Repeat End Date
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
Group
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
Color
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
Tags
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
Receipt
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
Notes
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/ur/transfer.html b/NickvisionMoney.Shared/Docs/html/ur/transfer.html deleted file mode 100644 index 5abd3ada7..000000000 --- a/NickvisionMoney.Shared/Docs/html/ur/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/zh_CN/account.html b/NickvisionMoney.Shared/Docs/html/zh_CN/account.html deleted file mode 100644 index 5b808b64e..000000000 --- a/NickvisionMoney.Shared/Docs/html/zh_CN/account.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -账户 - - - -
-

账户

-
-
-

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

-
- - -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
-
-
名称
-

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
账户类型
-

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
默认的交易类型
-

When you create a new transaction its type by default will be the same as in this setting.

-
交易提醒阈值
-

The threshold used when showing reminders about upcoming transactions.

-
System Currency
-
-

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

-
    -
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • -
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • -
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • -
-
- - - - - - - - - - - - - -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
-
使用自定义货币
-

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
Custom Currency Symbol
-

Up to 3 characters or 1 emoji. It can't be a number.

-
Custom Currency Code
-
-

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
-
Custom Currency Amount Style
-
-

A choice of displaying an amount in one of the following ways:

-
    -
  • $n

  • -
  • n$

  • -
  • $ n

  • -
  • n $

  • -
-
-
Custom Currency Decimal and Group Separators
-

Up to 2 characters or 1 emoji.

-
Custom Currency Decimal Digits
-

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
密码
-

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
Sort by Id, Date or Amount
-

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Sorting Order
-

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
Groups Visibility
-

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
Tags Visibility
-

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/zh_CN/configuration.html b/NickvisionMoney.Shared/Docs/html/zh_CN/configuration.html deleted file mode 100644 index ada4b6837..000000000 --- a/NickvisionMoney.Shared/Docs/html/zh_CN/configuration.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Configuration - - - -
-

Configuration

-
-
-

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

-
-
主题
-

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
默认交易颜色
-

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
默认转账颜色
-

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
群组默认颜色
-

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
支票账户颜色
-

A color used to mark accounts with the Checking type in a recent accounts list.

-
储蓄账户颜色
-

A color used to mark accounts with the Savings type in a recent accounts list.

-
商务账户颜色
-

A color used to mark accounts with the Business type in a recent accounts list.

-
使用原生数字
-

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
插入十进制分隔符
-

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
CVS备份文件夹
-

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/zh_CN/import-export.html b/NickvisionMoney.Shared/Docs/html/zh_CN/import-export.html deleted file mode 100644 index 84c6c4c18..000000000 --- a/NickvisionMoney.Shared/Docs/html/zh_CN/import-export.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Import/Export - - - -
-

Import/Export

-
-
-
-

Import Formats

-
    -
  • -

    Open Financial Exchange (.ofx)

    -

    Dates should be in YYYYMMDD format.

    -
  • -
  • -

    Quicken Interchange Format (.qif)

    -

    Dates should be in English (US) format (MM/DD/YYYY).

    -
  • -
  • -

    Denaro CSV (.csv)

    -

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    -

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    -
      -
    • -

      ID

      -

      Transaction Id, should be unique for a given account. Ids start with 1.

      -
    • -
    • -

      Date

      -

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      -
    • -
    • -

      Description

      -

      Transaction description, it can contain any characters except semicolon.

      -
    • -
    • -

      Type

      -

      Transaction type: 0 for income, 1 for expense.

      -
    • -
    • -

      RepeatInterval

      -

      A number representing transaction repeat interval:

      -

      0 - Never

      -

      1 - Daily

      -

      2 - Weekly

      -

      7 - Biweekly

      -

      3 - Monthly

      -

      4 - Quarterly

      -

      5 - Yearly

      -

      6 - Biyearly

      -

      See Repeat Interval in transaction page for details about repeat transactions.

      -
    • -
    • -

      RepeatFrom

      -

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      -
    • -
    • -

      RepeatEndDate

      -

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      -
    • -
    • -

      Amount

      -

      Transaction amount in English (US) format (123,456.78).

      -
    • -
    • -

      RGBA

      -

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    • -

      UseGroupColor

      -

      Whether a transaction should use group color: 0 — false, 1 — true.

      -
    • -
    • -

      Group

      -

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      -
    • -
    • -

      GroupName

      -

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      -
    • -
    • -

      GroupDescription

      -

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      -
    • -
    • -

      GroupRGBA

      -

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      -
    • -
    -

    Receipt and notes are not present in CSV.

    -
  • -
-
-
-

Export Formats

-
-

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

-
    -
  • -

    Portable Document Format (.pdf)

    -

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    -
  • -
  • Denaro CSV (.csv)

  • -
-
-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/zh_CN/index.html b/NickvisionMoney.Shared/Docs/html/zh_CN/index.html deleted file mode 100644 index aa9e0959a..000000000 --- a/NickvisionMoney.Shared/Docs/html/zh_CN/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -Denaro Help - - - -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/zh_CN/transaction.html b/NickvisionMoney.Shared/Docs/html/zh_CN/transaction.html deleted file mode 100644 index 2b9aaac43..000000000 --- a/NickvisionMoney.Shared/Docs/html/zh_CN/transaction.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -交易 - - - -
-

交易

-
-
-

This page explains all properties of transactions in Denaro.

-
-
ID
-

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
描述
-

No limit on length. It can't contain semicolon.

-
金额
-

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
类型
-

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
日期
-

Any date can be selected, you can also create transactions for future dates.

-
重复间隔
-

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
重复结束日期
-

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
群组
-

Each transaction can belong to only one group or none («Ungrouped» group).

-
顏色
-

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
标签
-

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
收据
-

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
注释
-

A freeform text note to attach to transaction.

-
-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/html/zh_CN/transfer.html b/NickvisionMoney.Shared/Docs/html/zh_CN/transfer.html deleted file mode 100644 index 7c73712e9..000000000 --- a/NickvisionMoney.Shared/Docs/html/zh_CN/transfer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Transfer - - - -
-

Transfer

-
-
-

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

-
    -
  • «Transfer to Destination Account Name» on source account.

  • -
  • «Transfer from Source Account Name» on destination account.

  • -
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
- -
-
-
- diff --git a/NickvisionMoney.Shared/Docs/po/LINGUAS b/NickvisionMoney.Shared/Docs/po/LINGUAS deleted file mode 100644 index caa772592..000000000 --- a/NickvisionMoney.Shared/Docs/po/LINGUAS +++ /dev/null @@ -1,27 +0,0 @@ -ar -cs -da -de -es -et -fi -fr -gl -hi -hr -id -it -ja -nl -oc -pl -pt -pt_BR -ro -ru -sv -ta -tr -ur -zh_CN -bg diff --git a/NickvisionMoney.Shared/Docs/po/ar.po b/NickvisionMoney.Shared/Docs/po/ar.po deleted file mode 100644 index c0269c48c..000000000 --- a/NickvisionMoney.Shared/Docs/po/ar.po +++ /dev/null @@ -1,947 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-12-06 07:04+0000\n" -"Last-Translator: ButterflyOfFire \n" -"Language-Team: Arabic \n" -"Language: ar\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\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 ? 4 : 5;\n" -"X-Generator: Weblate 5.3-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "اللون المبدئيُّ للمعاملات" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "اللون المبدئيُّ للتحويلات" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "اللون المبدئيُّ للمجموعات" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "لون حساب الأعمال" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "استخدم أرقام اللغة" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "المعاملة" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "المعرِّف" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "المَبلغ" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "النوع" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "مدَّة التكرار" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "تاريخ انتهاء التكرار" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "الوسوم" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/bg.po b/NickvisionMoney.Shared/Docs/po/bg.po deleted file mode 100644 index 6d26bd46c..000000000 --- a/NickvisionMoney.Shared/Docs/po/bg.po +++ /dev/null @@ -1,761 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2024-04-11 20:57+0000\n" -"Last-Translator: twlvnn \n" -"Language-Team: Bulgarian \n" -"Language: bg\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 -#: yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 -#: yelp/C/index.page:10 -#: yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 -#: yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 -#: yelp/C/index.page:14 -#: yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Сметка" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Име" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Вид на сметката" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Стандартен вид на операциите" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "When you create a new transaction its type by default will be the same as in this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Праг на напомнянията за операции" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Използване на собствена валута" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "The size of decimal part of amount values. With \"Unlimited\" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Парола" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Тема" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Стандартен цвят на операциите" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Стандартен цвят на преводите" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "A color that will be used for transactions created using transfer. Changing this will not affect existing transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Стандартен цвят на групите" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Цвят на разплащателната сметка" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "A color used to mark accounts with the Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Цвят на спестовната сметка" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "A color used to mark accounts with the Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Цвят на бизнес сметка" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "A color used to mark accounts with the Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Използване на собствени цифри" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Вмъкване на десетичен знак" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Папка за CSV резерв" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "This documentation will help you understand how to configure and manage data in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Операция" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "Идентификатор" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Описание" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Сума" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Вид" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Дата" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Интервал на повторение" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Крайна дата на повторение" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "End date for a transaction with repeat. It can't be earlier than or on the same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Група" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Цвят" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Етикети" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Разписка" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Бележки" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/cs.po b/NickvisionMoney.Shared/Docs/po/cs.po deleted file mode 100644 index ea13e0047..000000000 --- a/NickvisionMoney.Shared/Docs/po/cs.po +++ /dev/null @@ -1,1141 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-11-16 18:17+0000\n" -"Last-Translator: Fjuro \n" -"Language-Team: Czech \n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 5.2\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Jonáš Loskot , 2023" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Účet 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Účet" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Na této stránce jsou vysvětleny všechny vlastnosti účtů v aplikaci " -"Denaro. Většina z nich je uvedena v dialogovém okně " -"Nastavení účtu. Toto okno se také automaticky otevře po vytvoření " -"nového účtu." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Každý účet je uložen v jednom souboru *.nmoney. Soubory " -"vytvořené ve starší stabilní verzi aplikace Denaro lze " -"bezpečně otevřít v novější stabilní verzi aplikace. Přestože " -"aplikace může běžet na různých platformách (Windows a Linux), soubory " -"*.nmoney jsou mezi platformami 100% kompatibilní, pokud " -"pocházejí ze stejné verze aplikace (např. V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Nestabilní (beta a RC) verze aplikace mohou obsahovat chyby nebo nedokončené " -"úpravy, které mohou způsobit ztrátu dat. NEPOUŽÍVEJTE soubory účtů, které " -"obsahují skutečná data, v nestabilních verzích aplikace!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Název" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"Název účtu se zobrazuje v seznamu posledních účtů a na kartách. Název nemá " -"omezenou délku a může obsahovat libovolné znaky včetně emotikonů." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Typ účtu" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"K dispozici jsou 3 typy účtů: 🟣Běžný, 🔵Spořicí a 🟢" -"Firemní. Typ účtu je pouze užitečné označení, které se zobrazuje v " -"seznamu posledních účtů a nemá vliv na to, jak aplikace funguje nebo co " -"můžete s účtem dělat. Každý typ účtu má svou vlastní barvu, tyto barvy lze " -"nakonfigurovat v globálním nastavení ." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Výchozí typ transakce" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Při vytváření nové transakce bude její typ ve výchozím nastavení stejný jako " -"v tomto nastavení." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Hranice pro připomenutí transakcí" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" -"Hranice použitá při zobrazování připomínek o nadcházejících transakcích." - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Systémová měna" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Při každém spuštění získá aplikace údaje o měně a formátování čísel z vašich " -"systémových místních nastavení. Tyto údaje se použijí k zobrazení symbolu " -"měny (pokud není použita vlastní měna, viz níže) a k určení, v jakém formátu " -"budou čísla přijímána jako hodnoty částek transakcí. Několik příkladů:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"Pokud je vaše místní prostředí Angličtina (Spojené státy), symbol " -"měny bude nastaven na $ a 1,000.00 bude akceptováno jako " -"platné číslo." - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"Pokud je vaše místní prostředí Čeština, symbol měny bude nastaven " -"na a 1 000,00 bude akceptováno jako platné číslo." - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"Pokud je vaše místní prostředí Ruština, symbol měny bude nastaven " -"na a 1000,00 bude akceptováno jako platné číslo." - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"V systému Linux je možné nastavit různé místní jazyky a formáty systému. " -"Změna těchto nastavení se liší v závislosti na používaném desktopovém " -"prostředí. Navzdory rozdílům v umístění těchto nastavení jejich změna upraví " -"proměnné systémového prostředí, například LANG, LC_TIME a LC_MONETARY. Denaro se pokusí použít formáty " -"částek a dat podle těchto proměnných. Pokud aplikace očekávané formáty " -"nepoužívá, zkontrolujte, zda jsou proměnné správně nastaveny pomocí příkazu " -"locale v terminálu. Pokud jste našli chybu a chcete ji " -"nahlásit, poskytněte prosím výstup příkazu locale, aby mohli " -"vývojáři reprodukovat váš problém se stejným nastavením." - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Použít vlastní měnu" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"Pokud je tato možnost povolena, bude místo symbolu měny, který poskytuje " -"vaše systémové prostředí, použit vlastní symbol měny." - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Vlastní symbol měny" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "Až 3 znaky nebo 1 emotikon. Nemůže to být číslo." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Vlastní kód měny" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "Až 3 znaky nebo 1 emotikon." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Příklad pro pochopení rozdílu mezi symbolem a kódem: je symbol, " -"CZK je kód." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Vlastní styl množství měny" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "Výběr mezi zobrazením množství jedním z následujících způsobů:" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Vlastní oddělovače desetinných míst a skupin měn" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "Až 2 znaky nebo 1 emotikon." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Vlastní desetinné číslice měny" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"Velikost desetinné části hodnot částek. Při „neomezeném“ počtu číslic bude v " -"desetinné části tolik čísel, kolik je potřeba k zobrazení přesné částky, ale " -"pokud je částka celým číslem, nebude desetinná část žádná." - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Heslo" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Každý účet může být chráněn heslem. Přidáním hesla se účet zašifruje (bez " -"dešifrování pomocí hesla není možné data číst). Buďte opatrní: pokud heslo " -"ztratíte, nebudete moci data obnovit! Heslo lze také změnit nebo odstranit " -"pomocí dialogového okna nastavení otevřeného účtu. Odstraněním hesla dojde k " -"dešifrování účtu." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Řazení podle ID, data nebo částky" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"U každého účtu je uloženo, zda se mají transakce v hlavním okně řadit podle " -"ID, data nebo částky. Pokaždé, když toto nastavení změníte, bude uloženo do " -"souboru účtu a obnoví se při jeho opětovném otevření." - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Pořadí řazení" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"Každý účet uchovává informace o pořadí transakcí v hlavním okně. Pokaždé, " -"když je změníte, uloží se do souboru účtu a obnoví se při jeho opětovném " -"otevření." - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Viditelnost skupin" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Každý účet ukládá informace o tom, zda je seznam skupin v hlavním okně " -"skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu skupin, je tato " -"informace uložena a poté obnovena při opětovném otevření účtu." - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Viditelnost štítků" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Každý účet ukládá informace o tom, zda je seznam štítků v hlavním okně " -"skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu štítků, je tato " -"informace uložena a poté obnovena při opětovném otevření účtu." - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Nastavení 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Nastavení" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "Na této stránce je popsáno, co můžete změnit v nastavení aplikace." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"V závislosti na platformě je konfigurace v rozhraní aplikace označena jako " -"Předvolby nebo Nastavení." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Motiv" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"Nastavte si světlý nebo tmavý motiv, nebo nastavte, aby Denaro " -"následovalo váš systémový motiv. Změna tohoto nastavení v systému Windows " -"vyžaduje restart aplikace, aby se uplatnila." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Výchozí barva transakce" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"Barva, která bude vybrána jako výchozí při přidání nové transakce s jedinečnou barvou. Její změna neovlivní " -"existující transakce, i když používají dříve zvolenou výchozí barvu." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Výchozí barva převodu" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"Barva, která bude použita pro transakce vytvořené pomocí převodu . Změna tohoto parametru neovlivní existující " -"transakce." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Výchozí barva skupiny" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"Barva, která bude ve výchozím nastavení vybrána při přidávání nové skupiny. " -"Je to také barva pro skupinu „Neseskupené“." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Barva běžného účtu" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"Barva používaná k označení účtů s typem " -"Běžný v seznamu nedávných účtů." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Barva spořicího účtu" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"Barva používaná k označení účtů s typem " -"Spořicí v seznamu nedávných účtů." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Barva firemního účtu" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"Barva používaná k označení účtů s typem " -"Firemní v seznamu nedávných účtů." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Použít nativní číslice" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"Nastavení, zda se mají místo latinských číslic používat číslice, které jsou " -"pro vaši oblast přirozené. Pokud je toto nastavení povoleno, bude například " -"٠١٢ použito místo 012 pro lokality, které používají " -"východoarabské číslice." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Vložení desetinného oddělovače" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"Nastavení, pro které stisknuté klávesy se do pole částky vloží desetinný " -"oddělovač lokálního jazyka: tečka na numerickém bloku, libovolná tečka a " -"čárka nebo žádný. Pokud již je desetinný oddělovač v poli, nebude vložen." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Složka zálohy CSV" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"Složka, do které budou vaše data po každé změně automaticky exportována jako soubor CSV. Tato funkce nefunguje " -"pro účty chráněné heslem, protože soubory CSV nelze chránit heslem." - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Import/export 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Import/export" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formáty importu" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Data by měla být ve formátu RRRRMMDD." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" -"Data by měla být v anglickém (americkém) formátu (MM/DD/RRRR)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ Formát CSV je sice běžný a některé banky umožňují svým uživatelům " -"exportovat informace ve formátu CSV, ale tyto soubory jsou ve skutečnosti " -"tabulky, které mohou obsahovat libovolná data. Import souboru CSV " -"vytvořeného v jiném programu selže, protože jeho data nebudou kompatibilní s " -"tím, co se aplikace Denaro snaží ze souboru získat. Účelem " -"importu/exportu CSV je poskytnout způsob, jak přidávat data do účtu pomocí " -"externích programů, jako jsou textové editory a kancelářské balíky. Import " -"přidá pouze nové transakce, aniž by přepsal ty stávající. Pokud chcete " -"soubor CSV vytvořit ručně, toto je hlavička, která obsahuje všechny sloupce, " -"které aplikace Denaro očekává, že najde:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"ID transakce, mělo by být pro daný účet jedinečné. ID začínají číslem 1." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"Datum transakce (nebo datum zahájení v případě opakované transakce) by mělo " -"být v anglickém (americkém) formátu (MM/DD/RRRR)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "Popis transakce, může obsahovat libovolné znaky kromě středníku." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "Typ transakce: 0 pro příjem, 1 pro výdaj." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "Číslo představující interval opakování transakce:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Nikdy" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Denně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Týdně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Dvakrát týdně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Měsíčně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Čtvrtletně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Ročně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Dvakrát ročně" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"Podrobnosti o opakovaných transakcích naleznete v části Interval " -"opakování na stránce transakce." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"Mělo by to být buď ID zdrojové transakce nebo 0, pokud se jedná o zdrojovou " -"transakci, nebo -1, pokud se nejedná o opakovanou transakci." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"Datum ukončení opakované transakce by mělo být v anglickém (americkém) " -"formátu (MM/DD/RRRR). Pokud se nejedná o opakovanou transakci, " -"ponechte jej prázdný." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" -"Částka transakce v anglickém (americkém) formátu (123,456.78)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Barva transakce, by měla být ve formátu rgb(R,G,B), kde R, " -"G a B jsou celá čísla v rozsahu 0 až 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "Zda má transakce používat skupinovou barvu: 0 — ne, 1 — ano." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"ID skupiny transakce. ID začíná číslem 1. U neseskupených transakcí by mělo " -"být -1 (ne 0, to je nesprávná hodnota pro ID skupiny)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"Název skupiny transakce, měl by odpovídat ID skupiny. Může obsahovat " -"libovolné znaky kromě středníku. Pro transakce bez skupiny jej ponechte " -"prázdný, v ostatních případech by neměl být prázdný." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"Popis skupiny transakce, měl by odpovídat identifikačnímu číslu skupiny. " -"Může obsahovat libovolné znaky kromě středníku a může být prázdný. Pro " -"transakce bez skupiny jej ponechte prázdný." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Barva skupiny, měla by být ve formátu rgb(R,G,B), kde R, " -"G a B jsou celá čísla v rozsahu 0 až 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "Faktura a poznámky se v souboru CSV nenachází." - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formáty exportu" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"Můžete si vybrat, zda chcete exportovat všechny informace, nebo pouze " -"aktuální zobrazení. Pokud vyberete aktuální zobrazení, budou aktuálně " -"zobrazené transakce exportovány ve stejném pořadí, v jakém jsou zobrazeny." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"Soubor bude obsahovat informace o účtu, seznam transakcí a obrázky faktur. " -"Transakce jsou barevné jako v aplikaci, ale barvy jsou upraveny tak, že jsou " -"poloprůhledné, aby byl černý text vždy dobře viditelný. Pro exportovaný " -"soubor můžete nastavit heslo." - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Nápověda aplikace Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Nápověda aplikace Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Nápověda aplikace Denaro" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"Tato dokumentace vám pomůže pochopit, jak konfigurovat a spravovat data v " -"aplikaci Denaro, abyste z ní mohli vytěžit maximum." - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"Potřebujete-li podporu, použijte problémy nebo diskuze na GitHubu " -"nebo se připojte k našemu kanálu " -"Matrix." - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transakce 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transakce" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" -"Na této stránce jsou vysvětleny všechny vlastnosti transakcí v aplikaci " -"Denaro." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"Každá transakce má ID, které je pro daný účet jedinečné. ID začíná číslem 1 " -"a zvyšuje se s každou přidanou transakcí. ID nelze měnit, identifikátory " -"odstraněných transakcí se znovu nepoužívají." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Popis" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "Délka není omezena. Nesmí obsahovat středník." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Množství" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"Číslo ve formátu platném pro vaše místní prostředí, podrobnosti viz " -"Systémová měna na stránce Účet." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Typ" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"Příjem nebo Výdaj. Ve výchozím nastavení se při otevření " -"dialogu pro přidání nové transakce vybere ta, která byla zvolena v nastavení účtu." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Datum" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"Lze vybrat libovolné datum, můžete také vytvářet transakce pro budoucí data." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Interval opakování" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"Tuto možnost použijte k vytvoření opakující se transakce. Po přidání " -"transakce s intervalem opakování se tato transakce stane zdrojovou " -"transakcí. Aplikace Denaro bude automaticky generovat " -"opakované transakce pro data do dnešního dne nebo zadaného data " -"ukončení, pokud je nastaveno v minulosti. Opakované transakce nelze " -"upravovat ani mazat, upravovat lze pouze zdrojové transakce. Při " -"úpravě zdrojové transakce se aplikace Denaro zeptá, zda " -"chcete upravit nebo zrušit přiřazení opakovaných transakcí. Pokud " -"se rozhodnete pro zrušení přiřazení, opakované transakce se stanou " -"normálními transakcemi a lze je upravovat nebo mazat samostatně." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Datum ukončení opakování" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"Datum ukončení transakce s opakováním. Nemůže být dřívější nebo stejné jako " -"datum zahájení." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Skupina" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"Každá transakce může patřit pouze do jedné skupiny nebo do žádné (skupina " -"„Neseskupené“)." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Barva" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"Barva pro transakce. Lze nastavit použití barvy skupiny nebo jedinečné " -"barvy. Při výběru jedinečné barvy bude ve výchozím nastavení nastavena na " -"barvu vybranou v nastavení, lze ji ale " -"změnit na libovolnou barvu." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Štítky" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"Seznam štítků pro transakci. Transakce může mít neomezený počet štítků (nebo " -"může být bez nich). Štítky mohou obsahovat libovolné znaky kromě čárky " -"(,) a mohou mít libovolnou délku, očekává se však, že se bude " -"jednat o krátká klíčová slova. Štítky jsou určeny k dodatečnému filtrování, " -"pokud nestačí použití skupin. Štítky se ukládají pouze v samotných " -"transakcích, v důsledku čehož nepoužité štítky při uzavření účtu automaticky " -"zmizí." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Faktura" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"Obrázek faktury za transakci. Můžete nahrát obrázek JPEG nebo PNG nebo " -"dokument PDF, ale bez ohledu na formát bude převeden a uložen jako obrázek " -"JPEG. V případě PDF bude uložena pouze první stránka. Soubor můžete kdykoli " -"odstranit nebo nahrát jiný." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Poznámky" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "Volně formulovaná textová poznámka, která se připojí k transakci." - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Převod 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Převod" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"Převod je způsob, jak lze přenést peníze z jednoho účtu na druhý. Po " -"provedení převodu se vytvoří 2 transakce s následujícími popisy:" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "„Převod na Název cílového účtu“ na zdrojovém účtu." - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "„Převod z Název zdrojového účtu“ na cílovém účtu." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"Transakce vytvořené pomocí převodu jsou jednoduché transakce, které lze " -"libovolně upravovat nebo mazat. Tyto transakce nejsou propojené: úprava " -"transakce na zdrojovém účtu neovlivní transakci na cílovém účtu a naopak." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"Převod neumožňuje vytvářet opakující se transakce ani nastavovat jiné " -"vlastnosti než částku. Pro vytvořené transakce se použije barva vybraná v " -"nastavení ." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"Pokud vytváříte převod mezi účty v různých měnách, budete vyzváni k zadání " -"převodního kurzu." diff --git a/NickvisionMoney.Shared/Docs/po/da.po b/NickvisionMoney.Shared/Docs/po/da.po deleted file mode 100644 index faf384431..000000000 --- a/NickvisionMoney.Shared/Docs/po/da.po +++ /dev/null @@ -1,943 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: da\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/de.po b/NickvisionMoney.Shared/Docs/po/de.po deleted file mode 100644 index 8cfd02d4b..000000000 --- a/NickvisionMoney.Shared/Docs/po/de.po +++ /dev/null @@ -1,986 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-09-17 18:01+0000\n" -"Last-Translator: Ettore Atalan \n" -"Language-Team: German \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0.2\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Jummit , 2023" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Konto 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Konto" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Auf dieser Seite werden alle Eigenschaften von Konten in Denaro " -"erläutert. Die meisten von ihnen werden im Dialog Kontoeinstellungen angezeigt. Dieser Dialog wird auch automatisch geöffnet, nachdem du ein " -"neues Konto erstellt hast." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Jedes Konto wird in einer einzelnen *.nmoney Datei gespeichert. " -"Dateien, die in einer älteren stabilen Version von Denaro erstellt worden sind, können unbedenklich in einer aktuelleren " -"stabilen Version der Anwendung geöffnet werden. Obwohl die " -"Anwendung auf verschiedenen Betriebssystemen laufen kann (Windows und " -"Linux), sind die *.nmoney Dateien nur dann 100% kompatibel " -"zwischen den Betriebssystemen, wenn sie von derselben Anwendungsversion " -"stammen (z. B. V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Instabile (Beta und RC) Anwendungsversionen können Fehler oder nicht " -"fertiggestellte Anpassungen enthalten, die zu Datenverlust führen können. " -"Benutze KEINE Kontodateien, die echte Daten enthalten, in einer instabilen " -"Version der Anwendung!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Name" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"Der Kontoname wird in der Liste der zuletzt verwendeten Konten und in den " -"Registerkarten angezeigt. Ein Name hat keine Längenbeschränkung und kann " -"beliebige Zeichen enthalten, einschließlich Emojis." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Konto Typ" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Es sind 3 Konto - Typen verfügbar: 🟣Girokonto, 🔵Sparkonto " -"und 🟢Geschäftskonto. Der Konto - Typ ist nur ein nützliches " -"Kennzeichnung, welche keine Auswirkungen auf die Funktion der Anwendung " -"haben. Der Konto - Typ wird in der Liste der kürzlich bearbeiteten Konten " -"angezeigt. Jeder Konto - Typ hat eine eigene Farbe, welche in den Globalen Einstellungen bearbeitet werden können." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Standard-Transaktionsart" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Wenn Sie eine neue Transaktion erstellen, ist ihr Typ standardmäßig derselbe " -"wie in dieser Einstellung." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Schwellenwert für Überweisungserinnerungen" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Systemwährung" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Benutzerdefinierte Währung verwenden" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Benutzerdefiniertes Währungssymbol" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "Bis zu 3 Zeichen oder 1 Emoji. Es darf keine Zahl sein." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Benutzerdefinierter Währungscode" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "Bis zu 3 Zeichen oder 1 Emoji." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Ein Beispiel zum Verständnis des Unterschieds zwischen einem Symbol und " -"einem Code: $ ist ein Symbol, USD ist ein Code." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Benutzerdefinierter Währungsbetragsstil" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Benutzerdefinierte Dezimal- und Gruppentrennzeichen für Währungen" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "Bis zu 2 Zeichen oder 1 Emoji." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Benutzerdefinierte Währungsdezimalziffern" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Passwort" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Jedes Konto kann durch ein Passwort geschützt werden. Das Hinzufügen eines " -"Passworts führt zur Verschlüsselung des Kontos (wodurch es unmöglich wird, " -"die Daten ohne Entschlüsselung mit dem Passwort zu lesen). Vorsicht: Wenn " -"das Passwort verloren geht, können die Daten nicht wiederhergestellt werden! " -"Ein Passwort kann auch über den Kontoeinstellungen-Dialog eines offenen " -"Kontos geändert oder entfernt werden. Das Entfernen eines Passworts " -"entschlüsselt das Konto." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Nach Kennung, Datum oder Betrag sortieren" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Sortierreihenfolge" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Gruppen-Sichtbarkeit" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Schlagwörter-Sichtbarkeit" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Konfiguration 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Konfiguration" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" -"Diese Seite beschreibt, was Sie in der Anwendungskonfiguration ändern können." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Thema" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Standardfarbe für Überweisungen" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Standardfarbe der Gruppe" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Geschäftskontofarbe" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Native Ziffern verwenden" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Dezimaltrennzeichen einfügen" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "CSV-Sicherungsordner" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Importieren/Exportieren 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Importieren/Exportieren" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Importformate" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Die Daten sollten im Format JJJJMMTT sein." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "Die Daten sollten im englischen (US) Format (MM/TT/JJJJ) sein." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Überweisung" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Wiederholungs-Intervall" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Wiederholungs-Ende" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Tags" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Überweisung" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" - -#~ msgid "2023" -#~ msgstr "2023" diff --git a/NickvisionMoney.Shared/Docs/po/denaro.pot b/NickvisionMoney.Shared/Docs/po/denaro.pot deleted file mode 100644 index f37d2cb38..000000000 --- a/NickvisionMoney.Shared/Docs/po/denaro.pot +++ /dev/null @@ -1,758 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 -#: yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 -#: yelp/C/index.page:10 -#: yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 -#: yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 -#: yelp/C/index.page:14 -#: yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "When you create a new transaction its type by default will be the same as in this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "The size of decimal part of amount values. With \"Unlimited\" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "A color that will be used for transactions created using transfer. Changing this will not affect existing transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "A color used to mark accounts with the Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "A color used to mark accounts with the Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "A color used to mark accounts with the Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "This documentation will help you understand how to configure and manage data in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "End date for a transaction with repeat. It can't be earlier than or on the same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate." -msgstr "" - diff --git a/NickvisionMoney.Shared/Docs/po/es.po b/NickvisionMoney.Shared/Docs/po/es.po deleted file mode 100644 index 916228f73..000000000 --- a/NickvisionMoney.Shared/Docs/po/es.po +++ /dev/null @@ -1,1184 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-09-08 17:22+0000\n" -"Last-Translator: Óscar Fernández Díaz \n" -"Language-Team: Spanish \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Óscar Fernández Díaz , 2023" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Cuenta 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Cuenta" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Esta página explica todas las propiedades de las cuentas en Denaro. La mayoría de ellas se muestran en Diálogo de configuración de la " -"cuenta. Este cuadro de diálogo también se abre automáticamente después " -"de crear una cuenta nueva." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Cada cuenta se almacena en un único archivo *.nmoney. Los " -"archivos creados en una versión estable anterior de Denaro pueden abrirse con seguridad en una versión estable más " -"reciente de la aplicación. Aunque la aplicación puede funcionar en " -"diferentes plataformas (Windows y Linux), los archivos *.nmoney " -"son 100% compatibles entre plataformas siempre que sean de la misma versión " -"de la aplicación (p.ej. V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Las versiones inestables (Beta y RC) de la aplicación pueden contener " -"errores o modificaciones inacabadas que pueden causar la pérdida de datos. " -"¡No use archivos de cuenta que contengan datos reales en versiones " -"inestables de la aplicación!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nombre" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"El nombre de la cuenta se muestra en la lista de cuentas recientes y en las " -"pestañas. Un nombre no tiene límite de longitud y puede contener cualquier " -"carácter, incluidos emojis." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Tipo de cuenta" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Hay 3 tipos de cuenta disponibles: 🟣Corriente, 🔵Ahorros y 🟢" -"Empresas. El tipo de cuenta es sólo una etiqueta útil que se " -"muestra en la lista de cuentas recientes y no afecta al funcionamiento de la " -"aplicación ni a lo que se puede hacer con una cuenta. Cada tipo de cuenta " -"tiene su propio color, estos colores se pueden configurar en la configuración global." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Tipo de transacción predeterminado" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Cuando crea una transacción nueva, su tipo predeterminado será el mismo que " -"en esta configuración." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Umbral de recordatorios de las transacciones" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" -"El umbral usado cuando se muestran los recordatorios de las próximas " -"transacciones." - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Moneda del sistema" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Cada vez que se inicia la aplicación, obtiene datos sobre el formato de la " -"moneda y los números de la configuración regional de su sistema, y estos " -"datos se usan para mostrar el símbolo de la moneda (a menos que se use una " -"moneda personalizada, consulte a continuación) y para determinar en qué " -"formato se aceptarán los valores para los importes de las transacciones. " -"Algunos ejemplos:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"Si su idioma es inglés (EE. UU.), el símbolo de moneda se " -"establecerá en $ y se aceptará 1,000.00 como un número " -"válido." - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"Si su configuración regional es italiana, el símbolo de moneda se " -"establecerá en y se aceptará 1.000,00 como un número " -"válido." - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"Si su configuración regional es ruso, el símbolo de moneda se " -"establecerá en y se aceptará 1000,00 como un número " -"válido." - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"En Linux, es posible establecer diferentes configuraciones regionales para " -"el idioma y los formatos del sistema. La modificación de estos ajustes varía " -"en función del entorno de escritorio que use. A pesar de las diferencias en " -"la ubicación de estos ajustes en el escritorio, cambiar estos ajustes " -"modifica las variables de entorno del sistema, como LANG, " -"LC_TIME y LC_MONETARY. Denaro intentará " -"usar los formatos de cantidad y fecha de acuerdo a estas variables. Si la " -"aplicación falla al usar los formatos esperados, por favor asegúrese de que " -"las variables están configuradas correctamente a través del comando " -"locale en un terminal. Si ha encontrado un error y desea " -"informar de ello, por favor proporcione la salida del comando locale para permitir a los desarrolladores reproducir su problema con la " -"misma configuración." - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Usar moneda personalizada" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"Si esta opción está activada, se usará Símbolo de moneda personalizado en lugar del símbolo de moneda proporcionado por la configuración " -"regional de su sistema." - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Símbolo de moneda personalizado" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "Hasta 3 caracteres o 1 emoji. No puede ser un número." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Código de moneda personalizado" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "Hasta 3 caracteres o 1 emoji." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Un ejemplo para entender la diferencia entre un símbolo y un código: $ es un símbolo, USD es un código." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Estilo del total de monedas personalizado" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "Elija entre mostrar las cantidades de una de las siguientes maneras:" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Separadores decimales y de grupo personalizados" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "Hasta 2 caracteres o 1 emoji." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Dígitos decimales de moneda personalizados" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"El tamaño de la parte decimal de los valores de importe. Con dígitos " -"\"ilimitados\" habrá tantos números en la parte decimal como sean necesarios " -"para mostrar el importe exacto, pero no habrá parte decimal si el importe es " -"un número entero." - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Contraseña" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Cada cuenta puede protegerse con una contraseña. Si añade una contraseña, la " -"cuenta quedará encriptada (por lo que será imposible leer los datos sin " -"desencriptarlos con la contraseña). Cuidado: si pierde la contraseña, no " -"podrá recuperar los datos. La contraseña también puede cambiarse o " -"eliminarse desde el cuadro de diálogo de configuración de una cuenta " -"abierta. Al eliminar la contraseña, la cuenta quedará descifrada." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Ordenar por id, fecha o cantidad" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"Cada cuenta almacena si ordena las transacciones en la ventana principal por " -"su id, fecha o cantidad. Cada vez que cambie esto, se guardará en el archivo " -"de la cuenta y se restaurará cuando vuelva a abrir la cuenta." - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Orden de clasificación" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"Cada cuenta almacena información sobre el orden de las transacciones en la " -"ventana principal. Cada vez que cambie esto, se guardará en el archivo de la " -"cuenta y se restaurará cuando vuelva a abrir la cuenta." - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Visibilidad de grupos" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Cada cuenta almacena información sobre si la lista de grupos en la ventana " -"principal está oculta o no. Cada vez que cambia la visibilidad de la lista " -"de grupos, se guarda y luego se restaura cuando vuelve a abrir la cuenta." - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Visibilidad de las etiquetas" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Cada cuenta almacena información sobre si la lista de las etiquetas de la " -"ventana principal está oculta o no. Cada vez que cambie la visibilidad de la " -"lista de las etiquetas, se guarda y después se restaura cuando vuelva a " -"abrir la cuenta." - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Configuración 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Configuración" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" -"Esta página describe lo que puede cambiar en la configuración de la " -"aplicación." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"Dependiendo de su plataforma, en la interfaz de la aplicación, la " -"configuración se denomina Preferencias o Configuración." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Tema" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"Establezca un tema claro u oscuro, o haga que Denaro siga el tema " -"de su sistema. Cambiar esto en Windows requiere que se reinicie la " -"aplicación para aplicar." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Color de transacción predeterminado" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"Un color que se seleccionará por defecto al agregar una transacción nueva con color único. Cambiar esto no " -"afectará las transacciones existentes, incluso si usa el color " -"predeterminado seleccionado previamente." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Color predeterminado de la transferencia" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"Un color que se usará para transacciones creadas usando transferencia. Cambiar esto no afectará las transacciones " -"existentes." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Color predeterminado del grupo" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"Color que se seleccionará por defecto al añadir un grupo nuevo. También es " -"un color para el grupo \"No agrupado\"." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Color de la cuenta corriente" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"Color usado para marcar cuentas con el tipo " -"Corriente en una lista de cuentas recientes." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Color de la cuenta de ahorros" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"Color usado para marcar cuentas con el tipo " -"Ahorros en una lista de cuentas recientes." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Color de la cuenta de la empresa" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"Color usado para marcar cuentas con el tipo " -"Empresas en una lista de cuentas recientes." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Usar dígitos nativos" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"Si usar numerales que son nativos para su localización en lugar de dígitos " -"latinos. Por ejemplo, si esta opción está activada ٠١٢ se usará en " -"lugar de 012 para las localizaciones que usan numerales arábigos " -"orientales." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Insertar separador decimal" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"Establece para qué teclas pulsadas se insertará el separador decimal de la " -"configuración regional en un campo de importe: punto del teclado numérico, " -"cualquier punto y coma, o ninguno. Si el separador decimal ya aparece en un " -"campo, no se insertará." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Carpeta de copia de seguridad CSV" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"Una carpeta donde sus datos se exportarán a " -"CSV después de cada cambio. Esta función no funciona con cuentas " -"protegidas con contraseña, ya que los archivos CSV no pueden protegerse con " -"contraseña." - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Importar/Exportar 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Importar/Exportar" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formatos de importación" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Las fechas deben estar en formato AAAMMDD." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" -"Las fechas deben estar en formato inglés (EE. UU.) (MM/DD/AAAA)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ Si bien CSV es un formato común y algunos bancos permiten a sus usuarios " -"exportar información como CSV, estos archivos son, de hecho, tablas que " -"pueden contener datos arbitrarios. La importación de un archivo CSV creado " -"en otro programa fallará porque sus datos no serán compatibles con lo que " -"Denaro intenta obtener de un archivo. El propósito de importar/" -"exportar CSV es proporcionar una forma de agregar datos a una cuenta " -"mediante programas externos, como editores de texto y paquetes de oficina. " -"La importación solo agregará nuevas transacciones sin anular las existentes. " -"Si desea crear un archivo CSV manualmente, este es el encabezado que incluye " -"todas las columnas que Denaro espera encontrar:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"Id de transacción, debe ser único para una cuenta determinada. Los ids " -"empiezan por 1." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"La fecha de la transacción (o fecha de inicio en caso de transacción " -"repetida), debe estar en formato inglés (EE. UU.) (MM/DD/AAAA)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" -"Descripción de la transacción, puede contener cualquier carácter excepto " -"punto y coma." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "Tipo de transacción: 0 para ingresos, 1 para gastos." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "Un número que representa el intervalo de repetición de la transacción:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Nunca" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Diario" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Semanal" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Quincenal" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Mensual" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Trimestral" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Anual" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Bianual" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"Véase Intervalo de repetición en la página de transacción para obtener más información sobre las " -"transacciones repetidas." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"Debe ser un id de transacción de origen o 0 si es una transacción de origen " -"o -1 si no es una transacción repetida." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"Fecha de finalización de la transacción repetida, debe estar en formato " -"inglés (EE. UU.) (MM/DD/AAAA). Déjelo vacío si no es una " -"transacción repetida." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" -"Importe de la transacción en formato inglés (US) (123,456.78)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Color de la transacción, debe estar en formato rgb(R,G,B) donde " -"R, G y B son enteros en un rango entre 0 y 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" -"Si una transacción debe usar el color de grupo: 0 - falso, 1 - verdadero." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"Id de grupo de la transacción. Los ids empiezan por 1. Para una transacción " -"no agrupada debe ser -1 (no 0, este es un valor incorrecto para el id de " -"grupo)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"Nombre del grupo de la transacción, debe coincidir con el id del grupo. " -"Puede contener cualquier carácter excepto punto y coma. Déjelo vacío para " -"transacciones no agrupadas, en cualquier otro caso no debería estar vacío." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"Descripción del grupo de la transacción, debe coincidir con el id del grupo. " -"Puede contener cualquier carácter excepto punto y coma y puede estar vacía. " -"Déjelo vacío para transacciones no agrupadas." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Color del grupo, debe estar en formato rgb(R,G,B) donde R, " -"G y B son números enteros comprendidos entre 0 y 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "Los recibos y notas no están presentes en CSV." - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formatos de exportación" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"Puede seleccionar si desea exportar toda la información o sólo la de la " -"vista actual. Si selecciona la vista actual, las transacciones mostradas " -"actualmente se exportarán en el mismo orden en que se muestran." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"Un archivo contendrá la información de una cuenta, una lista de " -"transacciones e imágenes de recibos. Las transacciones están coloreadas como " -"en la aplicación, pero los colores se modifican haciéndolos " -"semitransparentes para que el texto negro siempre sea claramente visible. " -"Puede establecer una contraseña para un archivo exportado." - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Ayuda de Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Ayuda de Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Ayuda de Denaro" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"Esta documentación lo ayudará a comprender cómo configurar y administrar " -"datos en Denaro para aprovechar al máximo la aplicación." - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"Para obtener soporte, use incidencias o discusiones en Github, o únase a nuestro canal Matrix." - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transacción 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transacción" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" -"Esta página explica todas las propiedades de las transacciones en " -"Denaro." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "Id" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"Cada transacción tiene una identificación que es única para una cuenta " -"determinada. Los identificadores comienzan con 1 y aumentan con cada " -"transacción agregada. Los ID no se pueden cambiar, los ID de las " -"transacciones eliminadas no se reusan." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Descripción" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "Sin límite de longitud. No puede contener punto y coma." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Cantidad" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"Un número en un formato que sea válido para su región, consulte Moneda " -"del sistema en Página de la cuenta para " -"obtener detalles." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Tipo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"Ingresos o Gastos. De forma predeterminada, el elegido en " -"configuración de la cuenta se seleccionará " -"cuando abra un cuadro de diálogo para agregar una transacción nueva." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Fecha" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"Se puede seleccionar cualquier fecha, también puede crear transacciones para " -"fechas futuras." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Intervalo de repetición" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"Use esta opción para crear una transacción recurrente. Después de agregar " -"una transacción con un intervalo de repetición, esta transacción se " -"convertirá en una transacción de origen. Denaro generará " -"automáticamente transacciones repetidas para las fechas hasta hoy o " -"una fecha de finalización proporcionada si se estableció en el pasado. Las " -"transacciones repetidas no se pueden editar ni eliminar, solo se " -"puede modificar origen. Cuando modifique la transacción fuente, Denaro le preguntará si desea modificar o desasociar las " -"transacciones repetidas. Si elige desasociar, las transacciones " -"repetidas se convierten en transacciones normales y se pueden " -"editar o eliminar por separado." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Repetir fecha final" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"Fecha de finalización de una transacción con repetición. No puede ser " -"anterior o el mismo día que la fecha de inicio." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Grupo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"Cada transacción puede pertenecer a un solo grupo o a ninguno (grupo \"No " -"agrupado\")." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Color" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"Un color para la transacción. Puede configurarse para usar un color de grupo " -"o un color único. Al seleccionar un color único, se establecerá por defecto " -"el color seleccionado en la configuración, pero puede cambiarse a cualquier color." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Etiquetas" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"Una lista de etiquetas para la transacción. Una transacción puede tener un " -"número ilimitado de etiquetas (o no tener etiquetas). Las etiquetas pueden " -"contener cualquier carácter excepto una coma (,) y tener " -"cualquier longitud, pero se espera que sean palabras clave cortas. Las " -"etiquetas están destinadas a usarse para el filtrado adicional cuando el uso " -"de los grupos no es suficiente. Las etiquetas solo se guardan en las " -"transacciones mismas y, como un resultado, las etiquetas no usadas " -"desaparecen automáticamente al cerrar la cuenta." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Recibo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"Una imagen de un recibo de transacción. Puede cargar una imagen JPEG o PNG o " -"un documento PDF, pero sin importar el formato, se convertirá y se guardará " -"como una imagen JPEG. En caso de PDF, solo se guardará la primera página. " -"Puede eliminar o cargar otro archivo en cualquier momento." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Notas" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "Una nota de texto libre para adjuntar a la transacción." - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Transferencia 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Transferencia" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"La transferencia es una forma de mover dinero de una cuenta a otra. Después " -"de ejecutar una transferencia, se crearán 2 transacciones con las siguientes " -"descripciones:" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" -"«Transferencia a Nombre de la cuenta de destino» en la cuenta " -"de origen." - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" -"«Transferencia desde Nombre de la cuenta de origen» en la " -"cuenta de destino." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"Las transacciones creadas mediante la transferencia son transacciones " -"simples que se pueden editar o eliminar libremente. Estas transacciones no " -"están conectadas: la modificación de la transacción en la cuenta de origen " -"no afectará la transacción en la cuenta de destino y viceversa." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"La transferencia no le permite crear transacciones repetitivas ni establecer " -"ninguna otra propiedad que no sea la cantidad. El color seleccionado en " -"configuration se usará para las " -"transacciones creadas." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"Si crea una transferencia entre cuentas con divisas diferentes, se le pedirá " -"que indique un tipo de conversión." - -#~ msgid "2023" -#~ msgstr "2023" diff --git a/NickvisionMoney.Shared/Docs/po/et.po b/NickvisionMoney.Shared/Docs/po/et.po deleted file mode 100644 index cba38d00c..000000000 --- a/NickvisionMoney.Shared/Docs/po/et.po +++ /dev/null @@ -1,943 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: et\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/fi.po b/NickvisionMoney.Shared/Docs/po/fi.po deleted file mode 100644 index 0271283f1..000000000 --- a/NickvisionMoney.Shared/Docs/po/fi.po +++ /dev/null @@ -1,946 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-08-24 20:09+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish \n" -"Language: fi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Tunnisteet" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/fr.po b/NickvisionMoney.Shared/Docs/po/fr.po deleted file mode 100644 index 696f4e0cb..000000000 --- a/NickvisionMoney.Shared/Docs/po/fr.po +++ /dev/null @@ -1,1193 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-11-15 11:53+0000\n" -"Last-Translator: rene-coty \n" -"Language-Team: French \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.2-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Irénée Thirion" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Compte 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Compte" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Cette page explique toutes les propriétés des comptes dans Denaro. La plupart sont affichées dans la boîte de dialogue des " -"Paramètres du compte. Cette boîte de dialogue s’ouvre automatiquement " -"à la création d’un nouveau compte." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Chaque compte est enregistré dans un fichier *.nmoney. Les " -"fichiers créés dans une ancienne version stable de Denaro peuvent être ouverts sans risque dans une version stable plus " -"récente de l’application. Bien que l’application puisse être exécutée sous " -"plusieurs plateformes (Windows et Linux), les fichiers *.nmoney " -"sont 100% compatibles entre ces plateformes, tant qu’ils proviennent de la " -"même version de l’application (i.e. V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Les version instables (Beta et RC) de l’application peuvent contenir des " -"bogues ou des modifications inachevées pouvant causer des pertes de données. " -"N'UTILISEZ PAS des fichiers de comptes contenant vos vraies données dans des " -"versions instables de l’application !" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nom" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"Le nom du compte est affiché dans la liste des comptes récents et dans les " -"onglets. Un nom n’a pas de limite de taille et peut contenir n’importe quel " -"caractère, dont des émojis." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Type de compte" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Il y a trois types de comptes possibles : 🟣Chèques, 🔵Épargne et 🟢Affaires. Le type de compte est uniquement une étiquette " -"utile affichée dans la liste des comptes récents et n’affecte ni le " -"fonctionnement de l’application ni les actions possibles avec un compte. " -"Chaque type de compte a sa propre couleur, qui peut être configurée dans les " -"paramètres généraux." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Type de transaction par défaut" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Lorsque vous créerez une nouvelle transaction, son type par défaut sera le " -"même que dans ce paramètre." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Seuil de rappel des transactions" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "Le seuil utilisé pour afficher des rappels des transactions à venir." - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Devise du système" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Chaque fois que l’application est lancée, elle récupère les données sur la " -"monnaie et le format numérique de la langue locale de votre système ; ces " -"données sont utilisées pour afficher le symbole monétaire (à moins qu’une " -"devise personnalisée soit spécifiée, voir ci-dessous) et pour déterminer " -"dans quel format les nombres seront acceptés comme des valeurs pour des " -"montants de transactions. Quelques exemples :" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"Si votre langue locale est l’Anglais (US), le symbole monétaire " -"sera $ et 1,000.00 sera accepté comme une valeur numérique " -"valide." - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"Si votre langue locale est l’Italien, le symbole monétaire sera " -"€ et 1.000,00 sera accepté comme une valeur numérique valide." - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"Si votre langue locale est le Russe, le symbole monétaire sera " -"₽ et 1000,00 sera accepté comme une valeur numérique valide." - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"Sous Linux il est possible de définir plusieurs langues locales et formats " -"numériques. La manière de modifier ce paramètre varie selon l’environnement " -"de bureau utilisé. Malgré ces différences dans l’emplacement de ces " -"paramètres, les modifier affecte des variables de l’environnement du " -"système, comme LANG, LC_TIME, et " -"LC_MONETARY. Denaro essaiera d’utiliser les formats " -"numériques et de langue selon ces variables. Si l’application échoue à " -"utiliser les formats attendus, assurez-vous que les variables sont " -"correctement définies via la commande locale dans un terminal. " -"Si vous trouvez un bogue et souhaitez le signaler, veillez fournir le " -"résultat donné par la commande locale pour permettre aux " -"développeurs de reproduire votre problème avec les mêmes paramètres." - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Utiliser une devise personnalisée" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"Si cette option est activée, un Symbole monétaire personnalisé " -"sera utilisé à la place de celui fourni par la langue locale de votre " -"système." - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Symbole monétaire personnalisé" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "Jusqu’à trois caractères ou 1 émoji. Il ne peut s’agir d’un nombre." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Code de devise personnalisé" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "Jusqu’à trois caractères ou 1 émoji." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Un exemple pour comprendre la différence entre un symbole et un code : " -"$ est un symbole, USD est un code." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Style d’affichage personnalisé des montants de devises" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" -"Un choix entre plusieurs affichages possibles pour les montants de devises :" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Séparateur de décimales et de groupes personnalisé" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "Jusqu’à 2 caractères ou 1 émoji." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Chiffres des décimales personnalisés" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"La taille des décimales de la valeur d’un montant. Avec des chiffres " -"« Illimités » la taille des décimales sera celle requise pour afficher le " -"montant précis, mais il n’y aura pas de décimales si le montant est un " -"nombre entier." - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Mot de passe" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Chaque compte peut être protégé par un mot de passe. Ajouter un mot de passe " -"cryptera le compte (ce qui rendra la lecture des données impossible sans " -"décryptage avec le bon mot de passe). Soyez prudent⋅e : si le mot de passe " -"est perdu, vous ne pourrez pas récupérer les données ! Un mot de passe peut " -"également être changé ou supprimé en utilisant la boîte de dialogue des " -"paramètres du compte. Supprimer un mot de passe décryptera le compte." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Trier par identifiant, date ou montant" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"Au sein de chaque compte vous pouvez trier les transactions dans la fenêtre " -"principale par identifiant, date ou montant. Chaque fois que vous le " -"modifierez, le tri sera enregistré dans le fichier du compte et restauré à " -"la prochaine ouverture." - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Ordre de tri" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"Au sein de chaque compte vous pouvez modifier l’ordre des transactions dans " -"la fenêtre principale. Chaque fois que vous modifierez l’ordre de tri, celui-" -"ci sera enregistré dans le fichier du compte et restauré à la prochaine " -"ouverture." - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Visibilité des groupes" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Chaque compte enregistre l’état affiché ou masqué de la liste des groupes " -"dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de " -"la liste des groupes, ce paramètre sera enregistré puis restauré à la " -"prochaine ouverture." - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Visibilité des étiquettes" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Chaque compte enregistre l’état affiché ou masqué de la liste des étiquettes " -"dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de " -"la liste des étiquettes, ce paramètre sera enregistré puis restauré à la " -"prochaine ouverture." - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Configuration 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Configuration" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" -"Cette page décrit ce que vous pouvez modifier dans la configuration de " -"l’application." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"Dépendant de votre plateforme, la configuration apparaît dans l’interface de " -"l’application sous le vocable Préférences ou Paramètres." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Thème" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"Définissez un thème sombre ou clair, ou faites en sorte que Denaro suive celui du système. Le changement de ce paramètre sous Windows " -"requiert un redémarrage de l’application." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Couleur par défaut des transactions" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"Une couleur qui sera sélectionnée par défaut lors de l’ajout d’une nouvelle " -"transaction avec une couleur unique. " -"Changer ce paramètre n’affectera pas les transactions existantes, même si " -"elles utilisaient la couleur par défaut précédemment sélectionnée." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Couleur par défaut des transferts" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"Une couleur qui sera utilisée pour les transactions créées par un transfert. Changer ce paramètre n’affectera pas les " -"transactions existantes." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Couleur de groupe par défaut" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"Couleur sélectionnée par défaut lorsqu’un nouveau groupe sera ajouté. C’est " -"également la couleur du groupe « Sans groupe »." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Couleur des comptes de chèques" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"Couleur utilisée pour marquer les comptes avec " -"le type Chèques dans une liste des comptes récents." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Couleur des comptes d’épargne" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"Couleur utilisée pour marquer les comptes avec " -"le type Épargne dans une liste des comptes récents." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Couleur du compte d’affaires" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"Couleur utilisée pour marquer les comptes avec " -"le type affaires dans une liste des comptes récents." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Utiliser des chiffres natifs" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"Indique s’il faut utiliser des chiffres natifs de votre langue à la place de " -"chiffres latins. Par exemple, si ce paramètre est activé ٠١٢ sera " -"utilisé à la place de 012 pour les langues locales utilisant des " -"chiffres de l’arabe oriental." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Insérer un séparateur de décimales" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"Définissez pour quelles touches pressées le séparateur décimal de la langue " -"locale sera inséré lors de la saisie d’un montant : point du pavé numérique, " -"n’importe quel point ou virgule du clavier, ou aucune. Si le séparateur des " -"décimales est déjà présent dans le champ de saisie, il ne sera pas inséré." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Dossier de sauvegarde CSV" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"Un dossier où vos données seront automatiquement exportées au format CSV après chaque modification. Cette " -"fonctionnalité ne fonctionne pas pour les comptes protégés par mot de passe, " -"car les fichiers CSV ne peuvent être protégés par un mot de passe." - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Importer / Exporter 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Importer / Exporter" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formats d’importation" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Les dates devraient être au format AAAAMMJJ." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "Les dates devraient être au format Anglais (US) (MM/JJ/AAAA)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ Bien que le format CSV soit courant et que certaines banques permettent à " -"leurs utilisateurs d’exporter des informations au format CSV, ces fichiers " -"sont en fait des tableaux qui peuvent contenir n’importe quelles données. " -"L’importation d’un fichier CSV créé dans un autre programme échouera, car " -"ses données ne seront pas compatibles avec ce que Denaro tentera " -"d’obtenir du fichier. L’objectif de l’importation/exportation de fichiers " -"CSV est de fournir un moyen d’ajouter des données à un compte à l’aide de " -"programmes externes tels que des éditeurs de texte et des suites " -"bureautiques. L’importation n’ajoutera que les nouvelles transactions sans " -"remplacer les transactions existantes. Si vous souhaitez créer un fichier " -"CSV manuellement, voici l’en-tête qui inclut toutes les colonnes que " -"Denaro s’attend à trouver :" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"Identification de transaction, devrait être unique pour un compte donné. Les " -"identifiants commencent à 1." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"La date de la transaction (ou la date de départ dans le cas d’une " -"transaction répétée), devrait être au format américain (MM/JJ/AAAA)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" -"Description de la transaction, elle peut contenir n’importe quel caractère " -"sauf des points-virgules." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "Type de transaction : 0 pour un revenu, 1 pour une dépense." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "Un nombre représentant un intervalle de répétition de la transaction :" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Jamais" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Quotidien" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Hebdomadaire" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Bi-hebdomadaire" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Mensuel" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Trimestriel" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Annuel" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Bi-annuel" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"Voir Intervalle de répétition dans la page des transactions pour des détails sur les transactions " -"répétées." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"Devrait être soit un identifiant de transaction source, ou 0 si c’est une " -"transaction source, ou -1 si ce n’est pas une transaction répétée." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"Date de fin pour la transaction répétée ; elle devrait être au format " -"américain (MM/JJ/AAAA). Laissez-la vide si ce n’est pas une " -"transaction répétée." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "Montant de la transaction au format américain (123,456.78)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Couleur de la transaction ; elle devrait être au format rgb (R,G,B)) où R, G et B sont des nombres entiers " -"compris entre 0 et 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" -"Indique si une transaction devrait utiliser le groupe de couleur : 0 — non, " -"1 — oui." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"Identifiant du groupe de transactions. Les identifiant commencent à 1. Pour " -"les transactions sans groupe, ce devrait être -1 (et non pas 0 qui est une " -"valeur incorrecte pour un identifiant de groupe)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"Nom du groupe de transactions ; il devrait correspondre à l’identifiant du " -"groupe. Il peut contenir n’importe quel caractère, à l’exception des points-" -"virgules. Laissez-le vide pour les transactions sans groupe ; dans tous les " -"autres cas il ne devrait pas être vide." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"Description du groupe de transactions ; elle devrait correspondre à " -"l’identifiant du groupe. Elle peut contenir n’importe quel caractère à " -"l’exception des points-virgules. Laissez-la vide pour les transactions sans " -"groupe." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Couleur du groupe ; elle devrait être au format rgb(R,G,B) où " -"R, G et B sont des nombres entiers compris entre " -"0 et 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "Les reçus et les notes ne sont pas présents dans le fichier CSV." - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formats d’exportation" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"Vous pouvez choisir d’exporter toutes les informations ou seulement celles " -"de la vue actuelle. Si vous sélectionnez cette dernière option, les " -"transactions actuellement affichées seront exportées dans le même ordre que " -"celui dans lequel elles apparaissent." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"Un fichier contiendra les informations du compte, une liste des transactions " -"et les images des reçus. Les transactions seront colorées comme dans " -"l’application, mais les couleurs seront modifiées en étant rendues à moitié " -"transparentes pour que le texte en noir reste toujours visible. Vous pouvez " -"définir un mot de passe pour le fichier exporté." - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Aide de Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Aide de Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Aide de Denaro" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"Cette documentation vous aidera à comprendre comment configurer et gérer vos " -"données dans Denaro pour tirer le meilleur parti de l’application." - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"Pour obtenir de l’assistance, utilisez les signalements ou discussions sur " -"Github, ou rejoignez notre salon " -"Matrix." - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transaction 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transaction" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" -"Cette page explique toutes les propriétés des transactions dans Denaro." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "Identifiant" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"Chaque transaction a un identifiant unique pour un compte donné. Les " -"identifiants commencent avec 1 et augmentent pour chaque transaction " -"ajoutée. Les identifiants ne peuvent être modifiés, et les identifiants des " -"transactions supprimées ne sont pas réutilisés." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Description" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "Pas de limite de taille. Elle ne peut contenir des points-virgules." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Montant" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"Un nombre dans un format valide pour votre langue locale, voir Devise du " -"système dans la page du compte pour plus " -"de détails." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Type" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"Revenu ou Dépense. Par défaut la valeur choisie dans les " -"Paramètres du compte sera sélectionnée lorsque " -"vous ouvrirez une boîte de dialogue pour ajouter une nouvelle transaction." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Date" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"N’importe quelle date peut être sélectionnée, vous pouvez aussi créer des " -"transactions pour des dates futures." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Intervalle de répétition" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"Utilisez cette option pour créer une transaction récurrente. Après avoir " -"ajouté la transaction avec l’intervalle de répétition, celle-ci deviendra " -"une transaction source. Denaro générera automatiquement " -"des transactions répétées pour les dates indiquées à partir " -"d’aujourdhui ou jusqu’à la date de fin définie. Les transactions " -"répétées ne peuvent pas être modifiées ou supprimées, mais " -"seulement leur source. Lorsque vous modifierez la transaction " -"source, Denaro vous demandera si vous souhaiter modifier " -"ou dissocier les transactions répétées. Si vous choisissez la " -"dissociation, les transactions répétées deviendront des " -"transactions normales et pourront être modifiées ou supprimées séparément." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Date de fin de répétition" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"Date de fin d’une transaction récurrente. Elle ne peut pas être avant ou le " -"même jour que la date de début." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Groupe" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"Chaque transaction peut appartenir à un ou bien à aucun groupe (groupe " -"« Sans groupe »)." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Couleur" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"Une couleur pour les transactions. Elle peut être définie pour utiliser un " -"groupe de couleur ou une couleur unique. Lors de la sélection d’une couleur " -"unique, elle sera définie par défaut comme la couleur sélectionnée dans la " -"configuration, mais peut être modifiée " -"en n’importe quelle couleur." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Étiquettes" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"Une liste d’étiquettes pour les transactions. Une transaction peut avoir un " -"nombre illimité d’étiquettes (ou ne pas en avoir). Les étiquettes peuvent " -"contenir n’importe quel caractère sauf des virgules (,), et " -"peuvent avoir n’importe quelle longueur, bien qu’elles soient conçues pour " -"de courts mots-clés. Les étiquettes sont conçues pour être utilisées pour " -"obtenir un filtrage additionnel quand l’utilisation des groupes ne suffit " -"pas. Les étiquettes sont uniquement enregistrées dans les transactions elles-" -"mêmes, et ainsi celles non utilisées disparaissent automatiquement à la " -"fermeture du compte." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Reçu" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"Image d’un reçu pour une transaction. Vous pouvez téléverser des images " -"JPEG, PNG ou un document PDF, mais peut importe le format il sera converti " -"et enregistré en tant qu’image JPEG. Dans le cas d’un PDF, seule la première " -"page sera enregistrée. Vous pouvez supprimer le fichier ou en téléverser un " -"autre à tout moment." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Notes" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "Un texte de forme libre qui peut être joint à la transaction." - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Transfert 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Transfert" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"Le transfert est un moyen de déplacer de l’argent d’un compte à un autre. " -"Après avoir opéré un transfert, 2 transactions seront créées avec les " -"descriptions suivantes :" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" -"« Transfert vers Nom du compte récipiendaire » dans le compte " -"source." - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" -"« Transfert depuis Nom du compte source » dans le compte " -"destinataire." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"Les transactions créées par un transfert sont de simples transactions qui " -"peuvent être supprimées ou modifiées sans risque. Ces transactions ne sont " -"pas connectées : la modification de la transaction sur le compte source " -"n’affectera pas la celle sur le compte destinataire, et vice versa." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"Le transfert ne vous permet pas de créer des transactions répétées ou de " -"définir une autre propriété que le montant. La couleur sélectionnée dans la " -"configuration sera utilisée pour les " -"transactions créées." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"Si vous créez un transfert entre des comptes avec différentes devises, il " -"vous sera demander de fournir un taux de change." - -#~ msgid "2023" -#~ msgstr "2023" diff --git a/NickvisionMoney.Shared/Docs/po/gl.po b/NickvisionMoney.Shared/Docs/po/gl.po deleted file mode 100644 index 9e117c795..000000000 --- a/NickvisionMoney.Shared/Docs/po/gl.po +++ /dev/null @@ -1,761 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-10-20 04:03+0000\n" -"Last-Translator: Nicolás Vieites Sueiro \n" -"Language-Team: Galician \n" -"Language: gl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.1\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 -#: yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 -#: yelp/C/index.page:10 -#: yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 -#: yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 -#: yelp/C/index.page:14 -#: yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nome" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Tipo de conta" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "When you create a new transaction its type by default will be the same as in this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "The size of decimal part of amount values. With \"Unlimited\" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "A color that will be used for transactions created using transfer. Changing this will not affect existing transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "A color used to mark accounts with the Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "A color used to mark accounts with the Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "A color used to mark accounts with the Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "This documentation will help you understand how to configure and manage data in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Descrición" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Importe" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Data" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "End date for a transaction with repeat. It can't be earlier than or on the same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Grupo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Apuntamentos" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/hi.po b/NickvisionMoney.Shared/Docs/po/hi.po deleted file mode 100644 index 1f5df06f9..000000000 --- a/NickvisionMoney.Shared/Docs/po/hi.po +++ /dev/null @@ -1,1145 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2024-03-29 13:01+0000\n" -"Last-Translator: Scrambled777 \n" -"Language-Team: Hindi \n" -"Language: hi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Scrambled777 " - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "खाता 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "फ्योडोर सोबोलेव" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "निकोलस लोगोज़ो" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "खाता" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"यह पृष्ठ Denaro में खातों की सभी संपत्तियों की व्याख्या करता है। " -"उनमें से अधिकांश खाता सेटिंग डायलॉग में दिखाए गए हैं। नया खाता " -"बनाने के बाद यह संवाद भी स्वतः खुल जाता है।" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"प्रत्येक खाता एक एकल *.nmoney फ़ाइल में संग्रहीत है। " -"Denaro के पुराने स्थिर वर्शन में बनाई गई फाइलें एप्लिके" -"शन के नवीनतम स्थिर वर्शन में सुरक्षित रूप से खोली जा सकती हैं। " -"हालाँकि ऐप विभिन्न प्लेटफ़ॉर्म (Windows और Linux) पर चल सकता है, *." -"nmoney फाइलें प्लेटफ़ॉर्म के बीच 100% संगत हैं, जब तक कि वे एक ही " -"एप्लिकेशन वर्शन (यानी V2023.1.0) से हैं।" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"एप्लिकेशन के अस्थिर (Beta और RC) वर्शन में बग या अधूरे संशोधन हो सकते हैं जो " -"डेटा हानि का कारण बन सकते हैं। ऐप के अस्थिर वर्शन में वास्तविक डेटा वाली खाता" -" फाइलों का उपयोग न करें!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "नाम" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"खाते का नाम हाल के खातों की सूची और टैब में दिखाया गया है। नाम की लंबाई की को" -"ई सीमा नहीं होती और इसमें इमोजी सहित कोई भी अक्षर हो सकता है।" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "खाते का प्रकार" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"3 खाता प्रकार उपलब्ध हैं: 🟣चेकिंग, 🔵बचत और " -"🟢व्यवसाय। खाता प्रकार केवल एक उपयोगी लेबल है जो हाल के खातों की " -"सूची में दिखाया गया है और यह प्रभावित नहीं करता है कि एप्लिकेशन कैसे काम करता" -" है या आप किसी खाते के साथ क्या कर सकते हैं। प्रत्येक खाता प्रकार का अपना रं" -"ग होता है, इन रंगों को वैश्विक सेटिंग्स " -"में कॉन्फ़िगर किया जा सकता है।" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "डिफ़ॉल्ट लेनदेन प्रकार" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"जब आप कोई नया लेनदेन बनाते हैं तो डिफ़ॉल्ट रूप से उसका प्रकार इस सेटिंग के " -"समान ही होगा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "लेन-देन अनुस्मारक सीमा" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "आगामी लेनदेन के बारे में अनुस्मारक दिखाते समय उपयोग की जाने वाली सीमा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "सिस्टम मुद्रा" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"हर बार जब एप्लिकेशन शुरू होता है, तो उसे आपके सिस्टम लोकेल से मुद्रा और " -"संख्या स्वरूपण के बारे में डेटा मिलता है, और इस डेटा का उपयोग मुद्रा प्रतीक " -"दिखाने के लिए किया जाता है (जब तक कि कस्टम मुद्रा का उपयोग नहीं किया जाता है" -", नीचे देखें) और यह निर्धारित करने के लिए कि संख्याओं को किस प्रारूप में " -"स्वीकार किया जाएगा लेन-देन की रकम के लिए मान. कुछ उदाहरण:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"यदि आपका स्थान अंग्रेजी (US) है, तो मुद्रा प्रतीक $ पर सेट " -"किया जाएगा और 1,000.00 को एक वैध संख्या के रूप में स्वीकार किया " -"जाएगा।" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"यदि आपका स्थान इतालवी है, तो मुद्रा प्रतीक पर सेट किया " -"जाएगा और 1.000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"यदि आपका स्थान रूसी है, तो मुद्रा प्रतीक पर सेट किया " -"जाएगा और 1000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"Linux पर, सिस्टम भाषा और प्रारूपों के लिए अलग-अलग स्थान सेट करना संभव है। इन " -"सेटिंग्स को बदलना आपके द्वारा उपयोग किए जा रहे डेस्कटॉप वातावरण के आधार पर " -"भिन्न होता है। डेस्कटॉप पर इन सेटिंग्स के स्थान में अंतर के बावजूद, इन " -"सेटिंग्स को बदलने से सिस्टम पर्यावरण चर, जैसे LANG, " -"LC_TIME, और LC_MONETARY को संशोधित किया जाता है। " -"Denaro इन चरों के अनुसार राशि और दिनांक प्रारूपों का उपयोग करने का" -" प्रयास करेगा। यदि ऐप अपेक्षित प्रारूपों का उपयोग करने में विफल रहता है, तो " -"कृपया सुनिश्चित करें कि टर्मिनल में लोकेल कमांड के माध्यम से " -"वेरिएबल सही ढंग से सेट किए गए हैं। यदि आपको कोई बग मिला है और आप इसकी रिपोर्" -"ट करना चाहते हैं, तो कृपया लोकेल कमांड का आउटपुट प्रदान करें " -"ताकि डेवलपर्स उसी सेटिंग्स के साथ आपकी समस्या को पुन: उत्पन्न कर सकें।" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "कस्टम मुद्रा का प्रयोग करें" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"यदि यह विकल्प सक्षम है, तो आपके सिस्टम लोकेल द्वारा प्रदान किए गए मुद्रा " -"प्रतीक के बजाय कस्टम मुद्रा प्रतीक का उपयोग किया जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "कस्टम मुद्रा चिह्न" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "अधिकतम 3 अक्षर या 1 इमोजी. यह कोई संख्या नहीं हो सकती।" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "कस्टम मुद्रा कोड" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "अधिकतम 3 अक्षर या 1 इमोजी।" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"प्रतीक और कोड के बीच अंतर को समझने के लिए एक उदाहरण: $ एक प्रतीक है" -", USD एक कोड है।" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "कस्टम मुद्रा राशि शैली" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "निम्नलिखित तरीकों में से किसी एक में राशि प्रदर्शित करने का विकल्प:" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "कस्टम मुद्रा दशमलव और समूह विभाजक" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "अधिकतम 2 अक्षर या 1 इमोजी।" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "कस्टम मुद्रा दशमलव अंक" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"राशि मानों के दशमलव भाग का आकार. \"असीमित\" अंकों के साथ दशमलव भाग में उतनी " -"ही संख्याएँ होंगी जितनी सटीक राशि दिखाने के लिए आवश्यक हैं, लेकिन यदि राशि " -"एक पूर्णांक संख्या है तो कोई दशमलव भाग नहीं होगा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "पासवर्ड" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"प्रत्येक खाते को पासवर्ड से सुरक्षित किया जा सकता है। पासवर्ड जोड़ने से खाता " -"एन्क्रिप्ट हो जाता है (पासवर्ड का उपयोग करके डिक्रिप्ट किए बिना डेटा को पढ़ना" -" असंभव हो जाता है)। सावधान रहें: यदि पासवर्ड खो गया है, तो आप डेटा " -"पुनर्स्थापित नहीं कर पाएंगे! किसी खुले खाते के खाता सेटिंग संवाद का उपयोग " -"करके पासवर्ड को बदला या हटाया भी जा सकता है। पासवर्ड हटाने से खाता डिक्रिप्ट " -"हो जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Id, दिनांक या राशि के अनुसार क्रमबद्ध करें" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"प्रत्येक खाता यह संग्रहीत करता है कि लेन-देन को उनकी आईडी, दिनांक या राशि के " -"आधार पर मुख्य विंडो में क्रमबद्ध किया जाए या नहीं। हर बार जब आप इसे बदलते हैं" -", तो यह खाता फाइल में सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो " -"जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "छँटाई क्रम" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"प्रत्येक खाता मुख्य विंडो में लेनदेन के क्रम के बारे में जानकारी संग्रहीत " -"करता है। हर बार जब आप इसे बदलते हैं, तो यह खाता फाइल में सहेजा जाएगा और खाता " -"दोबारा खोलने पर पुनर्स्थापित हो जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "समूह दृश्यता" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में समूह " -"सूची छिपी हुई है या नहीं। हर बार जब आप समूह सूची की दृश्यता बदलते हैं, तो इसे" -" सहेजा जाता है और फिर जब आप खाता दोबारा खोलते हैं तो इसे बहाल कर दिया जाता " -"है।" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "टैग दृश्यता" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में टैग " -"सूची छिपी हुई है या नहीं। हर बार जब आप टैग सूची दृश्यता बदलते हैं, तो इसे " -"सहेजा जाता है और फिर खाता दोबारा खोलने पर इसे पुनर्स्थापित कर दिया जाता है।" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "कॉन्फ़िगरेशन 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "कॉन्फ़िगरेशन" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" -"यह पृष्ठ वर्णन करता है कि आप एप्लिकेशन कॉन्फ़िगरेशन में क्या बदल सकते हैं।" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"आपके प्लेटफ़ॉर्म के आधार पर, एप्लिकेशन इंटरफ़ेस में कॉन्फ़िगरेशन को " -"प्राथमिकताएं या सेटिंग्स के रूप में संदर्भित किया जाता " -"है।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "थीम" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"प्रकाश या गहरे रंग की थीम सेट करें, या Denaro को अपने सिस्टम थीम " -"का अनुसरण करें। विंडोज़ पर इसे बदलने के लिए आवेदन को पुनः आरंभ करने की " -"आवश्यकता है।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "लेन-देन डिफ़ॉल्ट रंग" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"एक रंग जो अद्वितीय रंग के साथ एक नया transaction जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। इसे बदलने से मौजूदा लेनदेन " -"प्रभावित नहीं होंगे, भले ही वे पहले से चयनित डिफ़ॉल्ट रंग का उपयोग करें।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "डिफ़ॉल्ट रंग स्थानांतरित करें" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"एक रंग जिसका उपयोग transfer का उपयोग करके किए " -"गए लेनदेन के लिए किया जाएगा। इसे बदलने से मौजूदा लेनदेन पर कोई असर नहीं " -"पड़ेगा।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "समूह डिफ़ॉल्ट रंग" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"एक रंग जो नया समूह जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। यह «अनग्रुप्ड» समू" -"ह के लिए भी एक रंग है।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "खाते का रंग जांचा जा रहा है" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"हाल की खातों की सूची में खातों को चेकिंग प्रकार से चिह्नित करने के लिए उपयोग किया जाने वाला रंग।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "बचत खाते का रंग" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"हाल की खातों की सूची में खातों को बचत " -"प्रकार से चिह्नित करने के लिए उपयोग किया जाने वाला रंग।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "बिजनेस अकाउंट का रंग" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"हाल की खातों की सूची में खातों को व्यवसाय प्रकार से चिह्नित करने के लिए उपयोग किया जाने वाला रंग।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "मूल अंकों का प्रयोग करें" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"क्या लैटिन अंकों के बजाय उन अंकों का उपयोग करना चाहिए जो आपके स्थान के मूल " -"निवासी हैं। उदाहरण के लिए, यदि यह सेटिंग सक्षम है तो पूर्वी अरबी अंकों का " -"उपयोग करने वाले स्थानों के लिए 012 के बजाय ٠١٢ का उपयोग " -"किया जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "दशमलव विभाजक डालें" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"सेट करें कि कौन सी कुंजी दबाए जाने पर लोकेल का दशमलव विभाजक राशि फ़ील्ड में " -"डाला जाएगा: संख्यापैड अवधि, कोई भी अवधि और अल्पविराम, या कोई नहीं। यदि दशमलव " -"विभाजक पहले से ही किसी फ़ील्ड में प्रस्तुत किया गया है, तो इसे सम्मिलित नहीं " -"किया जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "CSV बैकअप फोल्डर" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"एक फोल्डर जहां आपका डेटा प्रत्येक परिवर्तन के बाद स्वचालित रूप से CSV में निर्यात किया जाएगा। यह सुविधा " -"पासवर्ड-सुरक्षित खातों के लिए काम नहीं करती, क्योंकि CSV फाइलें " -"पासवर्ड-सुरक्षित नहीं की जा सकतीं।" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "आयात/निर्यात 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "आयात/निर्यात" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "प्रारूप आयात करें" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "तिथियाँ YYYYMMDD प्रारूप में होनी चाहिए।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "तारीखें अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ जबकि CSV एक सामान्य प्रारूप है और कुछ बैंक अपने उपयोगकर्ताओं को CSV के रू" -"प में जानकारी निर्यात करने की अनुमति देते हैं, ये फाइलें वास्तव में तालिकाएं " -"हैं जिनमें मनमाना डेटा हो सकता है। अन्य प्रोग्राम में बनाई गई CSV फाइल को आया" -"त करना विफल हो जाएगा, क्योंकि इसका डेटा Denaro किसी फाइल से प्राप्" -"त करने का प्रयास करने के साथ संगत नहीं होगा। CSV आयात/निर्यात का उद्देश्य " -"टेक्स्ट एडिटर्स और ऑफिस सुइट्स जैसे इक्स्टर्नल प्रोग्रामों का उपयोग करके किसी" -" खाते में डेटा जोड़ने का एक तरीका प्रदान करना है। आयात केवल मौजूदा लेन-देन को" -" ओवरराइड किए बिना नए लेन-देन जोड़ेगा। यदि आप मैन्युअल रूप से एक CSV फाइल " -"बनाना चाहते हैं, तो यह वह हेडर है जिसमें वे सभी कॉलम शामिल हैं जिन्हें " -"Denaro ढूंढने की अपेक्षा करता है:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"लेनदेन Id, किसी दिए गए खाते के लिए अद्वितीय होनी चाहिए। Ids 1 से शुरू होती " -"हैं।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"लेन-देन की तारीख (या दोबारा लेन-देन के मामले में आरंभ की तारीख), अंग्रेजी " -"(US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "लेन-देन विवरण, इसमें अर्धविराम को छोड़कर कोई भी वर्ण हो सकता है।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "लेन-देन प्रकार: आय के लिए 0, व्यय के लिए 1।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "लेन-देन दोहराव अंतराल का प्रतिनिधित्व करने वाली एक संख्या:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - कभी नहीं" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - प्रतिदिन" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - साप्ताहिक" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - द्विसाप्ताहिक" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - मासिक" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - त्रैमासिक" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - वार्षिक" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - द्विवार्षिक" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"बार-बार होने वाले लेनदेन के विवरण के लिए transaction पेज में Repeat Interval देखें।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"या तो स्रोत लेनदेन की Id होनी चाहिए या यदि यह स्रोत लेनदेन है तो 0 या यदि यह " -"दोहराव लेनदेन नहीं है तो -1 होना चाहिए।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"दोबारा लेन-देन की अंतिम तिथि अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में " -"होनी चाहिए। यदि यह दोबारा लेनदेन नहीं है तो इसे खाली छोड़ दें।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "अंग्रेजी (US) प्रारूप में लेनदेन राशि (123,456.78)।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"लेन-देन का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, " -"G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "क्या लेन-देन में समूह रंग का उपयोग किया जाना चाहिए: 0 - गलत, 1 - सत्य।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"लेन-देन का समूह Id. Ids 1 से शुरू होती हैं। असमूहीकृत लेनदेन के लिए यह -1 " -"होना चाहिए (0 नहीं, यह समूह Id के लिए गलत मान है)।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"लेन-देन का समूह नाम, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर को" -"ई भी वर्ण हो सकता है। असमूहीकृत लेन-देन के लिए इसे खाली छोड़ दें, किसी भी अन्" -"य स्थिति में यह खाली नहीं होना चाहिए।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"लेन-देन का समूह विवरण, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर " -"कोई भी अक्षर हो सकता है और यह खाली हो सकता है। असमूहीकृत लेनदेन के लिए इसे " -"खाली छोड़ दें।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"समूह का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, " -"G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "रसीद और नोट्स CSV में मौजूद नहीं हैं।" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "निर्यात प्रारूप" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"आप चुन सकते हैं कि सारी जानकारी निर्यात करनी है या केवल वर्तमान दृश्य से। यदि" -" आप वर्तमान दृश्य का चयन करते हैं, तो वर्तमान में प्रदर्शित लेनदेन उसी क्रम " -"में निर्यात किए जाएंगे जिसमें वे दिखाए गए हैं।" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"एक फाइल में खाते की जानकारी, लेनदेन की एक सूची और प्राप्तियों की छवियां " -"होंगी। लेन-देन एप्लिकेशन की तरह रंगीन होते हैं, लेकिन काले पाठ को हमेशा स्पष्" -"ट रूप से दिखाई देने के लिए रंगों को आधा-पारदर्शी बनाकर संशोधित किया जाता है। " -"आप किसी निर्यातित फाइल के लिए पासवर्ड सेट कर सकते हैं।" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Denaro सहायता" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Denaro सहायता" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Denaro सहायता" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"यह दस्तावेज़ आपको यह समझने में सहायता करेगा कि एप्लिकेशन का अधिकतम लाभ उठाने " -"के लिए Denaro में डेटा को कैसे कॉन्फ़िगर और प्रबंधित किया जाए।" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"समर्थन पाने के लिए, समस्याएँ या चर्चाएँका उपयोग करें Github पर, या हमारे Matrix चैनल से जुड़ें।" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "लेनदेन 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "लेन-देन" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "यह पृष्ठ Denaro में लेनदेन के सभी गुणों की व्याख्या करता है।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "Id" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"प्रत्येक लेनदेन में एक Id होती है जो किसी दिए गए खाते के लिए अद्वितीय होती " -"है। Id 1 से शुरू होती हैं और जोड़े गए प्रत्येक लेनदेन के लिए बढ़ती हैं। Id को" -" बदला नहीं जा सकता, हटाए गए लेनदेन की Id का पुन: उपयोग नहीं किया जाता है।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "विवरण" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "लंबाई की कोई सीमा नहीं. इसमें अर्धविराम नहीं हो सकता।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "राशि" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"प्रारूप में एक संख्या जो आपके स्थान के लिए मान्य है, विवरण के लिए खाता पृष्ठ में सिस्टम मुद्रा देखें।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "प्रकार" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"आय या व्यय. जब आप नया लेन-देन जोड़ने के लिए एक संवाद " -"खोलेंगे तो डिफ़ॉल्ट रूप से खाता सेटिंग में से " -"एक चुना जाएगा।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "तारीख" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"कोई भी तारीख चुनी जा सकती है, आप भविष्य की तारीखों के लिए लेनदेन भी बना सकते " -"हैं।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "अंतराल दोहराएँ" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"आवर्ती लेनदेन बनाने के लिए इस विकल्प का उपयोग करें। आपके द्वारा दोहराव अंतरा" -"ल के साथ लेनदेन जोड़ने के बाद, यह लेनदेन एक स्रोत लेनदेन बन जाएगा। " -"Denaro स्वचालित रूप से आज तक की तारीखों के लिए या अतीत में सेट की " -"गई अंतिम तिथि के लिए दोहराया लेनदेन उत्पन्न करेगा। दोहराएँ " -"लेनदेन को संपादित या हटाया नहीं जा सकता, केवल स्रोत को संशोधित किया " -"जा सकता है। जब आप स्रोत लेनदेन को संशोधित करते हैं तो Denaro आपसे पूछेगा कि क्या आप दोहराएँ लेनदेन को संशोधित या अलग करना " -"चाहते हैं। यदि आप अलग होना चुनते हैं, तो दोहराएँ लेनदेन सामान्य " -"लेनदेन बन जाते हैं और इन्हें अलग से संपादित या हटाया जा सकता है।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "समाप्ति तिथि दोहराएँ" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"दोहराव वाले लेन-देन की समाप्ति तिथि। यह प्रारंभ दिनांक से पहले या उसी दिन " -"नहीं हो सकता।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "समूह" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"प्रत्येक लेन-देन केवल एक समूह से संबंधित हो सकता है या किसी से भी नहीं " -"(«अनग्रुप्ड» समूह) से संबंधित हो सकता है।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "रंग" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"लेन-देन के लिए एक रंग. समूह रंग या अद्वितीय रंग का उपयोग करने के लिए सेट किया" -" जा सकता है। अद्वितीय रंग का चयन करते समय, इसे डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन में चयनित रंग पर सेट किया जाएगा, लेकिन " -"इसे किसी भी रंग में बदला जा सकता है।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "टैग्स" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"लेन-देन के लिए टैग की एक सूची. किसी लेन-देन में असीमित संख्या में टैग हो सकते" -" हैं (या कोई टैग नहीं)। टैग में अल्पविराम (,) को छोड़कर कोई भी " -"वर्ण हो सकता है, और उनकी लंबाई कोई भी हो सकती है, लेकिन उनसे छोटे कीवर्ड होने" -" की उम्मीद की जाती है। टैग का उपयोग अतिरिक्त फ़िल्टरिंग के लिए किया जाता है " -"जब समूहों का उपयोग पर्याप्त नहीं होता है। टैग केवल लेनदेन में ही सहेजे जाते " -"हैं, और परिणामस्वरूप अप्रयुक्त टैग खाता बंद होने पर स्वचालित रूप से गायब हो " -"जाते हैं।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "रसीद" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"लेन-देन की रसीद की एक छवि. आप JPEG या PNG छवि या PDF दस्तावेज़ अपलोड कर सकते " -"हैं, लेकिन प्रारूप कोई भी हो, इसे JPEG छवि के रूप में परिवर्तित और सहेजा " -"जाएगा। PDF के मामले में, केवल पहला पृष्ठ ही सहेजा जाएगा। आप किसी भी समय दूसरी" -" फाइल को हटा या अपलोड कर सकते हैं।" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "नोट्स" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "लेन-देन के साथ संलग्न करने के लिए एक फ्रीफॉर्म टेक्स्ट नोट।" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "स्थानांतरण 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "स्थानांतरण" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"ट्रांसफर पैसे को एक खाते से दूसरे खाते में स्थानांतरित करने का एक तरीका है। " -"स्थानांतरण चलाने के बाद निम्नलिखित विवरण के साथ 2 लेनदेन बनाए जाएंगे:" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "स्रोत खाते पर गंतव्य खाता नाम पर स्थानांतरण करें।" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "गंतव्य खाते पर स्रोत खाता नाम से स्थानांतरण।" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"स्थानांतरण का उपयोग करके बनाए गए लेनदेन सरल लेनदेन हैं जिन्हें स्वतंत्र रूप " -"से संपादित या हटाया जा सकता है। ये लेनदेन जुड़े नहीं हैं: स्रोत खाते पर लेनदे" -"न को संशोधित करने से गंतव्य खाते पर लेनदेन प्रभावित नहीं होगा, और इसके " -"विपरीत।" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"स्थानांतरण आपको बार-बार लेनदेन करने या राशि के अलावा कोई संपत्ति निर्धारित " -"करने की अनुमति नहीं देता है। कॉन्फ़िगरेशन में चयनित रंग का उपयोग बनाए गए लेनदेन के लिए किया जाएगा।" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"यदि आप विभिन्न मुद्राओं वाले खातों के बीच स्थानांतरण करते हैं, तो आपसे रूपां" -"तरण दर प्रदान करने के लिए कहा जाएगा।" diff --git a/NickvisionMoney.Shared/Docs/po/hr.po b/NickvisionMoney.Shared/Docs/po/hr.po deleted file mode 100644 index 703ce12d2..000000000 --- a/NickvisionMoney.Shared/Docs/po/hr.po +++ /dev/null @@ -1,1144 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-09-26 13:22+0000\n" -"Last-Translator: Milo Ivir \n" -"Language-Team: Croatian \n" -"Language: hr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.1-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Milo Ivir , 2023" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Račun 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Račun" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Ova stranica objašnjava sva svojstva računa u aplikaciji Denaro. " -"Većina se prikazuju u Dijalog postavki računa. Ovaj se dijalog " -"također automatski otvara nakon stvaranja novog računa." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Svaki račun se sprema u yasebnu *.nmoney datoteku. Datoteke " -"stvorene u starijoj stabilnoj verziji Denaro aplikacije " -"mogu se sigurno otvoriti u novijoj stabilnoj verziji aplikacije. " -"Iako aplikacija radi na različitim platformama (Windows i Linux), *." -"nmoney datoteke su 100 % kompatibilne između platformi sve dok su " -"stvorene s istom verzijom aplikacije (tj. V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Nestabilne verzije aplikacije (beta i kandidati za izdanje) mogu sadržati " -"greške ili nedovršene promjene i mogu uzrokovati gubitak podataka. U " -"nestabilnim verzijama aplikacije NEMOJ koristiti datoteke računa koje sadrže " -"stvarne podatke!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Ime" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"Ime računa se prikazuje u popisu nedavnih računa i na karticama. Dužina " -"imena nije ograničena i može sadržati bilo koje znakove, uključujući emojije." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Vrsta računa" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Postoje 3 vrste računa: 🟣žiro račun, 🔵štedni račun i 🟢" -"poslovni račun. Vrsta računa je samo korisna oznaka koja se " -"prikazuje u popisu nedavnih računa i ne utječe na to kako aplikacija radi " -"ili što možeš učiniti s računom. Svaka vrsta računa ima vlastitu boju. Boje " -"se mogu odrediti u globalnim postavkama." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Standardna vrsta transakcije" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Kada stvoriš novu transakciju, njezina će vrsta standardno biti ista kao u " -"ovoj postavci." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Prag podsjetnika za transakcije" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" -"Prag koji se koristi prilikom prikazivanja podsjetnika o nadolazećim " -"transakcijama." - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Valuta sustava" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Svaki put kada se aplikacija pokrene, ona dobiva podatke o valuti i formatu " -"brojeva iz postavke jezičnog područja tvog sustava. Ti se podaci koriste za " -"prikaz simbola valute (osim ako se koristi prilagođena valuta, pogledaj " -"dolje) i za određivanje formata brojeva koji će se prihvatiti kao " -"vrijednosti za iznose transakcija. Par primjera:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"Ako je tvoje jezično područje engleski (SAD), simbol valute će biti " -"$ i 1,000.00 će se prihvatiti kao valjani broj." - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"Ako je tvoje jezično područje hrvatski, simbol valute će biti " -" i 1.000,00 će se prihvatiti kao valjani broj." - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"Ako je tvoje jezično područje ruski, simbol valute će biti i 1000,00 će se prihvatiti kao valjani broj." - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"Na Linuxu je moguće postaviti različita jezična područja za jezik sustava i " -"formate. Mijenjanje ovih postavki razlikuje se ovisno o radnoj površini. " -"Unatoč razlikama u smještaju ovih postavki u okruženju, mijenjanje tih " -"postavki mijenja varijable okruženja sustava, kao što su LANG, " -"LC_TIME i LC_MONETARY. Denaro će " -"pokušati koristiti formate iznosa i datuma u skladu s tim varijablama. Ako " -"aplikacija ne uspije koristiti očekivane formate, provjeri jesu li varijable " -"ispravno postavljene putem naredbe locale u terminalu. Ako " -"naiđeš na grešku i želiš je prijaviti, pošalji rezultat naredbe " -"locale kako bi programeri mogli reproducirati problem s istim " -"postavkama." - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Koristi prilagođenu valutu" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"Ako je ova opcija aktivirana, umjesto simbola valute jezičnog područja tvog " -"sustava koristit će se Prilagođeni simbol valute." - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Simbol prilagođene valute" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "Do 3 znaka ili 1 emoji. Ne može biti broj." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Kȏd prilagođene valute" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "Do 3 znaka ili 1 emoji." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Primjer za razumijevanje razlike između simbola i koda: $ je " -"simbol, USD je kod." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Prilagođeni stil iznosa valute" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "Izbor prikaza iznosa na jedan od sljedećih načina:" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Prilagođeni decimalni znakovi i znakovi tisućica valute" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "Do 2 znaka ili 1 emoji." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Prilagođeni broj decimala valute" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"Broj decimala za iznose. S opcijom „Neograničeno” prikazat će se onoliko " -"decimala koliko je potrebno za prikaz točnog iznosa. Decimale se neće " -"koristiti ako je iznos cijeli broj." - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Lozinka" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Svaki račun se može zaštititi lozinkom. Dodavanje lozinke uzrokuje " -"šifriranje računa (što onemogućuje čitanje podataka bez dešifriranja pomoću " -"lozinke). Oprez: ako izgubiš lozinku, nećeš moći obnoviti podatke! Lozinka " -"se također može promijeniti ili ukloniti pomoću dijaloga postavki računa " -"jednog otvorenog računa. Uklanjanje lozinke će dešifrirati račun." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Razvrstaj prema ID-u, datumu ili iznosu" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"Svaki račun sprema razvrstavanje transakcija u glavnom prozoru prema ID-u, " -"datumu ili iznosu. Pri svakoj promjeni će se razvrstavanje spremiti u " -"datoteku računa i obnoviti kada ponovo otvoriš račun." - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Redoslijed" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"Svaki račun sprema podatke o redoslijedu transakcija u glavnom prozoru. Pri " -"svakoj promjeni će se redoslijed spremiti u datoteku računa i obnoviti kada " -"ponovo otvoriš račun." - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Vidljivost grupa" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Svaki račun sprema podatke o prikazivanju ii skrivanju popisa grupa u " -"glavnom prozoru. Pri svakoj promjeni će se vidljivost popisa grupa spremiti " -"i obnoviti kada ponovo otvoriš račun." - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Vidljivost oznaka" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Svaki račun sprema podatke o prikazivanju ii skrivanju popisa oznaka u " -"glavnom prozoru. Pri svakoj promjeni vidljivosti popisa oznaka, promjena će " -"se spremiti i obnoviti kada ponovo otvoriš račun." - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Konfiguracija 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Konfiguracija" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "Ova stranica opisuje što možeš promijeniti u konfiguraciji aplikacije." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"Ovisno o platformi, u sučelju aplikacije se konfiguracija zove " -"Osobitosti ili Postavke." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Tema" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"Postavi svijetlu ili tamnu temu ili neka Denaro slijedi temu tvog " -"sustava. Za primjenu promjene teme u Windows sustavu zahtijeva ponovno " -"pokretanje aplikacije." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Standardna boja transakcija" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"Standardna boja prilikom dodavanja nove transakcije s jedinstvenom bojom. Mijenjanje boje neće utjecati na " -"postojeće transakcije, čak i ako koriste prethodno odabranu standardnu boju." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Standardna boja transfera" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"Standardna boja za transakcije stvorene pomoću transfera. Mijenjanje boje neće utjecati na postojeće transakcije." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Standardna boja grupa" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"Standardna boja prilikom dodavanja nove grupe. Koristi se i za „negrupirane” " -"grupe." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Boja žiro računa" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"Boja za označavanje računa vrste žiro " -"račun u popisu nedavnih računa." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Boja štednog računa" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"Boja za označavanje računa vrste štedni " -"račun u popisu nedavnih računa." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Boja poslovnog računa" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"Boja za označavanje računa vrste poslovni " -"račun u popisu nedavnih računa." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Koristi brojke jezika" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"Da li umjesto arapskih brojki koristiti brojke tvog tvoje jezičnog područja. " -"Na primjer, ako je ova postavka deaktivirana, umjesto 012 će se " -"koristiti ٠١٢ za jezična područja koja koriste istočnoarapske " -"brojeve." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Umetni decimalni znak" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa: " -"točka na numeričkoj tipkovnici, bilo koja točka i zarez ili ništa. Ako " -"decimalni znak već postoji u polju onda se on neće umetnuti." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Mapa sigurnosnih kopija u CSV formatu" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"Mapa u kojoj će se tvoji podaci automatski izvesti u CSV datoteku nakon svake promjene. Ova funkcija ne radi za " -"račune koji su zaštićeni lozinkom jer CSV datoteke ne mogu biti zaštićene " -"lozinkom." - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Uvoz/Izvoz 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Uvoz/Izvoz" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formati uvoza" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Datumi bi trebali biti u formatu YYYYMMDD." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "Datumi bi trebali biti u engleskom (SAD) formatu (MM/DD/YYYY)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ Iako je CSV uobičajeni format i neke banke dopuštaju svojim korisnicima " -"izvoz podataka u CSV formatu, te su datoteke zapravo tablice koje mogu " -"sadržati proizvoljne podatke. Uvoz CSV datoteke stvorene u jednom drugom " -"programu neće uspjeti jer njezini podaci neće biti kompatibilni s onim što " -"Denaro pokušava dobiti iz datoteke. Svrha uvoza/izvoza CSV " -"datoteka je omogućiti način dodavanja podataka računu pomoću programa kao " -"što su uređivači teksta i uredski paketi. Uvoz će samo dodati nove " -"transakcije bez prepisivanja postojećih. Ako želiš ručno izraditi CSV " -"datoteku, ovo je zaglavlje koje uključuje sve stupce koje Denaro " -"očekuje pronaći:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"ID transakcije. Mora biti jedinstven za određeni račun. ID-ovi počinju s 1." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"Datum transakcije (ili početni datum u slučaju ponovljajuće transakcije). " -"Mora biti u engleskom (SAD) formatu (MM/DD/YYYY)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" -"Opis transakcije. Može sadržati bilo koje znakove osim točke sa zarezom (;)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "Vrsta transakcije: 0 za prihod, 1 za rashod." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "Broj koji predstavlja interval ponavljanja transakcije:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 – Nikada" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 – Dnevno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 – Tjedno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 – Dvotjeno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 – Mjesečno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 – Kvartalno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 – Godišnje" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 – Dvogodišnje" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"Za detalje o ponovljajućim transakcijama pogledaj Interval ponavljanja na stranici transakcija." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"Treba biti ID izvorne transakcije ili 0 ako je izvorna transakcija ili -1 " -"ako nije ponavljajuća transakcija." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"Krajnji datum ponavljajuće transakcije. Mora biti u engleskom (SAD) formatu " -"(MM/DD/YYYY). Ostavi polje praznim ako nije ponavljajuća " -"transakcija." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "Iznos transakcije u engleskom (SAD) formatu (123,456.78)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Boja transakcije u rgb(R,G,B) formatu, gdje su R, G i B cijeli brojevi od 0 do 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "Treba li transakcija koristiti boju grupe: 0 – ne, 1 – da." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"ID grupe transakcije. ID-ovi počinju s brojem 1. Za negrupirane transakcije " -"trebao bi biti -1 (ne 0, jer to nije valjana vrijednost za ID grupe)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"Ime grupe transakcije treba odgovarati ID-u grupe. Može sadržati bilo koje " -"znakove osim točke sa zarezom (;). Ostavi polje prazno za negrupirane " -"transakcije. U svim drugim slučajevima polje ne bi trebalo biti prazno." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"Opis grupe transakcije trebao bi odgovarati ID-u grupe. Može sadržati bilo " -"koje znakove osim točke sa zarezom (;) i može biti prazan. Ostavi polje " -"prazno za negrupiranu transakciju." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Boja grupe u rgb(R,G,B) formatu, gdje su R, G i " -"B cijeli brojevi od 0 do 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "CSV datoteka ne sadrži podatke o priznanici i bilješke." - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formati izvoza" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"Odaberi želiš li izvesti sve podatke ili samo podatke iz trenutačnog " -"prikaza. Ako odabereš trenutačni prikaz, trenutačno prikazane transakcije će " -"se izvesti u prikazanom redoslijedu." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"Datoteka će sadržati podatke o računu, popis transakcija i slike priznanica. " -"Transakcije su obojene kao u aplikaciji, ali su boje poluprozirne, kako bi " -"crni tekst uvijek bio jasno vidljiv. Za izvezenu datoteku možeš postaviti " -"lozinku." - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Denaro pomoć" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Denaro pomoć" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Denaro pomoć" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"Ova dokumentacija će ti pomoći konfigurirati i upravljati podacima u " -"aplikaciji Denaro za najbolje iskorištavanje aplikacije." - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"Za dobivanje pomoći koristi probleme ili rasprave na Githubu ili se pridruži našem Matrix kanalu." - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transakcija 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transakcija" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" -"Ova stranica objašnjava sva svojstva transakcija u aplikaciji " -"Denaro." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"Svaka transakcija ima ID koji je jedinstven za određeni račun. ID-ovi " -"počinju s 1 i povećavaju se sa svakom dodanom transakcijom. ID-ovi se ne " -"mogu mijenjati. ID-ovi uklonjenih transakcija se ne koriste ponovo." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Opis" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" -"Dužina opisa nije ograničena. Ne smije sadržati znak točke sa zarezom (;)." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Iznos" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"Broj u ispravnom formatu za tvoje jezično područje. Za detalje pogledaj " -"Valuta sustava u Stranica računa." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Vrsta" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"Prihod ili Rashod. Odabrana opcija u postavkama računa će se standardno odabrati kada otvoriš dijalog za " -"dodavanje nove transakcije." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Datum" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"Možeš odabrati bilo koji datum. Također možeš stvoriti transakcije za buduće " -"datume." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Interval ponavljanja" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"Koristi ovu opciju za stvaranje ponavljajuće transakcije. Nakon što dodaš " -"transakciju s intervalom ponavljanja, ova će transakcija postati " -"izvorna transakcija. Denaro će automatski generirati " -"ponovljajuće transakcije za datume do danas ili za navedeni krajnji " -"datum ako je postavljen u prošlosti. Ponovljajuće transakcije se ne " -"mogu uređivati ili izbrisati, samo se izvor može promijeniti. Kada " -"promijeniš izvornu transakciju, Denaro će te pitati " -"želiš li promijeniti ili poništiti vezu ponovljajućih transakcija. " -"Ako odlučiš poništiti vezu, ponovljajuće transakcije postaju " -"normalne transakcije i mogu se zasebno uređivati ili brisati." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Krajnji datum ponavljanja" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"Krajnji datum za ponavljajuću transakciju. Ne može biti prije ili na isti " -"dan kao početni datum." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Grupa" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"Svaka transakcija može pripadati samo jednoj grupi ili nijednoj " -"(„Negrupirana” grupa)." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Boja" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"Boja za transakciju. Može se postaviti da koristi boju grupe ili jedinstvene " -"boje. Prilikom biranja jedinstvene boje, boja će se standardno postaviti na " -"odabranu boju u konfiguraciji, ali se " -"može promijeniti u bilo koju boju." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Oznake" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"Popis oznaka za transakciju. Transakcija može imati neograničen broj oznaka (" -"ili ne imati oznake). Oznake mogu sadržati bilo koje znakove osim zareza " -"(,) i imati bilo koju dužinu, ali se očekuje da budu kratke " -"ključne riječi. Oznake su namijenjene za dodatno filtriranje kada korištenje " -"grupa nije dovoljno. Oznake se spremaju samo u samim transakcijama, a kao " -"rezultat toga nekorištene oznake automatski nestaju pri zatvaranju računa." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Priznanica" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"Slika priznanice za transakciju. Možeš učitati JPEG ili PNG sliku ili PDF " -"dokument, ali bez obzira na format slika će se pretvorit i spremiti kao JPEG " -"slika. U slučaju PDF-a će se spremiti samo prva stranica. U bilo kojem " -"trenutku možeš izbrisati ili prenijeti jednu drugu datoteku." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Bilješke" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "Tekstna bilješka za prilaganje transakciji." - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Transfer 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Transfer" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"Transfer je način premještanja novca s jednog računa na drugi. Nakon " -"pokretanja transfera stvorit će se 2 transakcije sa sljedećim opisima:" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "„Transfer na Ime odredišnog računa” na izvornom računu." - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "„Transfer iz Ime izvornog računa” na odredišni račun." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"Transakcije koje su stvorene korištenjem tranfera su jednostavne transakcije " -"koje se mogu slobodno urediti ili izbrisati. Ove transakcije nisu povezane: " -"mijenjanje transakcije u izvornom računu neće utjecati na transakciju u " -"odredišnom računu, i obratno." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"Transfer ne dozvoljava stvaranje ponavljajućih transakcija niti postavljanje " -"bilo kojih svojstava osim iznosa. Za stvaranje transakcije će se koristiti " -"boja koja je odabrana u konfiguraciji." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"Ako stvoriš transfer između računa s različitim valutama morat ćeš zadati " -"stopu konverzije." diff --git a/NickvisionMoney.Shared/Docs/po/id.po b/NickvisionMoney.Shared/Docs/po/id.po deleted file mode 100644 index 5d3dc7230..000000000 --- a/NickvisionMoney.Shared/Docs/po/id.po +++ /dev/null @@ -1,946 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-06-07 19:40+0000\n" -"Last-Translator: Krindog7337 \n" -"Language-Team: Indonesian \n" -"Language: id\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.18-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Gunakan Digit Bawaan" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Catatan" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/it.po b/NickvisionMoney.Shared/Docs/po/it.po deleted file mode 100644 index db5ffe7bb..000000000 --- a/NickvisionMoney.Shared/Docs/po/it.po +++ /dev/null @@ -1,1185 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-09-10 21:21+0000\n" -"Last-Translator: albanobattistella \n" -"Language-Team: Italian \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" -"Albano Battistella\n" -"Davide Ferracin " - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Conti 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Conti" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"In questa pagina vengono spiegate tutte le proprietà degli account in " -"Denaro. La maggior parte di esse è mostrata nella finestra di " -"dialogo Impostazioni conto. Questa finestra viene aperta " -"automaticamente alla creazione di un nuovo conto." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Ciascun conto è registrato in un singolo file *.nmoney. I file " -"creati da una vecchia versione stabile di Denaro possono " -"essere aperti senza rischi con una versione stabile più recente " -"dell'applicazione. Anche se l'applicazione può girare su più piattaforme " -"(Windows e Linux), i file *.nmoney sono compatibili al 100% tra " -"le piattaforme purché provengano dalla stessa versione dell'applicazione " -"(per esempio V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Le versioni instabili (beta ed RC) dell'applicazione possono contenere " -"errori o modifiche non terminate, che possono causare la perdita di dati. È " -"sconsigliato usare versioni instabili l'applicazione con file conto che " -"contengono i propri dati veri." - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nome" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"Il nome del conto viene mostrato nella lista dei conti più recenti e nelle " -"schede. I nomi non hanno un limite di lunghezza e possono contenere " -"qualsiasi carattere, anche gli emoji." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Tipo di conto" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Sono disponibili tre tipi di conto: 🟣conto corrente, 🔵deposito and 🟢aziendale. Il tipo di conto è solo un'etichetta, mostrata " -"nella lista dei conti recenti, che non influisce sul funzionamento " -"dell'applicazione o sulle azioni disponibili per ciascun conto. Ciascun tipo " -"di conto ha il suo colore, che può essere configurato nelle impostazioni generali." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Tipo di transazione predefinito" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Questo parametro determina il tipo predefinito di una nuova transazione alla " -"sua creazione." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Soglia per i promemoria delle transazioni" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" -"La soglia utilizzata quando vengono visualizzati promemoria sulle " -"transazioni imminenti." - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Valuta di sistema" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Ad ogni avvio, l'applicazione recupera i dati sulla valuta e la " -"formattazione dei numeri dai formati di sistema, e usa questi dati per " -"mostrare i simboli delle valute (a meno che sia stata scelta una valuta " -"personalizzata, vedere più sotto) e per determinare in quale formato " -"accettare i valori per l'ammontare delle transazioni. Alcuni esempi:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"Se il proprio formato è Inglese (US), il simbolo della valuta sarà " -"impostato su $ e 1,000.00 verrà accettato come un valore " -"numerico valido." - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"Se il proprio formato è Italiano, il simbolo della valuta sarà " -"impostato su e 1.000,00 verrà accettato come un valore " -"numerico valido." - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"Se il proprio formato è Russo, il simbolo della valuta sarà " -"impostato su e 1000,00 verrà accettato come un valore " -"numerico valido." - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"Su Linux è possibile impostare diversi formati per la lingua e i valori " -"numerici. Il modo per modificare queste impostazioni varia a seconda " -"dell'ambiente desktop usato. Nonostante queste impostazioni si possano " -"trovare in luoghi diversi del desktop, la loro modifica influisce su alcune " -"variabili d'ambiente di sistema come LANG, LC_TIME, e LC_MONETARY. Denaro tenterà di usare i " -"formati numerici e di data specificati da queste variabili. Se non vengono " -"usati i formati che ci si aspetta, assicurarsi che le variabili siano " -"impostate correttamente usando il comando locale in un " -"terminale. Se si verifica un errore e lo si vuole segnalare, fornire " -"l'output del comando locale per permettere agli sviluppatori di " -"riprodurre tale errore con le medesime impostazioni." - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Usa valuta personalizzata" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"Se abilitata, simbolo valuta personalizzato verrà usato al posto " -"del simbolo fornito dalle impostazioni del proprio sistema." - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Simbolo valuta personalizzato" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "Fino a tre caratteri oppure un emoji. Non può essere un numero." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Codice valuta personalizzato" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "Fino a tre caratteri oppure un emoji." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Un esempio per capire la differenza tra simbolo e codice: $ è un " -"simbolo, USD è un codice." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Stile importo valuta personalizzato" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "Possibilità di visualizzare un importo in uno dei seguenti modi:" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Separatore decimale e dei gruppi personalizzato" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "Fino a due caratteri oppure un emoji." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Cifre decimali personalizzate" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"La dimensione della parte decimale degli importi. Con «Illimitata» ci " -"potranno essere tante cifre decimali quante ne serviranno per mostrare " -"l'importo esatto, ma non verrà mostrata la parte decimale se l'importo è un " -"numero intero." - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Password" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Ciascun conto può essere protetto da una password. Aggiungere una password " -"rende il conto cifrato (rendendo impossibile leggerne i dati senza " -"decifrarlo con la password). Attenzione: se la password viene dimenticata, " -"non sarà possibile ripristinare i dati. È possibile rimuovere o cambiare la " -"password tramite le impostazioni del conto, una volta aperto. Rimuovere la " -"password decifrerà il conto." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Ordinare per Id, data o importo" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"Ogni conto registra se ordina le transazioni nella finestra principale per " -"il loro ID, la data o l'importo. Quando si modifica la modalità di " -"ordinamento, viene salvata nel file del conto e riprisrinata alla riapertura." - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Verso dell'ordinamento" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"Ogni conto registra il modo in cui ordina le transazioni nella finestra " -"principale. Quando si modifica la modalità di ordinamento, viene salvata nel " -"file del conto e ripristinata alla riapertura." - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Visibilità dei gruppi" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Ogni conto registra se la lista dei gruppi nella finestra principale è " -"nascosta o no. Quando si modifica la visibilità dei gruppi, viene salvata e " -"ripristinata alla riapertura del conto." - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Visibilità dei tag" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Ogni account memorizza informazioni sul fatto che l'elenco dei tag nella " -"finestra principale sia nascosto o meno. Ogni volta che modifichi la " -"visibilità dell'elenco dei tag, questo viene salvato e quindi ripristinato " -"quando riapri l'account." - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Configurazione 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Configurazione" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" -"Questa pagina descrive cosa è possibile cambiare nella configurazione " -"dell'applicazione." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"A seconda della propria piattaforma, è possibile trovare la configurazione " -"nell'interfaccia dell'applicazione sotto Preferenze oppure " -"Impostazioni." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Stile" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"Impostare lo stile chiaro o scuro, oppure dire a Denaro di " -"seguire lo stile di sistema. Cambiare lo stile su Windows richiede il " -"riavvio dell'applicazione per applicare le modifiche." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Colore predefinito delle transazioni" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"Un colore che verrà selezionato inizialmente all'aggiunta di una nuova transazione con colore speciale. Cambiare questo " -"colore non avrà effetto sulle transazioni esistenti, anche se usavano un " -"colore predefinito precedentemente selezionato." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Colore predefinito dei trasferimenti" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"Un colore che verrà usato per le transazioni create usando i trasferimenti. Cambiare questo colore non avrà effetto " -"sulle transazioni esistenti." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Colore dei gruppi predefinito" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"Un colore che verrà selezionato inizialmente all'aggiunta di un nuovo " -"gruppo. È anche il colore per il gruppo «Senza gruppo»." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Colore dei conti correnti" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"Un colore usato per contrassegnare i conti del " -"tipo conto corrente nella lista dei conti recenti." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Colore dei conti deposito" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"Un colore usato per contrassegnare i conti del " -"tipo conto deposito nella lista dei conti recenti." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Colore dei conti aziendali" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"Un colore usato per contrassegnare i conti del " -"tipo conto azientale nella lista dei conti recenti." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Usa cifre native" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"Se usare delle cifre che sono native della propria regione anziché quelle " -"latine. Per esempio, per sistemi che usano i numeri indo-arabi, se questa " -"opzione è attiva verrà usato ٠١٢ invece di 012." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Inserimento separatore decimale" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"Imposta per quali tasti, quando premuti, verrà inserito al loro posto il " -"separatore decimale durante la digitazione di un importo: il punto del " -"tastierino numerico, un punto qualsiasi e una virgola, o nessuno di essi. Se " -"il separatore decimale è già presente nel campo di inserimento, non verrà " -"inserito nuovamente." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Cartella di backup in CSV" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"Una cartella in cui i propri dati verranno automaticamente esportati in formato CSV dopo ogni modifica. Questa " -"funzionalità non è attiva per i file protetti da password, poiché i file CSV " -"non possono essere protetti in tale modo." - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Importazione ed esportazione 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Importazione ed esportazione" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formati per l'importazione" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Le date devono essere in formato YYYYMMDD." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "Le date devono essere nel formato americano (MM/DD/YYYY)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ Per quanto CSV sia un formato comune e alcune banche permettano ai loro " -"utenti di esportare le informazioni in file CSV, tali file sono a tutti gli " -"effetti tabelle che possono contenere dati arbitrari. Importare un file CSV " -"creato con altri programmi non sarà possibile, perché i dati non saranno " -"compatibili con ciò che Denaro tenta di leggere in un file. Lo " -"scopo dell'importazione ed esportazione in CSV è quello di fornire un modo " -"di aggiungere dati ad un conto usando programmi esterni come editor di testo " -"e suite per ufficio. L'importazione aggiungerà soltanto nuove transazioni, " -"senza sovrascrivere quelle già esistenti. Per creare un file CSV a mano, " -"questa è la riga dei titoli delle colonne che Denaro si aspetta " -"di trovare:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"L'ID della transazione, che deve essere univoco all'interno di ciascun " -"conto. Gli ID partono da 1." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"La data della transazione (o la data d'inizio per quelle ricorrenti) deve " -"essere in formato americano (MM/DD/YYYY)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" -"La descrizione della transizione; può contenere qualsiasi carattere tranne " -"il punto e virgola." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "Tipo di transazione: 0 per le entrate, 1 per le uscite." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" -"Un numero che rappresenta la frequenza di ripetizione della transazione:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Mai" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Ogni giorno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Ogni settimana" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Ogni due settimane" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Ogni mese" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Ogni tre mesi" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Ogni anno" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Ogni due anni" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"Consultare Frequenza in transazioni per dettagli sulle transazioni ricorrenti." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"Deve essere o l'ID di una transazione originale, oppure 0 se è una " -"transazione “sorgente” o -1 se non è ricorrente." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"La data di termine per una transazione ricorrente, in formato americano " -"(MM/DD/YYYY). Lasciare vuoto per le transazioni non ricorrenti." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "Importo della transazione in formato americano (123,456.78)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Il colore della transazione, in formato rgb(R,G,B) dove R, " -"G e B sono numeri interi tra 0 e 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" -"Se una transazione deve usare il colore del gruppo: 0 — falso, 1 — vero." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"L'ID del gruppo della transazione. Gli ID partono da 1. Usare il valore -1 " -"per le transazioni che non sono in alcun gruppo (non si usi 0, è un valore " -"incorretto per l'ID del gruppo)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"Il nome del gruppo della transazione, che deve corrispondere all'ID del " -"gruppo. Può contenere qualsiasi carattere tranne il punto e virgola. " -"Lasciare vuoto per una transazione che non è in alcun gruppo; in tutti gli " -"altri casi non deve essere vuoto." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"La descrizione del gruppo della transazione, che deve corrispondere all'ID " -"del gruppo. Può contenere qualsiasi carattere tranne il punto e virgola, e " -"può anche essere vuota. Lasciarla vuota per una transazione che non è in " -"alcun gruppo." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Il colore del gruppo, in formato rgb(R,G,B) dove R, G e B sono numeri interi tra 0 e 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "Ricevute e annotazioni non si trovano nel file CSV." - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formati per l'esportazione" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"È possibile selezionare se esportare tutte le informazioni oppure solo " -"quelle nella vista corrente. Se si seleziona la vista corrente, le " -"transazioni visualizzare verranno esportate nello stesso ordine in cui sono " -"mostrate." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"Un file conterrà le informazioni sul conto, una lista di transazioni e le " -"immagini delle ricevute. Le transazioni sono colorate come " -"nell'applicazione, ma i colori sono resi semitrasparenti in modo che il " -"testo nero sia sempre visibile chiaramente. È possibile impostare una " -"password per il file esportato." - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Aiuto di Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Aiuto di Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Aiuto di Denaro" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"Questa guida aiuta gli utenti a capire come configurare e gestire i dati in " -"Denaro per sfruttare l'applicazione al meglio." - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"Per ottenere supporto, usare le issues o le discussioni su Github, " -"oppure unirsi al nostro canale di " -"Matrix." - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transazioni 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transazione" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" -"Questa pagina spiega tutte le proprietà delle transazioni in Denaro." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"Ciascuna transazione possiede un ID, che è univoco all'interno di ciascun " -"conto. L'ID parte da 1 e viene incrementato ad ogni transazione aggiunta. " -"Gli ID non possono essere cambiati, e quelli delle transazioni rimosse non " -"vengono riusati." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Descrizione" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "Nessun limite di lunghezza. Non può contenere punti e virgola." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Importo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"Un numero valido per le proprie impostazioni regionali; si veda Valuta " -"di sistema nella pagina Conti per " -"dettagli." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Tipo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"Entrate o Uscite. All'apertura della finestra per creare " -"una nuova transazione, sarà selezionata l'opzione predefinita scelta nelle " -"impostazioni conto." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Data" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"Si può selezionare qualsiasi data, e creare transazioni anche per date " -"future." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Frequenza" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"Usare questa opzione per creare una transazione ricorrente. Una volta " -"aggiunta una transazione impostando una frequenza di ricorsione, essa " -"diventerà una transazione sorgente. Denaro genererà " -"automaticamente le transazioni collegate per le date fino ad oggi o " -"fino alla data di termine indicata se è nel passato. Le transazioni " -"collegate non possono essere modificate o eliminate, solo la " -"sorgente può esserlo. Quando si modifica la transazione " -"sorgente, Denaro chiederà se si desidera modificare " -"anche le transazioni collegate o se scollegarle. Se si sceglie di " -"scollegarle, esse diventeranno delle normali transazioni e potranno essere " -"modificate o eliminate individualmente." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Fine ripetizione" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"La data di termine di una transazione ricorrente. Non può essere uguale alla " -"data di inizio o precederla." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Gruppo" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"Ciascuna transazione può appartenere a un solo gruppo, oppure nessuno (cioè " -"appartiene al gruppo «Senza gruppo»)." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Colore" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"Un colore per la transazione. Si può impostare affinché la transazione usi " -"il colore del gruppo a cui appartiene, oppure un colore speciale. Se si " -"sceglie il secondo, verrà inizialmente impostato al colore predefinito " -"selezionato nella configurazione, ma può " -"essere cambiato in qualsiasi altro colore." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Etichette" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"Un elenco di tag per la transazione. Una transazione può avere un numero " -"illimitato di tag (o non avere tag). I tag possono contenere qualsiasi " -"carattere tranne la virgola (,) e avere qualsiasi lunghezza, ma " -"si prevede che siano parole chiave brevi. I tag sono pensati per essere " -"utilizzati per ulteriori filtri quando l'utilizzo dei gruppi non è " -"sufficiente. I tag vengono salvati solo nelle transazioni stesse e, di " -"conseguenza, i tag non utilizzati scompaiono automaticamente alla chiusura " -"del conto." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Ricevuta" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"L'immagine di una ricevuta per la transazione. È possibile caricare immagini " -"in formato JPEG o PNG, oppure documenti PDF, ma a prescindere dal formato " -"verrà convertita e salvata come immagine JPEG. Nel caso del PDF, verrà " -"salvata solo la prima pagina. È possibile eliminare o caricare un altro file " -"in qualsiasi momento." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Annotazioni" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "Un testo libero da allegare alla transazione." - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Trasferimenti 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Trasferimenti" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"I trasferimenti sono un modo per spostare denaro da un conto all'altro. Una " -"volta creato un trasferimento, verranno create due transazioni con le " -"seguenti descrizioni:" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" -"«Trasferimento a Conto di destinazione» sul conto di origine." - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" -"«Trasferimento da Conto di origine» sul conto di destinazione." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"Le transazioni create da un trasferimento sono delle semplici transazioni " -"che possono essere modificate o eliminate liberamente. Non sono connesse tra " -"loro: modificare la transazione sul conto di origine non avrà effetto sul " -"conto di destinazione, e viceversa." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"I trasferimenti non permettono di creare transazioni ricorrenti o di " -"impostare altre proprietà oltre all'importo. Il colore scelto nella configurazione sarà usato per le transazioni " -"generate." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"Se si crea un trasferimento tra conti in valute diverse, verrà chiesto di " -"specificare un tasso di conversione." - -#~ msgid "2023" -#~ msgstr "2023" diff --git a/NickvisionMoney.Shared/Docs/po/ja.po b/NickvisionMoney.Shared/Docs/po/ja.po deleted file mode 100644 index 9b6cb0bbe..000000000 --- a/NickvisionMoney.Shared/Docs/po/ja.po +++ /dev/null @@ -1,946 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-07-09 22:27+0000\n" -"Last-Translator: Luci Draws \n" -"Language-Team: Japanese \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.0-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "テーマ" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "デーツ" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/nl.po b/NickvisionMoney.Shared/Docs/po/nl.po deleted file mode 100644 index 0337ec381..000000000 --- a/NickvisionMoney.Shared/Docs/po/nl.po +++ /dev/null @@ -1,950 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-12-31 00:09+0000\n" -"Last-Translator: Philip Goto \n" -"Language-Team: Dutch \n" -"Language: nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.4-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "Philip Goto https://flipflop97.github.io/" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Account 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Account" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Naam" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Accounttype" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Standaaardtransactietype" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Drempelwaarde voor transactie­herinneringen" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Systeemvaluta" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Aangepaste valuta gebruiken" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Aangepast valutasymbool" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Aangepaste valutacode" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -#, fuzzy -msgid "Custom Currency Amount Style" -msgstr "Aangepast valutasymbool" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Wachtwoord" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Sorteervolgorde" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Groepszichtbaarheid" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Label­zichtbaarheid" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Configuratie 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Configuratie" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Thema" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Standaard­transactiekleur" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Standaard­overdrachtkleur" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Standaard­groepskleur" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Kleur van betaal­rekening" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Kleur van spaar­rekening" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Kleur van bedrijfs­rekening" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Lokale decimale notatie gebruiken" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Decimaal scheidings­teken invoegen" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "CSV-back-up­map" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Importeren/exporteren 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Importeren/exporteren" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formaten importeren" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Nooit" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Dagelijks" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Wekelijks" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Twee­wekelijks" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Maandelijks" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Eén keer per kwartaal" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Jaarlijks" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Twee­jaarlijks" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formaten exporteren" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Hulp voor Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Hulp voor Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Denaro-hulp" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transactie 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transactie" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Omschrijving" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Hoeveelheid" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Type" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Datum" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Herhalingsinterval" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Einddatum herhalen" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Groep" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Kleur" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Tags" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Factuur" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Aantekeningen" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Overdracht 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Overdracht" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" - -#~ msgid "2023" -#~ msgstr "2023" diff --git a/NickvisionMoney.Shared/Docs/po/oc.po b/NickvisionMoney.Shared/Docs/po/oc.po deleted file mode 100644 index 5d1f64c86..000000000 --- a/NickvisionMoney.Shared/Docs/po/oc.po +++ /dev/null @@ -1,943 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: oc\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/pl.po b/NickvisionMoney.Shared/Docs/po/pl.po deleted file mode 100644 index 6db8b0c94..000000000 --- a/NickvisionMoney.Shared/Docs/po/pl.po +++ /dev/null @@ -1,947 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-11-15 13:38+0000\n" -"Last-Translator: Eryk Michalak \n" -"Language-Team: Polish \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.2-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "ewm" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Konto 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Konto" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nazwa" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Rodzaj konta" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Rodzaj domyślnej transakcji" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Częstotliwość przypomnień o transakcji" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Użyj własnej waluty" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Niestandardowy symbol waluty" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Niestandardowy kod waluty" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "$n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n$" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "$ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n $" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Hasło" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Kolejność sortowania" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Widzialność grup" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Widoczność tagów" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Konfiguracja 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Domyślny kolor transakcji" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Domyślny kolor przelewu" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Domyślny kolor grupy" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Kolor konta bieżącego" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Kolor konta oszczędnościowego" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Kolor konta firmowego" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Używaj cyfr rodzimych" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Wstawianie separatora dziesiętnego" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Folder kopii zapasowych CSV" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Import/Eksport 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Import/Eksport" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Formaty importu" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Nigdy" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Codziennie" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Tygodniowo" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Co dwa tygodnie" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Miesięcznie" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Kwartalnie" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Rocznie" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Co dwa lata" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Formaty eksportu" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Pomoc Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Pomoc Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Pomoc Denaro" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Transakcja 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Transakcja" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "Identyfikator (ID)" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Opis" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Kwota" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Rodzaj" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Data" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Interwał powtarzania" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Data końca powtarzania" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Grupa" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Kolor" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Tagi" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Potwierdzenie" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Uwagi" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Przelew 💸" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Przelew" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/pt.po b/NickvisionMoney.Shared/Docs/po/pt.po deleted file mode 100644 index 406722dd2..000000000 --- a/NickvisionMoney.Shared/Docs/po/pt.po +++ /dev/null @@ -1,946 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2024-03-24 18:44+0000\n" -"Last-Translator: ssantos \n" -"Language-Team: Portuguese \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Conta 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Limite de Lembretes de Transação" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Tags" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/pt_BR.po b/NickvisionMoney.Shared/Docs/po/pt_BR.po deleted file mode 100644 index 4842f5286..000000000 --- a/NickvisionMoney.Shared/Docs/po/pt_BR.po +++ /dev/null @@ -1,976 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2024-01-08 06:00+0000\n" -"Last-Translator: Cassio Gomes Pereira \n" -"Language-Team: Portuguese (Brazil) \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.4-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "creditos-aos-tradutores" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Conta 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Conta" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Esta página explica todas as propriedades das contas no Denaro. A " -"maioria deles é mostrada na Caixa de Diálogo de Configurações da Conta. Essa caixa de diálogo também abre automaticamente depois de criar uma " -"nova conta." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Cada conta é armazenada em um único arquivo *.nmoney. Os " -"arquivos criados em uma versão estável mais antiga do Denaro podem ser abertos com segurança em uma versão estável mais " -"recente do aplicativo. Embora, o app possa ser executado em diferentes " -"plataformas (Windows e Linux), os arquivos *.nmoney são 100% " -"compatíveis entre as plataformas, desde que sejam da mesma versão do " -"aplicativo (V2023.1.0, por exemplo)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"As versões instáveis (Beta e RC) do aplicativo podem conter bugs ou " -"modificações inacabadas que podem causar perda de dados. NÃO use arquivos de " -"conta que contêm dados reais em versões instáveis do app!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nome" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"O nome da conta é mostrado na lista de contas recentes e nas abas. Um nome " -"não possui limite de tamanho e pode conter quaisquer caracteres, incluindo " -"emojis." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Tipo de Conta" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Existem 3 tipos de conta disponíveis: 🟣Corrente, 🔵Poupança " -"e 🟢Comercial. O tipo da conta é so um rótulo útil que é mostrado na " -"lista de contas recentes e não afeta o funcionamento do aplicativo ou o que " -"pode ser feito com uma conta. Cada tipo de conta possui sua própria cor. " -"Essas cores podem ser configuradas nas configurações globais." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Tipo Padrão das Transações" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Quando você cria uma nova transação, o seu tipo, por padrão, será o mesmo " -"que nesta configuração." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Limite de Lembretes de Transação" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Moeda do Sistema" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Sempre que o aplicativo é iniciado, ele obtém os dados sobre a moeda e " -"formatação de números do seu sistema e os usa para mostrar o símbolo da " -"moeda (a menos que uma moeda personalizada seja usada. Veja abaixo) e para " -"determinar em que formato os números serão aceitos como valor para as " -"transações. Alguns exemplos:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Tags" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/ro.po b/NickvisionMoney.Shared/Docs/po/ro.po deleted file mode 100644 index ad36963e2..000000000 --- a/NickvisionMoney.Shared/Docs/po/ro.po +++ /dev/null @@ -1,762 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-08-27 17:36+0000\n" -"Last-Translator: Victor Mihalache \n" -"Language-Team: Romanian \n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 -#: yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 -#: yelp/C/index.page:10 -#: yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 -#: yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 -#: yelp/C/index.page:14 -#: yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Nume" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Tipul contului" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "When you create a new transaction its type by default will be the same as in this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "The size of decimal part of amount values. With \"Unlimited\" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "A color that will be used for transactions created using transfer. Changing this will not affect existing transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "A color used to mark accounts with the Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "A color used to mark accounts with the Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "A color used to mark accounts with the Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "This documentation will help you understand how to configure and manage data in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Tranzacție" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Descriere" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Sumă" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Gen" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Data" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Interval de repetare" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Data sfârșitul repetiției" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "End date for a transaction with repeat. It can't be earlier than or on the same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Grupă" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Etichete" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Chitanță" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Note" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/ru.po b/NickvisionMoney.Shared/Docs/po/ru.po deleted file mode 100644 index 51d3e6147..000000000 --- a/NickvisionMoney.Shared/Docs/po/ru.po +++ /dev/null @@ -1,1168 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2023-08-24 10:19+0000\n" -"Last-Translator: Fyodor Sobolev \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.0-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Счёт 🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Фёдор Соболев" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Счёт" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"На этой странице перечислены все свойства счетов в Denaro. " -"Большинство из них отображены в Диалоге настроек счёта. Этот " -"диалог открывается автоматически, когда вы создаёте новый счёт." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" -"Каждый счёт хранится в одном файле *.nmoney. Файлы, созданные в " -"старых стабильных версиях Denaro, могут быть безопасно " -"открыты в более новых стабильных версиях приложения. Приложение " -"поддерживает различные платформы (Windows and Linux), и файлы *." -"nmoney 100% совместимы между платформами, если используется та же " -"версия приложения (например, V2023.1.0)." - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" -"Нестабильные (Beta и RC) версии приложения могут содержать ошибки или " -"незавершённые изменения, который могут привести к потере данных. НЕ " -"ИСПОЛЬЗУЙТЕ файлы счетов, содержащие важные данные, в нестабильных версиях " -"приложения!" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "Имя" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" -"Имя счёта отображается в списке недавних счетов и во вкладках. На количество " -"символов в имени нет ограничения, и оно может содержать любые символы, " -"включая эмодзи." - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "Тип счёта" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" -"Доступно 3 типа счетов: 🟣Расчётный, 🔵Сберегательный и 🟢" -"Бизнес. Тип счёта представляет собой лишь полезную метку, которая " -"отображается в списке недавних счетов, и никак не влияет на работу " -"приложения, не меняет ничего в том, как вы можете использовать счёт. У " -"каждого типа счёта есть свой цвет, цвета можно настроить в глобальной конфигурации." - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "Тип транзакции по умолчанию" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" -"Когда вы создаёте новую транзакцию, её тип по умолчанию будет тем же, что " -"указан этой настройкой." - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "Порог напоминаний для транзакций" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" -"Этот порог используется для отображения напоминаний для грядущих транзакций." - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "Системная валюта" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" -"Каждый раз, когда приложение запускается, оно получает данные о валюте и " -"формате чисел из региональных настроек вашей системы, и эти данные " -"используются для отображения символа валюты (если только вы не указали свою " -"валюту, смотрите ниже), а также для определения того, в каком формате числа " -"будут приниматься в качестве значения суммы для транзакций. Несколько " -"примеров:" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" -"Если ваш регион Английский (США), знак $ будет символом " -"валюты, а 1,000.00 будет приниматься как корректное число." - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" -"Если ваш регион Итальянский, знак будет символом валюты, " -"а 1.000,00 будет приниматься как корректное число." - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" -"Если ваш регион Российский, знак будет символом валюты, " -"а 1000,00 будет приниматься как корректное число." - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" -"В ОС Linux возможно установить разные региональные настройки отдельно для " -"языка и форматов. Способ изменения этих настроек зависит от вашего рабочего " -"окружения. Несмотря на различия в расположении этих настроек, их изменение " -"приводит к модификации системных переменных окружения, таких как LANG (формат языка), LC_TIME (формат дат и времени) и " -"LC_MONETARY (формат чисел и валюты). Denaro " -"попытается использовать форматы для сумм транзакций и дат в соответствии с " -"этими переменными. Если приложение не использует ожидаемые форматы, " -"проверьте корректность значений переменных, используя команду locale в терминале. Если вы нашли ошибку в приложении и хотите сообщить о " -"ней, добавьте вывод команды locale в ваше сообщение, чтобы " -"разработчики смогли воспроизвести ошибку, установив идентичные настройки." - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "Использование своей валюты" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" -"Если эта опция включена, свой Символ валюты будет использоваться " -"вместо символа, предоставленного региональными настройками вашей системы." - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "Свой символ валюты" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "До 3 текстовых символов, либо 1 эмодзи. Не может быть числом." - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "Свой код валюты" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "До 3 текстовых символов, либо 1 эмодзи." - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" -"Пример для понимания разницы между символом и кодом: $ — символ, " -"USD — код." - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "Свой стиль отображения сумм" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "Можно выбрать один из следующих стилей:" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "₽n" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "n₽" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "₽ n" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "n ₽" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "Десятичный разделитель и разделитель групп разрядов" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "До 2 текстовых символов, либо 1 эмодзи." - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "Цифры в дробной части" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" -"Размер дробной части значений сумм. При выборе неограниченного размера будет " -"отображаться столько цифр, сколько необходимо для отображения точного " -"значения, но дробной части не будет, если число целое." - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "Пароль" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" -"Каждый счёт может быть защищён паролем. Добавление пароля делает счёт " -"зашифрованным (доступ к данным невозможно получить, не расшифровав файл с " -"помощью пароля). Будьте осторожны: если вы забудете пароль, вы не сможете " -"восстановить данные! Пароль может быть изменён или удалён в диалоге настроек " -"счёта. Удаление пароля расшифровывает данные." - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "Сортировка по номеру, дате или сумме" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" -"Каждый счёт хранит информацию о том, должны ли транзакции в главном окне " -"быть отсортированы по номеру, дате или сумме. Каждый раз, когда вы меняете " -"сортировку, она сохраняется для открытого счёта и будет восстановлена, когда " -"вы снова откроете этот счёт." - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "Порядок сортировки" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" -"Каждый счёт хранит информацию о том, в каком порядке должны отображаться " -"транзакции в главном окне. Каждый раз, когда вы меняете порядок, он " -"сохраняется для открытого счёта и будет восстановлен, когда вы снова " -"откроете этот счёт." - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "Видимость групп" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Каждый счёт хранит информацию о том, должен ли список групп быть показан в " -"главном окне. Каждый раз, когда вы меняете видимость списка групп, " -"информация об этом сохраняется для открытого счёта и состояние списка групп " -"будет восстановлено, когда вы снова откроете этот счёт." - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "Видимость меток" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" -"Каждый счёт хранит информацию о том, должен ли список меток быть показан в " -"главном окне. Каждый раз, когда вы меняете видимость списка меток, " -"информация об этом сохраняется для открытого счёта и состояние списка меток " -"будет восстановлено, когда вы снова откроете этот счёт." - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "Конфигурация 🔧" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "Конфигурация" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" -"На этой странице перечислены настройки, которые вы можете изменить в " -"конфигурации приложения." - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" -"В зависимости от вашей ОС, в интерфейсе приложения конфигурация называется " -"другим термином: Параметры или Настройки." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "Тема" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" -"Установите, должно ли приложение использовать светлую или тёмную тему, либо " -"следовать настройкам вашей системы. Для применения темы в ОС Windows " -"требуется перезапуск программы." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Цвет транзакции по умолчанию" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" -"Цвет, который будет выбран по умолчанию при создании новой транзакции с собственным цветом. Изменение цвета не " -"затронет существующие транзакции, даже если они используют цвет, который " -"ранее был цветом по умолчанию." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Цвет перевода средств по умолчанию" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" -"Цвет, который будет использован для транзакций, созданных с помощью перевода средств. Изменение цвета не затронет " -"существующие транзакции." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Цвет группы по умолчанию" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" -"Цвет, который будет выбран по умолчанию при создании новой группы. Это также " -"цвет группы «Несгруппированные»." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "Цвет расчётного счёта" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" -"Цвет, которым отмечаются Расчётные счета в списке недавних счетов." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "Цвет сберегательного счёта" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" -"Цвет, которым отмечаются Сберегательные счета в списке недавних счетов." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Цвет бизнес счёта" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" -"Цвет, которым отмечаются Бизнес счета " -"в списке недавних счетов." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Использовать местные цифры" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" -"Должно ли приложение использовать цифры, родные для вашего региона, вместо " -"арабских цифр. Например, если эта настройка включена, ٠١٢ будут " -"отображаться вместо 012 при региональных настройках, которые " -"используют восточные арабские цифры." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "Вставка десятичного разделителя" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" -"Установите, нажатия каких кнопок будут вставлять десятичный разделитель в " -"поля сумм: точка на Numpad, любая точка или запятая, либо можно отключить " -"эту функцию. Если десятичный разделитель уже присутствует в строке, он не " -"будет добавлен." - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "Папка резервных копий CSV" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" -"Папка, в которую ваши данные будут автоматически экспортироваться в формате CSV после каждого изменения. Эта " -"функция не работает для счетов, защищённых паролем, т.к. CSV файлы не могут " -"быть защищены паролем." - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "Импорт/Экспорт 📤" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "Импорт/Экспорт" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "Форматы импорта" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "Даты должны быть в формате ГГГГММДД." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "Даты должны быть в Английском (США) формате (ММ/ДД/ГГГГ)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" -"❗ Хотя CSV является распространённым форматом, и некоторые банки " -"предоставляют возможность своим клиентам экспортировать данные в формате " -"CSV, такие файлы фактически являются таблицами, которые могут содержать " -"произвольные данные. Импорт CSV файла, созданного в другой программе, не " -"удастся, т.к. данные не будут совместимы с тем, что Denaro " -"ожидает получить из файла. Смысл импорта/экспорта CSV в том, чтобы " -"предоставить возможность добавлять новые данные в счёт, используя сторонние " -"программы, например, текстовые редакторы или офисные приложения. При импорте " -"только создаются новые транзакции, существующие не перезаписываются. Если вы " -"хотите создать CSV файл вручную, заголовок таблицы со всеми столбцами, " -"которые Denaro ожидает найти, выглядит следующим образом:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" -"Номер транзакции, должен быть уникальным для данного счёта. Номера " -"начинаются с 1." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" -"Дата транзакции (или дата начала для повторяющейся транзакции), должна быть " -"в Английском (США) формате (ММ/ДД/ГГГГ)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" -"Описание транзакции, может содержать любые символы, кроме точки с запятой." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "Тип транзакции: 0 - доход, 1 - расход." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "Число, соответствующее интервалу повтора транзакции:" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "0 - Никогда" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "1 - Ежедневно" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "2 - Еженедельно" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "7 - Раз в 2 недели" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "3 - Ежемесячно" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "4 - Ежеквартально" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "5 - Ежегодно" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "6 - Раз в два года" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" -"Подробности о повторящихся транзакциях смотрите в описании Интервала " -"Повтора на странице о транзакциях." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" -"Либо номер транзакции-источника, либо 0, если это транзакция-источник, либо " -"-1, если это не повторящаяся транзакция." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" -"Дата окончания повторяющейся транзакции, должна быть в Английском (США) " -"формате (ММ/ДД/ГГГГ). Оставьте это поле пустым, если транзакция не " -"повторяющаяся." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "Сумма транзакции в Английском (США) формате (123,456.78)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Цвет транзакции, должен быть в формате rgb(R,G,B), где R " -"(красный), G (зелёный) и B (синий) — это целые числа в " -"диапазоне от 0 до 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "Должен ли для транзакции использоваться цвет группы: 0 — нет, 1 — да." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" -"Номер группы транзакции. Номера начинаются с 1. Для транзакции без группы " -"укажите -1 (не 0, это некорректное значение для номера группы)." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" -"Имя группы транзакции, должно соответствовать номеру группы. Может содержать " -"любые символы, кроме точки с запятой. Оставьте это поле постым для " -"транзакции без группы, но если транзакция принадлежит к какой-либо группе, " -"имя не должно быть пустым." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" -"Описание группы транзакции, должно соответствовать номеру группы. Может " -"содержать любые символы, кроме точки с запятой, и может быть пустым. " -"Оставьте это поле постым для транзакции без группы." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" -"Цвет группы, должен быть в формате rgb(R,G,B), где R " -"(красный), G (зелёный) и B (синий) — это целые числа в " -"диапазоне от 0 до 255." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "Чек и заметки не присутствуют в формате CSV." - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "Форматы экспорта" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" -"Вы можете выбрать, следует ли экспортировать всю информацию или только из " -"текущего вида. Если выберите текущий вид, отображаемые в данный момент " -"транзакции будут экспортированы в том же порядке, в котором они показаны." - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" -"Файл будет содержать информацию о счёте, список транзакций и изображения " -"чеков. Транзакции окрашены цветами так же, как в приложении, но цвета " -"сделаны полупрозрачными, чтобы на них всегда был отчётливо виден чёрный " -"текст. Вы можете защитить экспортируемый файл паролем." - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "Справка Denaro" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "Справка Denaro" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "<_:media-1/> Справка Denaro" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" -"Эта документация призвана помочь вам понять, как управлять данными в " -"Denaro, чтобы использовать приложение максимально эффективно." - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" -"Для получения дополнительной помощи посетите раздел проблем или обсуждения " -"на Github, либо наш канал в Matrix." - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "Транзакция 🧾" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "Транзакция" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" -"На этой странице перечислены все свойства транзакций в Denaro." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "Номер" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" -"Каждой транзакции присваивается идентификационный номер, уникальный в " -"пределах счёта. Номера начинаются с 1 и увеличиваются с каждой добавленной " -"транзакцией. Номер нельзя изменить, номера удалённых транзакций не " -"используются повторно." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "Описание" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" -"Нет ограничений по длине. Может содержать любые символы, кроме точки с " -"запятой." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "Сумма" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" -"Число в формате, корректном для ваших региональных настроек, для " -"подробностей почитайте о Системной валюте на странице о счетах." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Тип" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" -"Доходы или Расходы. По умолчанию при открытии диалога " -"добавления новой транзакции будет выбран тот тип, что указан в настройках счёта." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "Дата" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" -"Может быть выбрана любая дата, вы также можете создавать транзакции для " -"будущих дат." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Интервал повтора" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" -"Укажите интервал повтора для создания повторяющихся транзакций. После " -"добавления транзакции с интервалом повтора, эта транзакция становится " -"транзакцией-источником. Denaro автоматически сгенерирует " -"транзакции-повторы вплоть до текущего дня, либо до даты окончания " -"повтора, если она в прошлом. Повторы нельзя редактировать и " -"удалять, только источник может быть изменён. Когда вы внесёте " -"изменения в источник, Denaro спросит, хотите ли вы так " -"же изменить повторы, либо же отвязать их. Если вы отвяжете " -"транзакции-повторы, они станут обычными транзакциями, которые можно " -"будет по отдельности редактировать и удалять." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Дата окончания повтора" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" -"Крайняя дата для транзакции с повтором. Она не может быть раньше или в тот " -"же день что и дата начала." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "Группа" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" -"Каждая транзакция может принадлежать только к одной группе, либо быть без " -"группы (т.е. принадлежать к группе «Несгруппированные»)." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "Цвет" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" -"Цвет транзакции. Можно либо использовать цвет группы, либо указать " -"собственный цвет. При выборе собственного цвета, по умолчанию он будет " -"соответствовать цвету, указанному в конфигурации, но он может быть изменён на любой другой цвет." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Метки" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" -"Список меток для транзакции. У транзакции может быть сколько угодно меток (" -"либо не быть меток вовсе). Метки могут содержать любые символы, кроме " -"запятой (,), и у них может быть любая длина, но предполагается " -"что это буду короткие ключевые слова. Метки предназначены для дополнительной " -"фильтрации, когда использования групп недостаточно. Метки сохраняются в " -"самих транзакциях, в результате чего неиспользованные метки исчезают " -"автоматически при закрытии счёта." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "Чек" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" -"Изображение чека транзакции. Вы можете загрузить изображение в формате JPEG " -"или PNG, либо PDF документ, но независимо от формата файл будет " -"конвертирован и сохранён как изображение JPEG. Если вы загрузил PDF, только " -"первая страница будет сохранена. Удалить или загрузить другой файл можно в " -"любой момент." - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "Заметки" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "Текстовая заметка в свободной форме для прикрепления к транзакции." - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "Перевод средств" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "Перевод средств" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" -"Перевод средств — это способ перечислить деньги с одного счёта на другой. " -"После выполнения перевода будут созданы 2 транзакции со следующими " -"описаниями:" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "«Перевод на Имя целевого счёта» на исходном счёте." - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "«Перевод с Имя исходного счёта» на целевом счёте." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" -"Транзакции, созданные с помощью перевода средств, являются простыми " -"транзакциями, которые можно свободно редактировать и удалять. Эти транзакции " -"не связаны: изменение транзакции на исходном счёте не изменит транзакцию на " -"целевом счёте, и наоборот." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" -"Перевод средств не позволяет создавать повторяющиеся транзакции или задавать " -"какие-либо другие свойства, кроме суммы. Цвет, выбранный в конфигурации, будет использован для созданных " -"транзакций." - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" -"Если вы производите перевод средств между счетами с разными валютами, " -"Denaro попросит вас указать обменный курс." diff --git a/NickvisionMoney.Shared/Docs/po/sv.po b/NickvisionMoney.Shared/Docs/po/sv.po deleted file mode 100644 index b3bddc52c..000000000 --- a/NickvisionMoney.Shared/Docs/po/sv.po +++ /dev/null @@ -1,943 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/ta.po b/NickvisionMoney.Shared/Docs/po/ta.po deleted file mode 100644 index 561fc16a2..000000000 --- a/NickvisionMoney.Shared/Docs/po/ta.po +++ /dev/null @@ -1,943 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: ta\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/tr.po b/NickvisionMoney.Shared/Docs/po/tr.po deleted file mode 100644 index 40f06081d..000000000 --- a/NickvisionMoney.Shared/Docs/po/tr.po +++ /dev/null @@ -1,950 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2024-04-21 16:07+0000\n" -"Last-Translator: Ahmed selim üzüm \n" -"Language-Team: Turkish \n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "Hesap🏦" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "Hesap" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" -"Bu sayfa Denaro hesaplarının tüm özelliklerini açıklar. Bu " -"özelliklerin çoğu Hesap Ayarları Diyaloğu içerisinde gösterilir. " -"Bu diyalog ayrıca yeni bir hesap oluşturulduktan sonra otomatik olarak da " -"açılır." - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "İşlem Hatırlatma Eşiği" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "Öntanımlı İşlem Rengi" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "Öntanımlı Aktarım Rengi" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "Öntanımlı Grup Rengi" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "Kurumsal Hesap Rengi" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "Yerel Rakamları Kullan" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "İşlem" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "Tür" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "Tekrarlama Aralığı" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "Tekrarlama Bitiş Tarihi" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "Etiketler" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/ur.po b/NickvisionMoney.Shared/Docs/po/ur.po deleted file mode 100644 index 73d3172e8..000000000 --- a/NickvisionMoney.Shared/Docs/po/ur.po +++ /dev/null @@ -1,943 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: ur\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/po/zh_CN.po b/NickvisionMoney.Shared/Docs/po/zh_CN.po deleted file mode 100644 index 9d483de14..000000000 --- a/NickvisionMoney.Shared/Docs/po/zh_CN.po +++ /dev/null @@ -1,948 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-08-23 18:35-0400\n" -"PO-Revision-Date: 2024-02-02 03:01+0000\n" -"Last-Translator: aerowolf \n" -"Language-Team: Chinese (Simplified) \n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.4-dev\n" - -#. Put one translator per line, in the form NAME , YEAR1, YEAR2 -msgctxt "_" -msgid "translator-credits" -msgstr "" -"翻译者荣誉榜\n" -"Yuanlijie" - -#. (itstool) path: info/title -#: yelp/C/account.page:8 -msgctxt "link" -msgid "Account 🏦" -msgstr "账户" - -#. (itstool) path: credit/name -#: yelp/C/account.page:10 yelp/C/configuration.page:10 -#: yelp/C/import-export.page:10 yelp/C/index.page:10 yelp/C/transaction.page:10 -#: yelp/C/transfer.page:10 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#. (itstool) path: credit/name -#: yelp/C/account.page:14 yelp/C/configuration.page:14 -#: yelp/C/import-export.page:14 yelp/C/index.page:14 yelp/C/transaction.page:14 -#: yelp/C/transfer.page:14 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#. (itstool) path: page/title -#: yelp/C/account.page:20 -msgid "Account" -msgstr "账户" - -#. (itstool) path: page/p -#: yelp/C/account.page:21 -msgid "" -"This page explains all properties of accounts in Denaro. Most of " -"them are shown in Account Settings Dialog. This dialog also opens " -"automatically after you create a new account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/account.page:22 -msgid "" -"Each account is stored in a single *.nmoney file. Files created " -"in an older stable version of Denaro can be safely " -"opened in a more recent stable version of the application. Although " -"the app can run on different platforms (Windows and Linux), the *." -"nmoney files are 100% compatible between platforms as long as they " -"are from the same application version (i.e. V2023.1.0)." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:24 -msgid "" -"Unstable (Beta and RC) versions of the application can contain bugs or " -"unfinished modifications that can cause data loss. DO NOT use account files " -"that contain real data in unstable versions of the app!" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:29 -msgid "Name" -msgstr "名称" - -#. (itstool) path: item/p -#: yelp/C/account.page:30 -msgid "" -"Account name is shown in the list of recent accounts and in tabs. A name " -"doesn't have a length limit and it can contain any characters, including " -"emojis." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:33 -msgid "Account Type" -msgstr "账户类型" - -#. (itstool) path: item/p -#: yelp/C/account.page:34 -msgid "" -"There are 3 account types available: 🟣Checking, 🔵Savings " -"and 🟢Business. Account type is only a useful label that is shown in " -"the list of recent accounts and doesn't affect how the application works or " -"what you can do with an account. Each account type has its own color, these " -"colors can be configured in global settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:37 -msgid "Default Transaction Type" -msgstr "默认的交易类型" - -#. (itstool) path: item/p -#: yelp/C/account.page:38 -msgid "" -"When you create a new transaction its type by default will be the same as in " -"this setting." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:41 -msgid "Transaction Reminders Threshold" -msgstr "交易提醒阈值" - -#. (itstool) path: item/p -#: yelp/C/account.page:42 -msgid "The threshold used when showing reminders about upcoming transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:45 -msgid "System Currency" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:46 -msgid "" -"Every time the application starts, it gets data about currency and numbers " -"formatting from your system locale, and this data is used to show currency " -"symbol (unless custom currency is used, see below) and to determine in what " -"format the numbers will be accepted as values for transaction amounts. A few " -"examples:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:48 -msgid "" -"If your locale is English (US), currency symbol will be set to " -"$ and 1,000.00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:49 -msgid "" -"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:50 -msgid "" -"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." -msgstr "" - -#. (itstool) path: note/p -#: yelp/C/account.page:53 -msgid "" -"On Linux, it is possible to set different locales for system language and " -"formats. Changing these settings varies depending on the desktop environment " -"you are using. Despite differences in the location of these settings on the " -"desktop, changing these settings modify system environment variables, such " -"as LANG, LC_TIME, and LC_MONETARY. " -"Denaro will try to use amount and date formats according to these " -"variables. If the app fails to use the expected formats, please make sure " -"the variables are set correctly via the locale command in a " -"terminal. If you found a bug and want to report it, please provide the " -"output of the locale command to allow developers to reproduce " -"your issue with the same settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:57 -msgid "Use Custom Currency" -msgstr "使用自定义货币" - -#. (itstool) path: item/p -#: yelp/C/account.page:58 -msgid "" -"If this option is enabled, Custom Currency Symbol will be used " -"instead of currency symbol provided by your system locale." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:61 -msgid "Custom Currency Symbol" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:62 -msgid "Up to 3 characters or 1 emoji. It can't be a number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:65 -msgid "Custom Currency Code" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:66 -msgid "Up to 3 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:67 -msgid "" -"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:70 -msgid "Custom Currency Amount Style" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:71 -msgid "A choice of displaying an amount in one of the following ways:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:73 -msgid "$n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:74 -msgid "n$" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:75 -msgid "$ n" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:76 -msgid "n $" -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:80 -msgid "Custom Currency Decimal and Group Separators" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:81 -msgid "Up to 2 characters or 1 emoji." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:84 -msgid "Custom Currency Decimal Digits" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:85 -msgid "" -"The size of decimal part of amount values. With \"Unlimited\" digits there " -"will be as many numbers in decimal part as required to show the precise " -"amount, but there will be no decimal part if the amount is an integer number." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:88 -msgid "Password" -msgstr "密码" - -#. (itstool) path: item/p -#: yelp/C/account.page:89 -msgid "" -"Each account can be password-protected. Adding a password causes an account " -"to become encrypted (making it impossible to read the data without " -"decrypting it using the password). Be careful: if the password is lost, you " -"won't be able to restore the data! A password can also be changed or removed " -"using the account settings dialog of an open account. Removing a password " -"will decrypt the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:92 -msgid "Sort by Id, Date or Amount" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:93 -msgid "" -"Each account stores whether to sort transactions in the main window by their " -"id, date or amount. Every time you change this, it will be saved to the " -"account file and restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:96 -msgid "Sorting Order" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:97 -msgid "" -"Each account stores information about the order of transactions in the main " -"window. Every time you change this, it will be saved to the account file and " -"restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:100 -msgid "Groups Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:101 -msgid "" -"Each account stores information about whether the groups list in the main " -"window is hidden or not. Every time you change groups list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/account.page:104 -msgid "Tags Visibility" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/account.page:105 -msgid "" -"Each account stores information about whether the tags list in the main " -"window is hidden or not. Every time you change tags list visibility, it's " -"saved and then restored when you reopen the account." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/configuration.page:8 -msgctxt "link" -msgid "Configuration 🔧" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/configuration.page:20 -msgid "Configuration" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:21 -msgid "" -"This page describes what you can change in the application configuration." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/configuration.page:22 -msgid "" -"Depending on your platform, in the application interface the configuration " -"is referred as either Preferences or Settings." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:25 -msgid "Theme" -msgstr "主题" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:26 -msgid "" -"Set light or dark theme, or make Denaro follow your system theme. " -"Changing this on Windows requires the application restart to apply." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:29 -msgid "Transaction Default Color" -msgstr "默认交易颜色" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:30 -msgid "" -"A color that will be selected by default when adding a new transaction with unique color. Changing this will not " -"affect existing transactions, even if they use previously selected default " -"color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:33 -msgid "Transfer Default Color" -msgstr "默认转账颜色" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:34 -msgid "" -"A color that will be used for transactions created using transfer. Changing this will not affect existing " -"transactions." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:37 -msgid "Group Default Color" -msgstr "群组默认颜色" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:38 -msgid "" -"A color that will be selected by default when adding a new group. This is " -"also a color for «Ungrouped» group." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:41 -msgid "Checking Account Color" -msgstr "支票账户颜色" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:42 -msgid "" -"A color used to mark accounts with the " -"Checking type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:45 -msgid "Savings Account Color" -msgstr "储蓄账户颜色" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:46 -msgid "" -"A color used to mark accounts with the " -"Savings type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:49 -msgid "Business Account Color" -msgstr "商务账户颜色" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:50 -msgid "" -"A color used to mark accounts with the " -"Business type in a recent accounts list." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:53 -msgid "Use Native Digits" -msgstr "使用原生数字" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:54 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits. For example, if this setting is enabled ٠١٢ will be used " -"instead of 012 for locales that use Eastern Arabic numerals." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:57 -msgid "Insert Decimal Separator" -msgstr "插入十进制分隔符" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:58 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field: numpad period, any period and comma, or none. If " -"decimal separator is already presented in a field, it will not be inserted." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/configuration.page:61 -msgid "CSV Backup Folder" -msgstr "CVS备份文件夹" - -#. (itstool) path: item/p -#: yelp/C/configuration.page:62 -msgid "" -"A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for " -"password-protected accounts, because CSV files can't be password-protected." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/import-export.page:8 -msgctxt "link" -msgid "Import/Export 📤" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/import-export.page:20 -msgid "Import/Export" -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:22 -msgid "Import Formats" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:26 -msgid "Dates should be in YYYYMMDD format." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:30 -msgid "Dates should be in English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:34 -msgid "" -"❗ While CSV is a common format and some banks allow their users to export " -"information as CSV, these files are in fact tables that can contain " -"arbitrary data. Importing a CSV file created in other program will fail, " -"because its data will not be compatible with what Denaro tries to " -"get from a file. The purpose of CSV import/export is to provide a way to add " -"data to an account using external programs such as text editors and office " -"suites. Import will only add new transactions without overriding existing " -"ones. If you want to create a CSV file manually, this is the header that " -"includes all columns Denaro expects to find:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:39 -msgid "Transaction Id, should be unique for a given account. Ids start with 1." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:43 -msgid "" -"Transaction date (or start date in case of repeat transaction), should be in " -"English (US) format (MM/DD/YYYY)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:47 -msgid "" -"Transaction description, it can contain any characters except semicolon." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:51 -msgid "Transaction type: 0 for income, 1 for expense." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:55 -msgid "A number representing transaction repeat interval:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:56 -msgid "0 - Never" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:57 -msgid "1 - Daily" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:58 -msgid "2 - Weekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:59 -msgid "7 - Biweekly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:60 -msgid "3 - Monthly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:61 -msgid "4 - Quarterly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:62 -msgid "5 - Yearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:63 -msgid "6 - Biyearly" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:64 -msgid "" -"See Repeat Interval in transaction page for details about repeat transactions." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:68 -msgid "" -"Should be either an Id of source transaction or 0 if it's a source " -"transaction or -1 if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:72 -msgid "" -"End date for repeat transaction, should be in English (US) format (MM/DD/" -"YYYY). Leave it empty if it's not repeat transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:76 -msgid "Transaction amount in English (US) format (123,456.78)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:80 -msgid "" -"Transaction color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:84 -msgid "Whether a transaction should use group color: 0 — false, 1 — true." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:88 -msgid "" -"Transaction's group Id. Ids start with 1. For ungrouped transaction it " -"should be -1 (not 0, this is incorrect value for group Id)." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:92 -msgid "" -"Transaction's group name, should match group Id. It can contain any " -"characters except semicolon. Leave it empty for ungrouped transaction, in " -"any other cases it shouldn't be empty." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:96 -msgid "" -"Transaction's group description, should match group Id. It can contain any " -"characters except semicolon and can be empty. Leave it empty for ungrouped " -"transaction." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:100 -msgid "" -"Group color, should be in rgb(R,G,B) format where R, " -"G and B are integers in range between 0 and 255." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:103 -msgid "Receipt and notes are not present in CSV." -msgstr "" - -#. (itstool) path: div/title -#: yelp/C/import-export.page:108 -msgid "Export Formats" -msgstr "" - -#. (itstool) path: div/p -#: yelp/C/import-export.page:109 -msgid "" -"You can select whether to export all information or only from the current " -"view. If you select the current view, currently displayed transactions will " -"be exported in the same order in which they are shown." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/import-export.page:113 -msgid "" -"A file will contain an account information, a list of transactions and " -"images of receipts. Transactions are colored like in the application, but " -"colors are modified by making them half-transparent in order to make black " -"text always clearly visible. You can set a password for an exported file." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:7 -msgctxt "link" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/index.page:8 -msgctxt "text" -msgid "Denaro Help" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/index.page:20 -msgid "<_:media-1/> Denaro Help" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:21 -msgid "" -"This documentation will help you understand how to configure and manage data " -"in Denaro to get the most of the application." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/index.page:22 -msgid "" -"To get support, use issues or discussions on Github, or join our Matrix channel." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transaction.page:8 -msgctxt "link" -msgid "Transaction 🧾" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transaction.page:20 -msgid "Transaction" -msgstr "交易" - -#. (itstool) path: page/p -#: yelp/C/transaction.page:21 -msgid "This page explains all properties of transactions in Denaro." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:25 -msgid "Id" -msgstr "ID" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:26 -msgid "" -"Each transaction has an Id that is unique for a given account. Ids start " -"with 1 and increase for every transaction added. Ids can't be changed, ids " -"of removed transactions are not reused." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:29 -msgid "Description" -msgstr "描述" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:30 -msgid "No limit on length. It can't contain semicolon." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:33 -msgid "Amount" -msgstr "金额" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:34 -msgid "" -"A number in a format that is valid for your locale, see System Currency in Account page for details." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:37 -msgid "Type" -msgstr "类型" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:38 -msgid "" -"Income or Expense. By default the one chosen in account settings will be selected when you open a dialog " -"to add new transaction." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:41 -msgid "Date" -msgstr "日期" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:42 -msgid "" -"Any date can be selected, you can also create transactions for future dates." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:45 -msgid "Repeat Interval" -msgstr "重复间隔" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:46 -msgid "" -"Use this option to create a recurring transaction. After you add transaction " -"with repeat interval, this transaction will become a source " -"transaction. Denaro will automatically generate repeat " -"transactions for the dates up until today or a provided end date if set in " -"the past. Repeat transactions can't be edited or deleted, only " -"source can be modified. When you modify source transaction " -"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " -"transactions become normal transactions and can be edited or deleted " -"separately." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:49 -msgid "Repeat End Date" -msgstr "重复结束日期" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:50 -msgid "" -"End date for a transaction with repeat. It can't be earlier than or on the " -"same day as start date." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:53 -msgid "Group" -msgstr "群组" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:54 -msgid "" -"Each transaction can belong to only one group or none («Ungrouped» group)." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:57 -msgid "Color" -msgstr "顏色" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:58 -msgid "" -"A color for transaction. Can be set to use either a group color or a unique " -"color. When selecting unique color, it will be set by default to the color " -"selected in configuration, but can be " -"changed to any color." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:61 -msgid "Tags" -msgstr "标签" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:62 -msgid "" -"A list of tags for transaction. A transaction can have unlimited number of " -"tags (or have no tags). Tags can contain any characters except comma (," -"), and have any length, but they are expected to be short keywords. " -"Tags are meant to be used for additional filtering when using groups is not " -"enough. Tags are only saved in transactions themselves, and as result unused " -"tags disappear automatically on account closing." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:65 -msgid "Receipt" -msgstr "收据" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:66 -msgid "" -"An image of a receipt for transaction. You can upload JPEG or PNG image or " -"PDF document, but no matter the format it will be converted and saved as " -"JPEG image. In case of PDF, only the first page will be saved. You can " -"delete or upload another file anytime." -msgstr "" - -#. (itstool) path: item/title -#: yelp/C/transaction.page:69 -msgid "Notes" -msgstr "注释" - -#. (itstool) path: item/p -#: yelp/C/transaction.page:70 -msgid "A freeform text note to attach to transaction." -msgstr "" - -#. (itstool) path: info/title -#: yelp/C/transfer.page:8 -msgctxt "link" -msgid "Transfer 💸" -msgstr "" - -#. (itstool) path: page/title -#: yelp/C/transfer.page:20 -msgid "Transfer" -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:21 -msgid "" -"Transfer is a way to move money from one account to another. After running a " -"transfer 2 transactions will be created with the following descriptions:" -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:24 -msgid "" -"«Transfer to Destination Account Name» on source account." -msgstr "" - -#. (itstool) path: item/p -#: yelp/C/transfer.page:27 -msgid "" -"«Transfer from Source Account Name» on destination account." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:30 -msgid "" -"Transactions created using transfer are simple transactions that can be " -"freely edited or deleted. These transactions are not connected: modifying " -"transaction on source account will not affect transaction on destination " -"account, and vice versa." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:31 -msgid "" -"Transfer doesn't allow you to create repeating transactions or set any " -"properties other than the amount. The color selected in configuration will be used for created transactions." -msgstr "" - -#. (itstool) path: page/p -#: yelp/C/transfer.page:32 -msgid "" -"If you create a transfer between accounts with different currencies, you " -"will be asked to provide a conversion rate." -msgstr "" diff --git a/NickvisionMoney.Shared/Docs/yelp/C/configuration.page b/NickvisionMoney.Shared/Docs/yelp/C/configuration.page deleted file mode 100644 index d8109ead7..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/C/configuration.page +++ /dev/null @@ -1,65 +0,0 @@ - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
\ No newline at end of file diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/configuration.page b/NickvisionMoney.Shared/Docs/yelp/ar/configuration.page deleted file mode 100644 index 4a4554e37..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/ar/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - اللون المبدئيُّ للمعاملات -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - اللون المبدئيُّ للتحويلات -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - اللون المبدئيُّ للمجموعات -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - لون حساب الأعمال -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - استخدم أرقام اللغة -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/configuration.page b/NickvisionMoney.Shared/Docs/yelp/cs/configuration.page deleted file mode 100644 index dec8c6fe6..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/cs/configuration.page +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Nastavení 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

- - - Jonáš Loskot - jonas.loskot@pm.me - 2023 - -
- -Nastavení -

Na této stránce je popsáno, co můžete změnit v nastavení aplikace.

-

V závislosti na platformě je konfigurace v rozhraní aplikace označena jako Předvolby nebo Nastavení.

- - - Motiv -

Nastavte si světlý nebo tmavý motiv, nebo nastavte, aby Denaro následovalo váš systémový motiv. Změna tohoto nastavení v systému Windows vyžaduje restart aplikace, aby se uplatnila.

-
- - Výchozí barva transakce -

Barva, která bude vybrána jako výchozí při přidání nové transakce s jedinečnou barvou. Její změna neovlivní existující transakce, i když používají dříve zvolenou výchozí barvu.

-
- - Výchozí barva převodu -

Barva, která bude použita pro transakce vytvořené pomocí převodu . Změna tohoto parametru neovlivní existující transakce.

-
- - Výchozí barva skupiny -

Barva, která bude ve výchozím nastavení vybrána při přidávání nové skupiny. Je to také barva pro skupinu „Neseskupené“.

-
- - Barva běžného účtu -

Barva používaná k označení účtů s typem Běžný v seznamu nedávných účtů.

-
- - Barva spořicího účtu -

Barva používaná k označení účtů s typem Spořicí v seznamu nedávných účtů.

-
- - Barva firemního účtu -

Barva používaná k označení účtů s typem Firemní v seznamu nedávných účtů.

-
- - Použít nativní číslice -

Nastavení, zda se mají místo latinských číslic používat číslice, které jsou pro vaši oblast přirozené. Pokud je toto nastavení povoleno, bude například ٠١٢ použito místo 012 pro lokality, které používají východoarabské číslice.

-
- - Vložení desetinného oddělovače -

Nastavení, pro které stisknuté klávesy se do pole částky vloží desetinný oddělovač lokálního jazyka: tečka na numerickém bloku, libovolná tečka a čárka nebo žádný. Pokud již je desetinný oddělovač v poli, nebude vložen.

-
- - Složka zálohy CSV -

Složka, do které budou vaše data po každé změně automaticky exportována jako soubor CSV. Tato funkce nefunguje pro účty chráněné heslem, protože soubory CSV nelze chránit heslem.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/da/configuration.page b/NickvisionMoney.Shared/Docs/yelp/da/configuration.page deleted file mode 100644 index eeb3b6ef9..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/da/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/de/configuration.page b/NickvisionMoney.Shared/Docs/yelp/de/configuration.page deleted file mode 100644 index e2fe81fc8..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/de/configuration.page +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Konfiguration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

- - - Jummit - jummit@web.de - 2023 - -
- -Konfiguration -

Diese Seite beschreibt, was Sie in der Anwendungskonfiguration ändern können.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Thema -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Standardfarbe für Überweisungen -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Standardfarbe der Gruppe -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Geschäftskontofarbe -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Native Ziffern verwenden -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Dezimaltrennzeichen einfügen -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV-Sicherungsordner -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/es/configuration.page b/NickvisionMoney.Shared/Docs/yelp/es/configuration.page deleted file mode 100644 index 2786082f3..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/es/configuration.page +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Configuración 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

- - - Óscar Fernández Díaz - oscfdezdz@tuta.io - 2023 - -
- -Configuración -

Esta página describe lo que puede cambiar en la configuración de la aplicación.

-

Dependiendo de su plataforma, en la interfaz de la aplicación, la configuración se denomina Preferencias o Configuración.

- - - Tema -

Establezca un tema claro u oscuro, o haga que Denaro siga el tema de su sistema. Cambiar esto en Windows requiere que se reinicie la aplicación para aplicar.

-
- - Color de transacción predeterminado -

Un color que se seleccionará por defecto al agregar una transacción nueva con color único. Cambiar esto no afectará las transacciones existentes, incluso si usa el color predeterminado seleccionado previamente.

-
- - Color predeterminado de la transferencia -

Un color que se usará para transacciones creadas usando transferencia. Cambiar esto no afectará las transacciones existentes.

-
- - Color predeterminado del grupo -

Color que se seleccionará por defecto al añadir un grupo nuevo. También es un color para el grupo "No agrupado".

-
- - Color de la cuenta corriente -

Color usado para marcar cuentas con el tipo Corriente en una lista de cuentas recientes.

-
- - Color de la cuenta de ahorros -

Color usado para marcar cuentas con el tipo Ahorros en una lista de cuentas recientes.

-
- - Color de la cuenta de la empresa -

Color usado para marcar cuentas con el tipo Empresas en una lista de cuentas recientes.

-
- - Usar dígitos nativos -

Si usar numerales que son nativos para su localización en lugar de dígitos latinos. Por ejemplo, si esta opción está activada ٠١٢ se usará en lugar de 012 para las localizaciones que usan numerales arábigos orientales.

-
- - Insertar separador decimal -

Establece para qué teclas pulsadas se insertará el separador decimal de la configuración regional en un campo de importe: punto del teclado numérico, cualquier punto y coma, o ninguno. Si el separador decimal ya aparece en un campo, no se insertará.

-
- - Carpeta de copia de seguridad CSV -

Una carpeta donde sus datos se exportarán a CSV después de cada cambio. Esta función no funciona con cuentas protegidas con contraseña, ya que los archivos CSV no pueden protegerse con contraseña.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/et/configuration.page b/NickvisionMoney.Shared/Docs/yelp/et/configuration.page deleted file mode 100644 index ca6cccc09..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/et/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/configuration.page b/NickvisionMoney.Shared/Docs/yelp/fi/configuration.page deleted file mode 100644 index 1371fcbc7..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/fi/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/configuration.page b/NickvisionMoney.Shared/Docs/yelp/fr/configuration.page deleted file mode 100644 index 7eadbd9d0..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/fr/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

Cette page décrit ce que vous pouvez modifier dans la configuration de l’application.

-

Dépendant de votre plateforme, la configuration apparaît dans l’interface de l’application sous le vocable Préférences ou Paramètres.

- - - Thème -

Définissez un thème sombre ou clair, ou faites en sorte que Denaro suive celui du système. Le changement de ce paramètre sous Windows requiert un redémarrage de l’application.

-
- - Couleur par défaut des transactions -

Une couleur qui sera sélectionnée par défaut lors de l’ajout d’une nouvelle transaction avec une couleur unique. Changer ce paramètre n’affectera pas les transactions existantes, même si elles utilisaient la couleur par défaut précédemment sélectionnée.

-
- - Couleur par défaut des transferts -

Une couleur qui sera utilisée pour les transactions créées par un transfert. Changer ce paramètre n’affectera pas les transactions existantes.

-
- - Couleur de groupe par défaut -

Couleur sélectionnée par défaut lorsqu’un nouveau groupe sera ajouté. C’est également la couleur du groupe « Sans groupe ».

-
- - Couleur des comptes de chèques -

Couleur utilisée pour marquer les comptes avec le type Chèques dans une liste des comptes récents.

-
- - Couleur des comptes d’épargne -

Couleur utilisée pour marquer les comptes avec le type Épargne dans une liste des comptes récents.

-
- - Couleur du compte d’affaires -

Couleur utilisée pour marquer les comptes avec le type affaires dans une liste des comptes récents.

-
- - Utiliser des chiffres natifs -

Indique s’il faut utiliser des chiffres natifs de votre langue à la place de chiffres latins. Par exemple, si ce paramètre est activé ٠١٢ sera utilisé à la place de 012 pour les langues locales utilisant des chiffres de l’arabe oriental.

-
- - Insérer un séparateur de décimales -

Définissez pour quelles touches pressées le séparateur décimal de la langue locale sera inséré lors de la saisie d’un montant : point du pavé numérique, n’importe quel point ou virgule du clavier, ou aucune. Si le séparateur des décimales est déjà présent dans le champ de saisie, il ne sera pas inséré.

-
- - Dossier de sauvegarde CSV -

Un dossier où vos données seront automatiquement exportées au format CSV après chaque modification. Cette fonctionnalité ne fonctionne pas pour les comptes protégés par mot de passe, car les fichiers CSV ne peuvent être protégés par un mot de passe.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/configuration.page b/NickvisionMoney.Shared/Docs/yelp/gl/configuration.page deleted file mode 100644 index 3236601bf..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/gl/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/account.page b/NickvisionMoney.Shared/Docs/yelp/hi/account.page deleted file mode 100644 index a2a2ddb7b..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hi/account.page +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Account 🏦 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Account -

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

- -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
- - - - Name -

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
- - Account Type -

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
- - Default Transaction Type -

When you create a new transaction its type by default will be the same as in this setting.

-
- - Transaction Reminders Threshold -

The threshold used when showing reminders about upcoming transactions.

-
- - System Currency -

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

- -

If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

-

If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

-

If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

-
- -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
- - Use Custom Currency -

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
- - Custom Currency Symbol -

Up to 3 characters or 1 emoji. It can't be a number.

-
- - Custom Currency Code -

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
- - Custom Currency Amount Style -

A choice of displaying an amount in one of the following ways:

- -

$n

-

n$

-

$ n

-

n $

-
-
- - Custom Currency Decimal and Group Separators -

Up to 2 characters or 1 emoji.

-
- - Custom Currency Decimal Digits -

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
- - Password -

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
- - Sort by Id, Date or Amount -

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
- - Sorting Order -

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
- - Groups Visibility -

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
- - Tags Visibility -

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/configuration.page b/NickvisionMoney.Shared/Docs/yelp/hi/configuration.page deleted file mode 100644 index 3123602b3..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hi/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/import-export.page b/NickvisionMoney.Shared/Docs/yelp/hi/import-export.page deleted file mode 100644 index 5ff090433..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hi/import-export.page +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Import/Export 📤 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Import/Export -
- Import Formats - - -

Open Financial Exchange (.ofx)

-

Dates should be in YYYYMMDD format.

-
- -

Quicken Interchange Format (.qif)

-

Dates should be in English (US) format (MM/DD/YYYY).

-
- -

Denaro CSV (.csv)

-

❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

-

ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

- - - ID -

Transaction Id, should be unique for a given account. Ids start with 1.

-
- - Date -

Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

-
- - Description -

Transaction description, it can contain any characters except semicolon.

-
- - Type -

Transaction type: 0 for income, 1 for expense.

-
- - RepeatInterval -

A number representing transaction repeat interval:

-

0 - Never

-

1 - Daily

-

2 - Weekly

-

7 - Biweekly

-

3 - Monthly

-

4 - Quarterly

-

5 - Yearly

-

6 - Biyearly

-

See Repeat Interval in transaction page for details about repeat transactions.

-
- - RepeatFrom -

Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

-
- - RepeatEndDate -

End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

-
- - Amount -

Transaction amount in English (US) format (123,456.78).

-
- - RGBA -

Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

-
- - UseGroupColor -

Whether a transaction should use group color: 0 — false, 1 — true.

-
- - Group -

Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

-
- - GroupName -

Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

-
- - GroupDescription -

Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

-
- - GroupRGBA -

Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

-
-
-

Receipt and notes are not present in CSV.

-
-
-
-
- Export Formats -

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

- - -

Portable Document Format (.pdf)

-

A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

-
- -

Denaro CSV (.csv)

-
-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/index.page b/NickvisionMoney.Shared/Docs/yelp/hi/index.page deleted file mode 100644 index 1edd79caf..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hi/index.page +++ /dev/null @@ -1,20 +0,0 @@ - - - - Denaro Help - Denaro Help - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -<media its:translate="no" type="image" src="figures/denaro.png"/> Denaro Help -

This documentation will help you understand how to configure and manage data in Denaro to get the most of the application.

-

To get support, use issues or discussions on Github, or join our Matrix channel.

-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/transaction.page b/NickvisionMoney.Shared/Docs/yelp/hi/transaction.page deleted file mode 100644 index 7f9fdaf89..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hi/transaction.page +++ /dev/null @@ -1,70 +0,0 @@ - - - - - Transaction 🧾 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Transaction -

This page explains all properties of transactions in Denaro.

- - - - Id -

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

-
- - Description -

No limit on length. It can't contain semicolon.

-
- - Amount -

A number in a format that is valid for your locale, see System Currency in Account page for details.

-
- - Type -

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

-
- - Date -

Any date can be selected, you can also create transactions for future dates.

-
- - Repeat Interval -

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

-
- - Repeat End Date -

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

-
- - Group -

Each transaction can belong to only one group or none («Ungrouped» group).

-
- - Color -

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

-
- - Tags -

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

-
- - Receipt -

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

-
- - Notes -

A freeform text note to attach to transaction.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/transfer.page b/NickvisionMoney.Shared/Docs/yelp/hi/transfer.page deleted file mode 100644 index de0f56d67..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hi/transfer.page +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Transfer 💸 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Transfer -

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

- - -

«Transfer to Destination Account Name» on source account.

-
- -

«Transfer from Source Account Name» on destination account.

-
-
-

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

-

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

-

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

-
diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/configuration.page b/NickvisionMoney.Shared/Docs/yelp/hr/configuration.page deleted file mode 100644 index cccc2d9d9..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/hr/configuration.page +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Konfiguracija 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

- - - Milo Ivir - mail@milotype.de - 2023 - -
- -Konfiguracija -

Ova stranica opisuje što možeš promijeniti u konfiguraciji aplikacije.

-

Ovisno o platformi, u sučelju aplikacije se konfiguracija zove Osobitosti ili Postavke.

- - - Tema -

Postavi svijetlu ili tamnu temu ili neka Denaro slijedi temu tvog sustava. Za primjenu promjene teme u Windows sustavu zahtijeva ponovno pokretanje aplikacije.

-
- - Standardna boja transakcija -

Standardna boja prilikom dodavanja nove transakcije s jedinstvenom bojom. Mijenjanje boje neće utjecati na postojeće transakcije, čak i ako koriste prethodno odabranu standardnu boju.

-
- - Standardna boja transfera -

Standardna boja za transakcije stvorene pomoću transfera. Mijenjanje boje neće utjecati na postojeće transakcije.

-
- - Standardna boja grupa -

Standardna boja prilikom dodavanja nove grupe. Koristi se i za „negrupirane” grupe.

-
- - Boja žiro računa -

Boja za označavanje računa vrste žiro račun u popisu nedavnih računa.

-
- - Boja štednog računa -

Boja za označavanje računa vrste štedni račun u popisu nedavnih računa.

-
- - Boja poslovnog računa -

Boja za označavanje računa vrste poslovni račun u popisu nedavnih računa.

-
- - Koristi brojke jezika -

Da li umjesto arapskih brojki koristiti brojke tvog tvoje jezičnog područja. Na primjer, ako je ova postavka deaktivirana, umjesto 012 će se koristiti ٠١٢ za jezična područja koja koriste istočnoarapske brojeve.

-
- - Umetni decimalni znak -

Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa: točka na numeričkoj tipkovnici, bilo koja točka i zarez ili ništa. Ako decimalni znak već postoji u polju onda se on neće umetnuti.

-
- - Mapa sigurnosnih kopija u CSV formatu -

Mapa u kojoj će se tvoji podaci automatski izvesti u CSV datoteku nakon svake promjene. Ova funkcija ne radi za račune koji su zaštićeni lozinkom jer CSV datoteke ne mogu biti zaštićene lozinkom.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/id/configuration.page b/NickvisionMoney.Shared/Docs/yelp/id/configuration.page deleted file mode 100644 index 759eda4f6..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/id/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Gunakan Digit Bawaan -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/it/configuration.page b/NickvisionMoney.Shared/Docs/yelp/it/configuration.page deleted file mode 100644 index 3eac9070a..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/it/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configurazione 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configurazione -

Questa pagina descrive cosa è possibile cambiare nella configurazione dell'applicazione.

-

A seconda della propria piattaforma, è possibile trovare la configurazione nell'interfaccia dell'applicazione sotto Preferenze oppure Impostazioni.

- - - Stile -

Impostare lo stile chiaro o scuro, oppure dire a Denaro di seguire lo stile di sistema. Cambiare lo stile su Windows richiede il riavvio dell'applicazione per applicare le modifiche.

-
- - Colore predefinito delle transazioni -

Un colore che verrà selezionato inizialmente all'aggiunta di una nuova transazione con colore speciale. Cambiare questo colore non avrà effetto sulle transazioni esistenti, anche se usavano un colore predefinito precedentemente selezionato.

-
- - Colore predefinito dei trasferimenti -

Un colore che verrà usato per le transazioni create usando i trasferimenti. Cambiare questo colore non avrà effetto sulle transazioni esistenti.

-
- - Colore dei gruppi predefinito -

Un colore che verrà selezionato inizialmente all'aggiunta di un nuovo gruppo. È anche il colore per il gruppo «Senza gruppo».

-
- - Colore dei conti correnti -

Un colore usato per contrassegnare i conti del tipo conto corrente nella lista dei conti recenti.

-
- - Colore dei conti deposito -

Un colore usato per contrassegnare i conti del tipo conto deposito nella lista dei conti recenti.

-
- - Colore dei conti aziendali -

Un colore usato per contrassegnare i conti del tipo conto azientale nella lista dei conti recenti.

-
- - Usa cifre native -

Se usare delle cifre che sono native della propria regione anziché quelle latine. Per esempio, per sistemi che usano i numeri indo-arabi, se questa opzione è attiva verrà usato ٠١٢ invece di 012.

-
- - Inserimento separatore decimale -

Imposta per quali tasti, quando premuti, verrà inserito al loro posto il separatore decimale durante la digitazione di un importo: il punto del tastierino numerico, un punto qualsiasi e una virgola, o nessuno di essi. Se il separatore decimale è già presente nel campo di inserimento, non verrà inserito nuovamente.

-
- - Cartella di backup in CSV -

Una cartella in cui i propri dati verranno automaticamente esportati in formato CSV dopo ogni modifica. Questa funzionalità non è attiva per i file protetti da password, poiché i file CSV non possono essere protetti in tale modo.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/configuration.page b/NickvisionMoney.Shared/Docs/yelp/ja/configuration.page deleted file mode 100644 index 394557cd4..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/ja/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - テーマ -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/configuration.page b/NickvisionMoney.Shared/Docs/yelp/nl/configuration.page deleted file mode 100644 index fa3692118..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/nl/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuratie 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuratie -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Thema -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Standaard­transactiekleur -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Standaard­overdrachtkleur -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Standaard­groepskleur -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Kleur van betaal­rekening -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Kleur van spaar­rekening -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Kleur van bedrijfs­rekening -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Lokale decimale notatie gebruiken -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Decimaal scheidings­teken invoegen -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV-back-up­map -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/configuration.page b/NickvisionMoney.Shared/Docs/yelp/oc/configuration.page deleted file mode 100644 index 0cb36a9c9..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/oc/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/configuration.page b/NickvisionMoney.Shared/Docs/yelp/pl/configuration.page deleted file mode 100644 index b16298f8c..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/pl/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Konfiguracja 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Domyślny kolor transakcji -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Domyślny kolor przelewu -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Domyślny kolor grupy -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Kolor konta bieżącego -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Kolor konta oszczędnościowego -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Kolor konta firmowego -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Używaj cyfr rodzimych -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Wstawianie separatora dziesiętnego -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - Folder kopii zapasowych CSV -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/account.page b/NickvisionMoney.Shared/Docs/yelp/pt/account.page deleted file mode 100644 index 14e6660fc..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/pt/account.page +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Conta 🏦 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Account -

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

- -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
- - - - Name -

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
- - Account Type -

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
- - Default Transaction Type -

When you create a new transaction its type by default will be the same as in this setting.

-
- - Transaction Reminders Threshold -

The threshold used when showing reminders about upcoming transactions.

-
- - System Currency -

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

- -

If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

-

If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

-

If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

-
- -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
- - Use Custom Currency -

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
- - Custom Currency Symbol -

Up to 3 characters or 1 emoji. It can't be a number.

-
- - Custom Currency Code -

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
- - Custom Currency Amount Style -

A choice of displaying an amount in one of the following ways:

- -

$n

-

n$

-

$ n

-

n $

-
-
- - Custom Currency Decimal and Group Separators -

Up to 2 characters or 1 emoji.

-
- - Custom Currency Decimal Digits -

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
- - Password -

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
- - Sort by Id, Date or Amount -

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
- - Sorting Order -

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
- - Groups Visibility -

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
- - Tags Visibility -

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/configuration.page b/NickvisionMoney.Shared/Docs/yelp/pt/configuration.page deleted file mode 100644 index c1ebe6411..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/pt/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/configuration.page b/NickvisionMoney.Shared/Docs/yelp/pt_BR/configuration.page deleted file mode 100644 index 1b9f7da2c..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/pt_BR/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/configuration.page b/NickvisionMoney.Shared/Docs/yelp/ro/configuration.page deleted file mode 100644 index c6d867829..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/ro/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/configuration.page b/NickvisionMoney.Shared/Docs/yelp/ru/configuration.page deleted file mode 100644 index 97b4dd682..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/ru/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Конфигурация 🔧 - - Фёдор Соболев - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Конфигурация -

На этой странице перечислены настройки, которые вы можете изменить в конфигурации приложения.

-

В зависимости от вашей ОС, в интерфейсе приложения конфигурация называется другим термином: Параметры или Настройки.

- - - Тема -

Установите, должно ли приложение использовать светлую или тёмную тему, либо следовать настройкам вашей системы. Для применения темы в ОС Windows требуется перезапуск программы.

-
- - Цвет транзакции по умолчанию -

Цвет, который будет выбран по умолчанию при создании новой транзакции с собственным цветом. Изменение цвета не затронет существующие транзакции, даже если они используют цвет, который ранее был цветом по умолчанию.

-
- - Цвет перевода средств по умолчанию -

Цвет, который будет использован для транзакций, созданных с помощью перевода средств. Изменение цвета не затронет существующие транзакции.

-
- - Цвет группы по умолчанию -

Цвет, который будет выбран по умолчанию при создании новой группы. Это также цвет группы «Несгруппированные».

-
- - Цвет расчётного счёта -

Цвет, которым отмечаются Расчётные счета в списке недавних счетов.

-
- - Цвет сберегательного счёта -

Цвет, которым отмечаются Сберегательные счета в списке недавних счетов.

-
- - Цвет бизнес счёта -

Цвет, которым отмечаются Бизнес счета в списке недавних счетов.

-
- - Использовать местные цифры -

Должно ли приложение использовать цифры, родные для вашего региона, вместо арабских цифр. Например, если эта настройка включена, ٠١٢ будут отображаться вместо 012 при региональных настройках, которые используют восточные арабские цифры.

-
- - Вставка десятичного разделителя -

Установите, нажатия каких кнопок будут вставлять десятичный разделитель в поля сумм: точка на Numpad, любая точка или запятая, либо можно отключить эту функцию. Если десятичный разделитель уже присутствует в строке, он не будет добавлен.

-
- - Папка резервных копий CSV -

Папка, в которую ваши данные будут автоматически экспортироваться в формате CSV после каждого изменения. Эта функция не работает для счетов, защищённых паролем, т.к. CSV файлы не могут быть защищены паролем.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/configuration.page b/NickvisionMoney.Shared/Docs/yelp/sv/configuration.page deleted file mode 100644 index 64d2d354c..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/sv/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/configuration.page b/NickvisionMoney.Shared/Docs/yelp/ta/configuration.page deleted file mode 100644 index e77066633..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/ta/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/account.page b/NickvisionMoney.Shared/Docs/yelp/tr/account.page deleted file mode 100644 index 8f0229588..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/tr/account.page +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Account 🏦 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Account -

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

-

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

- -

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

-
- - - - Name -

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

-
- - Account Type -

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

-
- - Default Transaction Type -

When you create a new transaction its type by default will be the same as in this setting.

-
- - İşlem Hatırlatma Eşiği -

The threshold used when showing reminders about upcoming transactions.

-
- - System Currency -

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

- -

If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

-

If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

-

If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

-
- -

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

-
-
- - Use Custom Currency -

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

-
- - Custom Currency Symbol -

Up to 3 characters or 1 emoji. It can't be a number.

-
- - Custom Currency Code -

Up to 3 characters or 1 emoji.

-

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

-
- - Custom Currency Amount Style -

A choice of displaying an amount in one of the following ways:

- -

$n

-

n$

-

$ n

-

n $

-
-
- - Custom Currency Decimal and Group Separators -

Up to 2 characters or 1 emoji.

-
- - Custom Currency Decimal Digits -

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

-
- - Password -

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

-
- - Sort by Id, Date or Amount -

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
- - Sorting Order -

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

-
- - Groups Visibility -

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

-
- - Tags Visibility -

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/configuration.page b/NickvisionMoney.Shared/Docs/yelp/tr/configuration.page deleted file mode 100644 index eddcca0d0..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/tr/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Öntanımlı İşlem Rengi -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Öntanımlı Aktarım Rengi -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Öntanımlı Grup Rengi -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Kurumsal Hesap Rengi -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Yerel Rakamları Kullan -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/configuration.page b/NickvisionMoney.Shared/Docs/yelp/ur/configuration.page deleted file mode 100644 index 83253bfbf..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/ur/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - Theme -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - Transaction Default Color -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - Transfer Default Color -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - Group Default Color -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - Checking Account Color -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - Savings Account Color -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - Business Account Color -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - Use Native Digits -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - Insert Decimal Separator -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CSV Backup Folder -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/configuration.page b/NickvisionMoney.Shared/Docs/yelp/zh_CN/configuration.page deleted file mode 100644 index 8f8ad6778..000000000 --- a/NickvisionMoney.Shared/Docs/yelp/zh_CN/configuration.page +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Configuration 🔧 - - Fyodor Sobolev - 2023 - - - Nicholas Logozzo - 2023 - -

Creative Commons Attribution 4.0 International License

-
- -Configuration -

This page describes what you can change in the application configuration.

-

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

- - - 主题 -

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

-
- - 默认交易颜色 -

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

-
- - 默认转账颜色 -

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

-
- - 群组默认颜色 -

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

-
- - 支票账户颜色 -

A color used to mark accounts with the Checking type in a recent accounts list.

-
- - 储蓄账户颜色 -

A color used to mark accounts with the Savings type in a recent accounts list.

-
- - 商务账户颜色 -

A color used to mark accounts with the Business type in a recent accounts list.

-
- - 使用原生数字 -

Whether to use numerals that are native for your locale instead of latin digits. For example, if this setting is enabled ٠١٢ will be used instead of 012 for locales that use Eastern Arabic numerals.

-
- - 插入十进制分隔符 -

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

-
- - CVS备份文件夹 -

A folder where your data will be automatically exported to CSV after every change. This feature doesn't work for password-protected accounts, because CSV files can't be password-protected.

-
-
-
diff --git a/NickvisionMoney.Shared/Events/ModelEventArgs.cs b/NickvisionMoney.Shared/Events/ModelEventArgs.cs deleted file mode 100644 index b56cf5108..000000000 --- a/NickvisionMoney.Shared/Events/ModelEventArgs.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace NickvisionMoney.Shared.Events; - -/// -/// Event args for wrapping models -/// -public class ModelEventArgs -{ - /// - /// The model of the event - /// - public T Model { get; set; } - /// - /// The position index representing the model - /// - public int? Position { get; set; } - /// - /// Whether or not the model is active - /// - public bool Active { get; set; } - - /// - /// Constructs a ModelEventArgs - /// - /// The model of the event - /// The position index representing the model - /// Whether or not the model is active - public ModelEventArgs(T model, int? position, bool active) - { - Model = model; - Position = position; - Active = active; - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Helpers/CultureHelpers.cs b/NickvisionMoney.Shared/Helpers/CultureHelpers.cs deleted file mode 100644 index 51e92800e..000000000 --- a/NickvisionMoney.Shared/Helpers/CultureHelpers.cs +++ /dev/null @@ -1,108 +0,0 @@ -using NickvisionMoney.Shared.Models; -using System; -using System.Globalization; - -namespace NickvisionMoney.Shared.Helpers; - -/// -/// Helpers for working with culture -/// -public static class CultureHelpers -{ - /// - /// A culture to use for date strings - /// - public static CultureInfo DateCulture { get; } - /// - /// The system reported currency string (Ex: "$ (USD)") - /// - public static string ReportedCurrencyString { get; } - - /// - /// Constructs CultureHelpers - /// - static CultureHelpers() - { - //Date Culture - var lcTime = Environment.GetEnvironmentVariable("LC_TIME"); - if (lcTime != null && lcTime.Contains(".UTF-8")) - { - lcTime = lcTime.Remove(lcTime.IndexOf(".UTF-8"), 6); - } - else if (lcTime != null && lcTime.Contains(".utf8")) - { - lcTime = lcTime.Remove(lcTime.IndexOf(".utf8"), 5); - } - if (lcTime != null && lcTime.Contains('_')) - { - lcTime = lcTime.Replace('_', '-'); - } - DateCulture = new CultureInfo(!string.IsNullOrWhiteSpace(lcTime) ? lcTime : CultureInfo.CurrentCulture.Name, true); - //Reported Currency String - var lcMonetary = Environment.GetEnvironmentVariable("LC_MONETARY"); - if (lcMonetary != null && lcMonetary.Contains(".UTF-8")) - { - lcMonetary = lcMonetary.Remove(lcMonetary.IndexOf(".UTF-8"), 6); - } - else if (lcMonetary != null && lcMonetary.Contains(".utf8")) - { - lcMonetary = lcMonetary.Remove(lcMonetary.IndexOf(".utf8"), 5); - } - if (lcMonetary != null && lcMonetary.Contains('_')) - { - lcMonetary = lcMonetary.Replace('_', '-'); - } - if (lcMonetary != null && lcMonetary.Contains('@')) - { - lcMonetary = lcMonetary.Replace('@', '-'); - } - var culture = new CultureInfo(!string.IsNullOrWhiteSpace(lcMonetary) ? lcMonetary : CultureInfo.CurrentCulture.Name, true); - var region = new RegionInfo(!string.IsNullOrWhiteSpace(lcMonetary) ? lcMonetary : CultureInfo.CurrentCulture.Name); - ReportedCurrencyString = $"{culture.NumberFormat.CurrencySymbol} ({region.ISOCurrencySymbol})"; - } - - /// - /// Gets a culture to use for number strings based on AccountMetadata - /// - /// AccountMetadata - /// CultureInfo - public static CultureInfo GetNumberCulture(AccountMetadata metadata) - { - var lcMonetary = Environment.GetEnvironmentVariable("LC_MONETARY"); - if (lcMonetary != null && lcMonetary.Contains(".UTF-8")) - { - lcMonetary = lcMonetary.Remove(lcMonetary.IndexOf(".UTF-8"), 6); - } - else if (lcMonetary != null && lcMonetary.Contains(".utf8")) - { - lcMonetary = lcMonetary.Remove(lcMonetary.IndexOf(".utf8"), 5); - } - if (lcMonetary != null && lcMonetary.Contains('_')) - { - lcMonetary = lcMonetary.Replace('_', '-'); - } - if (lcMonetary != null && lcMonetary.Contains('@')) - { - lcMonetary = lcMonetary.Replace('@', '-'); - } - var culture = new CultureInfo(!string.IsNullOrWhiteSpace(lcMonetary) ? lcMonetary : CultureInfo.CurrentCulture.Name, true); - var region = new RegionInfo(!string.IsNullOrWhiteSpace(lcMonetary) ? lcMonetary : CultureInfo.CurrentCulture.Name); - if (metadata.UseCustomCurrency) - { - culture.NumberFormat.CurrencySymbol = string.IsNullOrWhiteSpace(metadata.CustomCurrencySymbol) ? culture.NumberFormat.CurrencySymbol : metadata.CustomCurrencySymbol; - culture.NumberFormat.NaNSymbol = string.IsNullOrWhiteSpace(metadata.CustomCurrencyCode) ? region.ISOCurrencySymbol : metadata.CustomCurrencyCode; - culture.NumberFormat.CurrencyPositivePattern = metadata.CustomCurrencyAmountStyle ?? culture.NumberFormat.CurrencyPositivePattern; - culture.NumberFormat.CurrencyDecimalSeparator = string.IsNullOrEmpty(metadata.CustomCurrencyDecimalSeparator) ? culture.NumberFormat.CurrencyDecimalSeparator : metadata.CustomCurrencyDecimalSeparator; - culture.NumberFormat.NumberDecimalSeparator = string.IsNullOrEmpty(metadata.CustomCurrencyDecimalSeparator) ? culture.NumberFormat.NumberDecimalSeparator : metadata.CustomCurrencyDecimalSeparator; - culture.NumberFormat.CurrencyGroupSeparator = string.IsNullOrEmpty(metadata.CustomCurrencyGroupSeparator) ? culture.NumberFormat.CurrencyGroupSeparator : metadata.CustomCurrencyGroupSeparator; - culture.NumberFormat.NumberGroupSeparator = string.IsNullOrEmpty(metadata.CustomCurrencyGroupSeparator) ? culture.NumberFormat.NumberGroupSeparator : metadata.CustomCurrencyGroupSeparator; - culture.NumberFormat.CurrencyDecimalDigits = metadata.CustomCurrencyDecimalDigits ?? culture.NumberFormat.CurrencyDecimalDigits; - culture.NumberFormat.NumberDecimalDigits = metadata.CustomCurrencyDecimalDigits ?? culture.NumberFormat.CurrencyDecimalDigits; - } - else - { - culture.NumberFormat.NaNSymbol = region.ISOCurrencySymbol; - } - return culture; - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Helpers/CurrencyHelpers.cs b/NickvisionMoney.Shared/Helpers/CurrencyHelpers.cs deleted file mode 100644 index 5d6e314c5..000000000 --- a/NickvisionMoney.Shared/Helpers/CurrencyHelpers.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Globalization; - -namespace NickvisionMoney.Shared.Helpers; - -/// -/// Helper methods for working with currency -/// -public static class CurrencyHelpers -{ - /// - /// Converts amount to currency string (non-negative) - /// - /// Amount decimal value - /// Culture used for formatting - /// Whether to convert Latin digits to native digits - /// Whether to add currency symbol - /// Whether to keep more digits in decimal part to increase precision - /// Formatted amount string - public static string ToAmountString(this decimal amount, CultureInfo culture, bool useNativeDigits, bool showCurrencySymbol = true, bool overwriteDecimal = false) - { - var result = Math.Abs(amount).ToString(overwriteDecimal ? "C6" : culture.Name is "kea-CV" or "pt-CV" ? "C2" : "C", culture); - result = result.Replace(culture.NumberFormat.CurrencySymbol, "").Trim(); - if (culture.NumberFormat.CurrencyDecimalDigits == 99 || overwriteDecimal) - { - result = result.TrimEnd('0'); - if (result.EndsWith(culture.NumberFormat.CurrencyDecimalSeparator)) - { - result = culture.Name is "kea-CV" or "pt-CV" ? $"{result}00" : result.Replace(culture.NumberFormat.CurrencyDecimalSeparator, ""); - } - else if (result.Substring(result.IndexOf(culture.NumberFormat.CurrencyDecimalSeparator) + 1).Length == 1 && culture.Name is "kea-CV" or "pt-CV") - { - result = $"{result}0"; - } - } - if (showCurrencySymbol) - { - var formatString = culture.NumberFormat.CurrencyPositivePattern switch - { - 0 => $"{culture.NumberFormat.CurrencySymbol}{{0}}", - 1 => $"{{0}}{culture.NumberFormat.CurrencySymbol}", - 2 => $"{culture.NumberFormat.CurrencySymbol} {{0}}", - 3 => $"{{0}} {culture.NumberFormat.CurrencySymbol}", - _ => $"{culture.NumberFormat.CurrencySymbol}{{0}}" - }; - result = string.Format(formatString, result); - } - if (useNativeDigits && "0" != culture.NumberFormat.NativeDigits[0]) - { - result = result.Replace("0", culture.NumberFormat.NativeDigits[0]) - .Replace("1", culture.NumberFormat.NativeDigits[1]) - .Replace("2", culture.NumberFormat.NativeDigits[2]) - .Replace("3", culture.NumberFormat.NativeDigits[3]) - .Replace("4", culture.NumberFormat.NativeDigits[4]) - .Replace("5", culture.NumberFormat.NativeDigits[5]) - .Replace("6", culture.NumberFormat.NativeDigits[6]) - .Replace("7", culture.NumberFormat.NativeDigits[7]) - .Replace("8", culture.NumberFormat.NativeDigits[8]) - .Replace("9", culture.NumberFormat.NativeDigits[9]); - } - return result; - } - - /// - /// Replaces native digits in a string with Latin digits - /// - /// The amount string - /// Culture used for formatting - /// A new string with native digits replaced with Latin digits - public static string ReplaceNativeDigits(this string amountString, CultureInfo culture) - { - var result = amountString; - foreach (var digit in culture.NumberFormat.NativeDigits) - { - result = result.Replace(digit, Array.FindIndex(culture.NumberFormat.NativeDigits, c => c == digit).ToString()); - } - return result; - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Helpers/DocumentationHelpers.cs b/NickvisionMoney.Shared/Helpers/DocumentationHelpers.cs deleted file mode 100644 index a3eedf0a3..000000000 --- a/NickvisionMoney.Shared/Helpers/DocumentationHelpers.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime.InteropServices; - -namespace NickvisionMoney.Shared.Helpers; - -/// -/// Helper methods for working with help documentation -/// -public static class DocumentationHelpers -{ - /// - /// Get URL for given help page - /// - /// Help page name - /// URL to either yelp or web page - public static string GetHelpURL(string pageName) - { - if (string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("SNAP")) && RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - return $"help:denaro/{pageName}"; - } - var lang = "C"; - if (!CultureInfo.CurrentCulture.Equals(CultureInfo.InvariantCulture) && CultureInfo.CurrentCulture.Name != "en-US") - { - using var linguasStream = Assembly.GetCallingAssembly().GetManifestResourceStream("NickvisionMoney.Shared.Docs.po.LINGUAS"); - using var reader = new StreamReader(linguasStream!); - var linguas = reader.ReadToEnd().Split(Environment.NewLine); - if (linguas.Contains(CultureInfo.CurrentCulture.Name.Replace("-", "_"))) - { - lang = CultureInfo.CurrentCulture.Name.Replace("-", "_"); - } - else - { - foreach (var l in linguas) - { - if (l.Contains(CultureInfo.CurrentCulture.TwoLetterISOLanguageName)) - { - lang = l; - break; - } - } - } - } - return $"https://htmlpreview.github.io/?https://raw.githubusercontent.com/NickvisionApps/Denaro/main/NickvisionMoney.Shared/Docs/html/{lang}/{pageName}.html"; - } -} diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.in deleted file mode 100644 index c8092c4f9..000000000 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.in +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec @EXEC@ "$@" \ No newline at end of file diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in deleted file mode 100644 index fa75b1c80..000000000 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in +++ /dev/null @@ -1,71 +0,0 @@ - - - org.nickvision.money - CC0-1.0 - MIT - Denaro - Nickvision - Nickvision - Manage your personal finances - -

— Manage multiple accounts at a time, with a familiar tab interface

-

— Easily filter transactions by type, group, or date

-

— Easily repeat transactions, such as bills that occur every month

-

— Transfer money from one account to another

-

— Export an account as a CSV file and import a CSV, OFX or QIF file to bulk add transactions to an account

-
- org.nickvision.money.desktop - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/MainWindow.png - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/OpenAccount.png - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/OpenAccountDark.png - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/CompactMode.png - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/Transaction.png - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/AccountSettings.png - - - https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/CurrencyConverter.png - - - https://github.com/NickvisionApps/Denaro - https://github.com/NickvisionApps/Denaro/issues - https://github.com/sponsors/nlogozzo - https://github.com/NickvisionApps/Denaro - https://hosted.weblate.org/engage/nickvision-money/ - - org.nickvision.money - application/x-nmoney - - - - -

- Improved importing of QIF files

-

- Fixed a bug where the app would crash when filtering transactions for certain dates

-

- Updated translations (Thanks to everyone on Weblate)!

-
-
-
- - - keyboard - pointing - touch - - - 360 - - - mobile - -
diff --git a/NickvisionMoney.Shared/Models/Account.cs b/NickvisionMoney.Shared/Models/Account.cs deleted file mode 100644 index 75fa620c7..000000000 --- a/NickvisionMoney.Shared/Models/Account.cs +++ /dev/null @@ -1,2172 +0,0 @@ -using Hazzik.Qif; -using LiveChartsCore; -using LiveChartsCore.Measure; -using LiveChartsCore.SkiaSharpView; -using LiveChartsCore.SkiaSharpView.Painting; -using LiveChartsCore.SkiaSharpView.SKCharts; -using LiveChartsCore.SkiaSharpView.VisualElements; -using Microsoft.Data.Sqlite; -using NickvisionMoney.Shared.Helpers; -using OfxSharp; -using PdfSharpCore.Pdf.IO; -using QuestPDF.Drawing; -using QuestPDF.Fluent; -using QuestPDF.Helpers; -using QuestPDF.Infrastructure; -using SixLabors.ImageSharp.Formats.Jpeg; -using SkiaSharp; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; -using static Nickvision.Aura.Localization.Gettext; - -namespace NickvisionMoney.Shared.Models; - -public enum ExportMode -{ - All, - CurrentView -} - -public enum GraphType -{ - IncomeExpensePie, - IncomeExpensePerGroup, - IncomeExpenseOverTime, - IncomeByGroup, - ExpenseByGroup, -} - -/// -/// A model of an account -/// -public class Account : IDisposable -{ - private bool _loggedIn; - private bool _disposed; - private SqliteConnection? _database; - private bool? _isEncrypted; - - /// - /// The path of the account - /// - public string Path { get; init; } - /// - /// The metadata of the account - /// - public AccountMetadata Metadata { get; init; } - /// - /// A map of groups in the account - /// - public Dictionary Groups { get; init; } - /// - /// A list of tags in the account - /// - public List Tags { get; init; } - /// - /// A map of transactions in the account - /// - public Dictionary Transactions { get; init; } - /// - /// The next available group id - /// - public uint NextAvailableGroupId { get; private set; } - /// - /// The next available transaction id - /// - public uint NextAvailableTransactionId { get; private set; } - /// - /// The income amount of the account for today - /// - public decimal TodayIncome { get; private set; } - /// - /// The expense amount of the account for today - /// - public decimal TodayExpense { get; private set; } - /// - /// The list of upcoming transaction reminders - /// - public List<(string Title, string Subtitle)> TransactionReminders { get; private set; } - - /// - /// The total amount of the account for today - /// - public decimal TodayTotal => TodayIncome - TodayExpense; - - /// - /// Constructs an Account - /// - /// The path of the account - public Account(string path) - { - _loggedIn = false; - _disposed = false; - _isEncrypted = null; - Path = path; - Metadata = new AccountMetadata(System.IO.Path.GetFileNameWithoutExtension(Path), AccountType.Checking); - Groups = new Dictionary(); - Tags = new List() { _("Untagged") }; - Transactions = new Dictionary(); - NextAvailableGroupId = 1; - NextAvailableTransactionId = 1; - TodayIncome = 0; - TodayExpense = 0; - TransactionReminders = new List<(string Title, string Subtitle)>(); - } - - /// - /// Finalizes the Account - /// - ~Account() => Dispose(false); - - /// - /// Whether or not the account is encrypted (requiring a password) - /// - public bool IsEncrypted - { - get - { - if (_isEncrypted == null) - { - if (!File.Exists(Path)) - { - _isEncrypted = false; - } - else - { - var tempConnectionString = new SqliteConnectionStringBuilder() - { - DataSource = Path, - Mode = SqliteOpenMode.ReadOnly, - Pooling = false - }; - using var tempDatabase = new SqliteConnection(tempConnectionString.ConnectionString); - tempDatabase.Open(); - try - { - using var tempCmd = tempDatabase.CreateCommand(); - tempCmd.CommandText = "PRAGMA schema_version"; - tempCmd.ExecuteScalar(); - _isEncrypted = false; - } - catch - { - _isEncrypted = true; - } - finally - { - tempDatabase.Close(); - } - } - } - return _isEncrypted.Value; - } - } - - /// - /// The password of the account. Specifying a null/empty string will remove the password and decrypt the database - /// - public string Password - { - set - { - //Remove Password If Empty (Decrypts) - if (string.IsNullOrEmpty(value)) - { - //Create Temp Decrypted Database - var tempPath = $"{Path}.decrypt"; - using var command = _database!.CreateCommand(); - command.CommandText = $"ATTACH DATABASE '{tempPath}' AS plaintext KEY ''"; - command.ExecuteNonQuery(); - command.CommandText = $"SELECT sqlcipher_export('plaintext')"; - command.ExecuteNonQuery(); - command.CommandText = $"DETACH DATABASE plaintext"; - command.ExecuteNonQuery(); - //Remove Old Encrypted Database - _database.Close(); - _database.Dispose(); - _database = null; - File.Delete(Path); - File.Move(tempPath, Path, true); - //Open New Decrypted Database - _database = new SqliteConnection(new SqliteConnectionStringBuilder() - { - DataSource = Path, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false - }.ConnectionString); - _database.Open(); - _isEncrypted = false; - } - using var cmdQuote = _database!.CreateCommand(); - cmdQuote.CommandText = "SELECT quote($password)"; - cmdQuote.Parameters.AddWithValue("$password", value); - var quotedPassword = (string)cmdQuote.ExecuteScalar()!; - //Change Password - if (IsEncrypted) - { - using var command = _database.CreateCommand(); - command.CommandText = $"PRAGMA rekey = {quotedPassword}"; - command.ExecuteNonQuery(); - _database.Close(); - _database.ConnectionString = new SqliteConnectionStringBuilder() - { - DataSource = Path, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - Password = value - }.ConnectionString; - _database.Open(); - _isEncrypted = true; - } - //Sets New Password (Encrypts For First Time) - else - { - //Create Temp Encrypted Database - var tempPath = $"{Path}.ecrypt"; - using var command = _database.CreateCommand(); - command.CommandText = $"ATTACH DATABASE '{tempPath}' AS encrypted KEY {quotedPassword}"; - command.ExecuteNonQuery(); - command.CommandText = $"SELECT sqlcipher_export('encrypted')"; - command.ExecuteNonQuery(); - command.CommandText = $"DETACH DATABASE encrypted"; - command.ExecuteNonQuery(); - //Remove Old Unencrypted Database - _database.Close(); - _database.Dispose(); - _database = null; - File.Delete(Path); - File.Move(tempPath, Path, true); - //Open New Encrypted Database - _database = new SqliteConnection(new SqliteConnectionStringBuilder() - { - DataSource = Path, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - Password = value - }.ConnectionString); - _database.Open(); - _isEncrypted = true; - } - } - } - - /// - /// Frees resources used by the Account object - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Frees resources used by the Account object - /// - protected virtual void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - if (disposing) - { - foreach (var pair in Transactions) - { - pair.Value.Dispose(); - } - if (_database != null) - { - _database.Close(); - _database.Dispose(); - _database = null; - } - } - _disposed = true; - } - - /// - /// Logins into an account - /// - /// The password of the account, if needed - /// True if logged in, else false - public bool Login(string? password) - { - if (!_loggedIn) - { - var connectionStringBuilder = new SqliteConnectionStringBuilder() - { - DataSource = Path, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false - }; - //Set Password - if (IsEncrypted) - { - if (string.IsNullOrEmpty(password)) - { - _loggedIn = false; - return false; - } - else - { - connectionStringBuilder.Password = password; - } - } - _database = new SqliteConnection(connectionStringBuilder.ConnectionString); - try - { - _database.Open(); - _loggedIn = true; - } - catch (Exception e) - { - Console.Error.WriteLine(e); - _database.Close(); - _database.Dispose(); - _database = null; - _loggedIn = false; - } - } - return _loggedIn; - } - - /// - /// Loads an account - /// - /// True if loaded, else false - public async Task LoadAsync() - { - if (!_loggedIn) - { - return false; - } - //Setup Metadata Table - using var cmdTableMetadata = _database!.CreateCommand(); - cmdTableMetadata.CommandText = "CREATE TABLE IF NOT EXISTS metadata (id INTEGER PRIMARY KEY, name TEXT, type INTEGER, useCustomCurrency INTEGER, customSymbol TEXT, customCode TEXT, defaultTransactionType INTEGER, showGroupsList INTEGER, sortFirstToLast INTEGER, sortTransactionsBy INTEGER, customDecimalSeparator TEXT, customGroupSeparator TEXT, customDecimalDigits INTEGER, showTagsList INTEGER, transactionRemindersThreshold INTEGER, customAmountStyle INTEGER)"; - cmdTableMetadata.ExecuteNonQuery(); - AccountMetadata.UpdateMetadataDatabaseTable(_database); - //Setup Groups Table - using var cmdTableGroups = _database.CreateCommand(); - cmdTableGroups.CommandText = "CREATE TABLE IF NOT EXISTS groups (id INTEGER PRIMARY KEY, name TEXT, description TEXT, rgba TEXT)"; - try - { - using var cmdTableGroupsUpdate1 = _database.CreateCommand(); - cmdTableGroupsUpdate1.CommandText = "ALTER TABLE groups ADD COLUMN rgba TEXT"; - cmdTableGroupsUpdate1.ExecuteNonQuery(); - } - catch { } - cmdTableGroups.ExecuteNonQuery(); - //Setup Transactions Table - using var cmdTableTransactions = _database.CreateCommand(); - cmdTableTransactions.CommandText = "CREATE TABLE IF NOT EXISTS transactions (id INTEGER PRIMARY KEY, date TEXT, description TEXT, type INTEGER, repeat INTEGER, amount TEXT, gid INTEGER, rgba TEXT, receipt TEXT, repeatFrom INTEGER, repeatEndDate TEXT, useGroupColor INTEGER, notes TEXT, tags TEXT)"; - cmdTableTransactions.ExecuteNonQuery(); - try - { - using var cmdTableTransactionsUpdate1 = _database.CreateCommand(); - cmdTableTransactionsUpdate1.CommandText = "ALTER TABLE transactions ADD COLUMN gid INTEGER"; - cmdTableTransactionsUpdate1.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate2 = _database.CreateCommand(); - cmdTableTransactionsUpdate2.CommandText = "ALTER TABLE transactions ADD COLUMN rgba TEXT"; - cmdTableTransactionsUpdate2.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate3 = _database.CreateCommand(); - cmdTableTransactionsUpdate3.CommandText = "ALTER TABLE transactions ADD COLUMN receipt TEXT"; - cmdTableTransactionsUpdate3.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate4 = _database.CreateCommand(); - cmdTableTransactionsUpdate4.CommandText = "ALTER TABLE transactions ADD COLUMN repeatFrom INTEGER"; - cmdTableTransactionsUpdate4.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate5 = _database.CreateCommand(); - cmdTableTransactionsUpdate5.CommandText = "ALTER TABLE transactions ADD COLUMN repeatEndDate TEXT"; - cmdTableTransactionsUpdate5.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate6 = _database.CreateCommand(); - cmdTableTransactionsUpdate6.CommandText = "ALTER TABLE transactions ADD COLUMN useGroupColor INTEGER"; - cmdTableTransactionsUpdate6.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate7 = _database.CreateCommand(); - cmdTableTransactionsUpdate7.CommandText = "ALTER TABLE transactions ADD COLUMN notes TEXT"; - cmdTableTransactionsUpdate7.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableTransactionsUpdate8 = _database.CreateCommand(); - cmdTableTransactionsUpdate8.CommandText = "ALTER TABLE transactions ADD COLUMN tags TEXT"; - cmdTableTransactionsUpdate8.ExecuteNonQuery(); - } - catch { } - //Get Metadata - using var cmdQueryMetadata = _database.CreateCommand(); - cmdQueryMetadata.CommandText = "SELECT * FROM metadata where id = 0"; - using var readQueryMetadata = cmdQueryMetadata.ExecuteReader(); - if (readQueryMetadata.HasRows) - { - readQueryMetadata.Read(); - Metadata.Name = readQueryMetadata.GetString(1); - Metadata.AccountType = (AccountType)readQueryMetadata.GetInt32(2); - Metadata.UseCustomCurrency = readQueryMetadata.GetBoolean(3); - Metadata.CustomCurrencySymbol = string.IsNullOrWhiteSpace(readQueryMetadata.GetString(4)) ? null : readQueryMetadata.GetString(4); - Metadata.CustomCurrencyCode = string.IsNullOrWhiteSpace(readQueryMetadata.GetString(5)) ? null : readQueryMetadata.GetString(5); - Metadata.DefaultTransactionType = (TransactionType)readQueryMetadata.GetInt32(6); - Metadata.ShowGroupsList = readQueryMetadata.GetBoolean(7); - Metadata.SortFirstToLast = readQueryMetadata.GetBoolean(8); - Metadata.SortTransactionsBy = readQueryMetadata.IsDBNull(9) ? SortBy.Id : (SortBy)readQueryMetadata.GetInt32(9); - Metadata.CustomCurrencyDecimalSeparator = readQueryMetadata.IsDBNull(10) ? null : readQueryMetadata.GetString(10); - Metadata.CustomCurrencyGroupSeparator = readQueryMetadata.IsDBNull(11) ? null : (readQueryMetadata.GetString(11) == "empty" ? "" : readQueryMetadata.GetString(11)); - Metadata.CustomCurrencyDecimalDigits = readQueryMetadata.IsDBNull(12) ? null : readQueryMetadata.GetInt32(12); - Metadata.ShowTagsList = readQueryMetadata.IsDBNull(13) ? true : readQueryMetadata.GetBoolean(13); - Metadata.TransactionRemindersThreshold = readQueryMetadata.IsDBNull(14) ? RemindersThreshold.OneDayBefore : (RemindersThreshold)readQueryMetadata.GetInt32(14); - Metadata.CustomCurrencyAmountStyle = readQueryMetadata.IsDBNull(15) ? null : readQueryMetadata.GetInt32(15); - } - else - { - using var cmdAddMetadata = _database.CreateCommand(); - cmdAddMetadata.CommandText = "INSERT INTO metadata (id, name, type, useCustomCurrency, customSymbol, customCode, defaultTransactionType, showGroupsList, sortFirstToLast, sortTransactionsBy, customDecimalSeparator, customGroupSeparator, customDecimalDigits, showTagsList, transactionRemindersThreshold, customAmountStyle) VALUES (0, $name, $type, $useCustomCurrency, $customSymbol, $customCode, $defaultTransactionType, $showGroupsList, $sortFirstToLast, $sortTransactionsBy, $customDecimalSeparator, $customGroupSeparator, $customDecimalDigits, $showTagsList, $transactionRemindersThreshold, $customAmountStyle)"; - cmdAddMetadata.Parameters.AddWithValue("$name", Metadata.Name); - cmdAddMetadata.Parameters.AddWithValue("$type", (int)Metadata.AccountType); - cmdAddMetadata.Parameters.AddWithValue("$useCustomCurrency", Metadata.UseCustomCurrency); - cmdAddMetadata.Parameters.AddWithValue("$customSymbol", Metadata.CustomCurrencySymbol ?? ""); - cmdAddMetadata.Parameters.AddWithValue("$customCode", Metadata.CustomCurrencyCode ?? ""); - cmdAddMetadata.Parameters.AddWithValue("$defaultTransactionType", (int)Metadata.DefaultTransactionType); - cmdAddMetadata.Parameters.AddWithValue("$showGroupsList", Metadata.ShowGroupsList); - cmdAddMetadata.Parameters.AddWithValue("$sortFirstToLast", Metadata.SortFirstToLast); - cmdAddMetadata.Parameters.AddWithValue("$sortTransactionsBy", (int)Metadata.SortTransactionsBy); - cmdAddMetadata.Parameters.AddWithValue("$customDecimalSeparator", Metadata.CustomCurrencyDecimalSeparator ?? ""); - cmdAddMetadata.Parameters.AddWithValue("$customGroupSeparator", string.IsNullOrEmpty(Metadata.CustomCurrencyGroupSeparator) ? "empty" : Metadata.CustomCurrencyGroupSeparator); - cmdAddMetadata.Parameters.AddWithValue("$customDecimalDigits", Metadata.CustomCurrencyDecimalDigits ?? 2); - cmdAddMetadata.Parameters.AddWithValue("$showTagsList", Metadata.ShowGroupsList); - cmdAddMetadata.Parameters.AddWithValue("$transactionRemindersThreshold", (int)Metadata.TransactionRemindersThreshold); - cmdAddMetadata.Parameters.AddWithValue("$customAmountStyle", Metadata.CustomCurrencyAmountStyle ?? 0); - cmdAddMetadata.ExecuteNonQuery(); - } - //Get Groups - Groups.Add(0, new Group(0) - { - Name = _("Ungrouped"), - Description = _("Transactions without a group"), - RGBA = "" - }); - using var cmdQueryGroups = _database.CreateCommand(); - cmdQueryGroups.CommandText = "SELECT * FROM groups"; - using var readQueryGroups = cmdQueryGroups.ExecuteReader(); - while (readQueryGroups.Read()) - { - if (readQueryGroups.IsDBNull(0)) - { - continue; - } - var group = new Group((uint)readQueryGroups.GetInt32(0)) - { - Name = readQueryGroups.IsDBNull(1) ? "" : readQueryGroups.GetString(1), - Description = readQueryGroups.IsDBNull(2) ? "" : readQueryGroups.GetString(2), - RGBA = readQueryGroups.IsDBNull(3) ? "" : readQueryGroups.GetString(3) - }; - Groups.Add(group.Id, group); - if (group.Id >= NextAvailableGroupId) - { - NextAvailableGroupId = group.Id + 1; - } - } - //Get Transactions - using var cmdQueryTransactions = _database.CreateCommand(); - cmdQueryTransactions.CommandText = "SELECT * FROM transactions"; - using var readQueryTransactions = cmdQueryTransactions.ExecuteReader(); - while (readQueryTransactions.Read()) - { - if (readQueryTransactions.IsDBNull(0)) - { - continue; - } - var transaction = new Transaction((uint)readQueryTransactions.GetInt32(0)) - { - Date = readQueryTransactions.IsDBNull(1) ? DateOnly.FromDateTime(DateTime.Today) : DateOnly.Parse(readQueryTransactions.GetString(1), new CultureInfo("en-US", false)), - Description = readQueryTransactions.IsDBNull(2) ? "" : readQueryTransactions.GetString(2), - Type = readQueryTransactions.IsDBNull(3) ? TransactionType.Income : (TransactionType)readQueryTransactions.GetInt32(3), - RepeatInterval = readQueryTransactions.IsDBNull(4) ? TransactionRepeatInterval.Never : (TransactionRepeatInterval)readQueryTransactions.GetInt32(4), - Amount = readQueryTransactions.IsDBNull(5) ? 0m : readQueryTransactions.GetDecimal(5), - GroupId = readQueryTransactions.IsDBNull(6) ? -1 : readQueryTransactions.GetInt32(6), - RGBA = readQueryTransactions.IsDBNull(7) ? "" : readQueryTransactions.GetString(7), - UseGroupColor = readQueryTransactions.IsDBNull(11) ? false : readQueryTransactions.GetBoolean(11), - RepeatFrom = readQueryTransactions.IsDBNull(9) ? -1 : readQueryTransactions.GetInt32(9), - RepeatEndDate = readQueryTransactions.IsDBNull(10) ? null : (string.IsNullOrWhiteSpace(readQueryTransactions.GetString(10)) ? null : DateOnly.Parse(readQueryTransactions.GetString(10), new CultureInfo("en-US", false))), - Notes = readQueryTransactions.IsDBNull(12) ? "" : readQueryTransactions.GetString(12), - Tags = readQueryTransactions.IsDBNull(13) ? new List() : (string.IsNullOrWhiteSpace(readQueryTransactions.GetString(13)) ? new List() : readQueryTransactions.GetString(13).Split(',').ToList()) - }; - Tags.AddRange(transaction.Tags.Where(t => !Tags.Contains(t))); - var receiptString = readQueryTransactions.IsDBNull(8) ? "" : readQueryTransactions.GetString(8); - if (!string.IsNullOrWhiteSpace(receiptString)) - { - transaction.Receipt = SixLabors.ImageSharp.Image.Load(Convert.FromBase64String(receiptString)); - } - Transactions.Add(transaction.Id, transaction); - if (transaction.Date <= DateOnly.FromDateTime(DateTime.Now)) - { - var groupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - if (transaction.Type == TransactionType.Income) - { - Groups[groupId].Income += transaction.Amount; - TodayIncome += transaction.Amount; - } - else - { - Groups[groupId].Expense += transaction.Amount; - TodayExpense += transaction.Amount; - } - } - if (transaction.Id >= NextAvailableTransactionId) - { - NextAvailableTransactionId = transaction.Id + 1; - } - } - //Repeats - await SyncRepeatTransactionsAsync(); - return true; - } - - /// - /// Gets the total income amount for the transactions given - /// - /// The ids of transactions to consider - /// The income amount - public decimal GetIncome(IEnumerable? transactionIds = null) => - (transactionIds ?? Transactions.Keys) - .Select(id => Transactions[id]) - .Where(transaction => transaction.Type == TransactionType.Income) - .Sum(transaction => transaction.Amount); - - /// - /// Gets the total expense amount for transactions given - /// - /// The ids of transactions to consider - /// The total expense amount - public decimal GetExpense(IEnumerable? transactionIds = null) => - (transactionIds ?? Transactions.Keys) - .Select(id => Transactions[id]) - .Where(transaction => transaction.Type == TransactionType.Expense) - .Sum(transaction => transaction.Amount); - - /// - /// Gets the balance amount left after income and expense for the transactions given - /// - /// The ids of transactions to consider - /// The balance amount after the transactions - public decimal GetTotal(IEnumerable? transactionIds = null) => - (transactionIds ?? Transactions.Keys) - .Select(id => Transactions[id]) - .Sum(transaction => transaction.Type == TransactionType.Income ? transaction.Amount : (-1 * transaction.Amount)); - - /// - /// Gets the total income for a group - /// - /// The group to consider - /// The ids of the transactions to consider - /// The total income amount - public decimal GetGroupIncome(Group group, IEnumerable? transactionIds) => - (transactionIds ?? Transactions.Keys) - .Select(id => Transactions[id]) - .Where(transaction => transaction.GroupId == group.Id || (transaction.GroupId == -1 && group.Id == 0)) - .Where(transaction => transaction.Type == TransactionType.Income) - .Sum(transaction => transaction.Amount); - - /// - /// Gets the total expense for a group - /// - /// The group to consider - /// The ids of the transactions to consider - /// The total expense amount - public decimal GetGroupExpense(Group group, IEnumerable? transactionIds = null) => - (transactionIds ?? Transactions.Keys) - .Select(id => Transactions[id]) - .Where(transaction => transaction.GroupId == group.Id || (transaction.GroupId == -1 && group.Id == 0)) - .Where(transaction => transaction.Type == TransactionType.Expense) - .Sum(transaction => transaction.Amount); - - /// - /// Gets the balance amount left after income and expense for a group - /// - /// The group to consider - /// The ids of the transactions to consider - /// The balance amount for the group - public decimal GetGroupTotal(Group group, IEnumerable? transactionIds = null) => - (transactionIds ?? Transactions.Keys) - .Select(id => Transactions[id]) - .Where(transaction => transaction.GroupId == group.Id || (transaction.GroupId == -1 && group.Id == 0)) - .Sum(transaction => transaction.Type == TransactionType.Income ? transaction.Amount : (-1 * transaction.Amount)); - - /// - /// Updates the metadata of the account - /// - /// The new metadata - /// True if successful, else false - public bool UpdateMetadata(AccountMetadata metadata) - { - using var cmdUpdateMetadata = _database!.CreateCommand(); - cmdUpdateMetadata.CommandText = "UPDATE metadata SET name = $name, type = $type, useCustomCurrency = $useCustomCurrency, customSymbol = $customSymbol, customCode = $customCode, defaultTransactionType = $defaultTransactionType, showGroupsList = $showGroupsList, sortFirstToLast = $sortFirstToLast, sortTransactionsBy = $sortTransactionsBy, customDecimalSeparator = $customDecimalSeparator, customGroupSeparator = $customGroupSeparator, customDecimalDigits = $customDecimalDigits, showTagsList = $showTagsList, transactionRemindersThreshold = $transactionRemindersThreshold, customAmountStyle = $customAmountStyle WHERE id = 0"; - cmdUpdateMetadata.Parameters.AddWithValue("$name", metadata.Name); - cmdUpdateMetadata.Parameters.AddWithValue("$type", (int)metadata.AccountType); - cmdUpdateMetadata.Parameters.AddWithValue("$useCustomCurrency", metadata.UseCustomCurrency); - cmdUpdateMetadata.Parameters.AddWithValue("$customSymbol", metadata.CustomCurrencySymbol ?? ""); - cmdUpdateMetadata.Parameters.AddWithValue("$customCode", metadata.CustomCurrencyCode ?? ""); - cmdUpdateMetadata.Parameters.AddWithValue("$defaultTransactionType", (int)metadata.DefaultTransactionType); - cmdUpdateMetadata.Parameters.AddWithValue("$showGroupsList", metadata.ShowGroupsList); - cmdUpdateMetadata.Parameters.AddWithValue("$sortFirstToLast", metadata.SortFirstToLast); - cmdUpdateMetadata.Parameters.AddWithValue("$sortTransactionsBy", (int)metadata.SortTransactionsBy); - cmdUpdateMetadata.Parameters.AddWithValue("$customDecimalSeparator", metadata.CustomCurrencyDecimalSeparator ?? ""); - cmdUpdateMetadata.Parameters.AddWithValue("$customGroupSeparator", string.IsNullOrEmpty(metadata.CustomCurrencyGroupSeparator) ? "empty" : metadata.CustomCurrencyGroupSeparator); - cmdUpdateMetadata.Parameters.AddWithValue("$customDecimalDigits", metadata.CustomCurrencyDecimalDigits ?? 2); - cmdUpdateMetadata.Parameters.AddWithValue("$showTagsList", metadata.ShowTagsList); - cmdUpdateMetadata.Parameters.AddWithValue("$transactionRemindersThreshold", (int)metadata.TransactionRemindersThreshold); - cmdUpdateMetadata.Parameters.AddWithValue("$customAmountStyle", metadata.CustomCurrencyAmountStyle ?? 0); - if (cmdUpdateMetadata.ExecuteNonQuery() > 0) - { - var needsRemindersUpdate = Metadata.TransactionRemindersThreshold != metadata.TransactionRemindersThreshold; - Metadata.Name = metadata.Name; - Metadata.AccountType = metadata.AccountType; - Metadata.UseCustomCurrency = metadata.UseCustomCurrency; - Metadata.CustomCurrencySymbol = metadata.CustomCurrencySymbol; - Metadata.CustomCurrencyCode = metadata.CustomCurrencyCode; - Metadata.CustomCurrencyAmountStyle = metadata.CustomCurrencyAmountStyle; - Metadata.DefaultTransactionType = metadata.DefaultTransactionType; - Metadata.TransactionRemindersThreshold = metadata.TransactionRemindersThreshold; - Metadata.ShowGroupsList = metadata.ShowGroupsList; - Metadata.ShowTagsList = metadata.ShowTagsList; - Metadata.SortFirstToLast = metadata.SortFirstToLast; - Metadata.SortTransactionsBy = metadata.SortTransactionsBy; - Metadata.CustomCurrencyDecimalSeparator = metadata.CustomCurrencyDecimalSeparator; - Metadata.CustomCurrencyGroupSeparator = metadata.CustomCurrencyGroupSeparator; - Metadata.CustomCurrencyDecimalDigits = metadata.CustomCurrencyDecimalDigits; - if (needsRemindersUpdate) - { - CalculateTransactionReminders(); - } - return true; - } - return false; - } - - /// - /// Adds a group to the account - /// - /// The group to add - /// True if successful, else false - public async Task AddGroupAsync(Group group) - { - using var cmdAddGroup = _database!.CreateCommand(); - cmdAddGroup.CommandText = "INSERT INTO groups (id, name, description, rgba) VALUES ($id, $name, $description, $rgba)"; - cmdAddGroup.Parameters.AddWithValue("$id", group.Id); - cmdAddGroup.Parameters.AddWithValue("$name", group.Name); - cmdAddGroup.Parameters.AddWithValue("$description", group.Description); - cmdAddGroup.Parameters.AddWithValue("$rgba", group.RGBA); - if (await cmdAddGroup.ExecuteNonQueryAsync() > 0) - { - Groups.Add(group.Id, group); - if (group.Id >= NextAvailableGroupId) - { - NextAvailableGroupId = group.Id + 1; - } - return true; - } - return false; - } - - /// - /// Updates a group in the account - /// - /// The group to update - /// True if successful, else false - public async Task UpdateGroupAsync(Group group) - { - using var cmdUpdateGroup = _database!.CreateCommand(); - cmdUpdateGroup.CommandText = "UPDATE groups SET name = $name, description = $description, rgba = $rgba WHERE id = $id"; - cmdUpdateGroup.Parameters.AddWithValue("$name", group.Name); - cmdUpdateGroup.Parameters.AddWithValue("$description", group.Description); - cmdUpdateGroup.Parameters.AddWithValue("$rgba", group.RGBA); - cmdUpdateGroup.Parameters.AddWithValue("$id", group.Id); - if (await cmdUpdateGroup.ExecuteNonQueryAsync() > 0) - { - Groups[group.Id] = group; - return true; - } - return false; - } - - /// - /// Deletes a group from the account - /// - /// The id of the group to delete - /// (Result, BelongingTransactions) - public async Task<(bool Result, List BelongingTransactions)> DeleteGroupAsync(uint id) - { - using var cmdDeleteGroup = _database!.CreateCommand(); - cmdDeleteGroup.CommandText = "DELETE FROM groups WHERE id = $id"; - cmdDeleteGroup.Parameters.AddWithValue("$id", id); - if (await cmdDeleteGroup.ExecuteNonQueryAsync() > 0) - { - var belongingTransactions = new List(); - Groups.Remove(id); - if (id + 1 == NextAvailableGroupId) - { - NextAvailableGroupId--; - } - foreach (var pair in Transactions) - { - if (pair.Value.GroupId == id) - { - pair.Value.GroupId = -1; - if (pair.Value.UseGroupColor) - { - pair.Value.UseGroupColor = false; - belongingTransactions.Add(pair.Key); - } - await UpdateTransactionAsync(pair.Value); - } - } - return (true, belongingTransactions); - } - return (false, new List()); - } - - /// - /// Adds a transaction to the account - /// - /// The transaction to add - /// (bool Successful, List NewTags) - public async Task<(bool Successful, List NewTags)> AddTransactionAsync(Transaction transaction) - { - using var cmdAddTransaction = _database!.CreateCommand(); - cmdAddTransaction.CommandText = "INSERT INTO transactions (id, date, description, type, repeat, amount, gid, rgba, receipt, repeatFrom, repeatEndDate, useGroupColor, notes, tags) VALUES ($id, $date, $description, $type, $repeat, $amount, $gid, $rgba, $receipt, $repeatFrom, $repeatEndDate, $useGroupColor, $notes, $tags)"; - cmdAddTransaction.Parameters.AddWithValue("$id", transaction.Id); - cmdAddTransaction.Parameters.AddWithValue("$date", transaction.Date.ToString("d", new CultureInfo("en-US"))); - cmdAddTransaction.Parameters.AddWithValue("$description", transaction.Description); - cmdAddTransaction.Parameters.AddWithValue("$type", (int)transaction.Type); - cmdAddTransaction.Parameters.AddWithValue("$repeat", (int)transaction.RepeatInterval); - cmdAddTransaction.Parameters.AddWithValue("$amount", transaction.Amount); - cmdAddTransaction.Parameters.AddWithValue("$gid", transaction.GroupId); - cmdAddTransaction.Parameters.AddWithValue("$rgba", transaction.RGBA); - cmdAddTransaction.Parameters.AddWithValue("$useGroupColor", transaction.UseGroupColor); - cmdAddTransaction.Parameters.AddWithValue("$notes", transaction.Notes); - cmdAddTransaction.Parameters.AddWithValue("$tags", string.Join(',', transaction.Tags)); - if (transaction.Receipt != null) - { - using var memoryStream = new MemoryStream(); - await transaction.Receipt.SaveAsync(memoryStream, new JpegEncoder()); - cmdAddTransaction.Parameters.AddWithValue("$receipt", Convert.ToBase64String(memoryStream.ToArray())); - } - else - { - cmdAddTransaction.Parameters.AddWithValue("$receipt", ""); - } - cmdAddTransaction.Parameters.AddWithValue("$repeatFrom", transaction.RepeatFrom); - cmdAddTransaction.Parameters.AddWithValue("$repeatEndDate", transaction.RepeatEndDate != null ? transaction.RepeatEndDate.Value.ToString("d", new CultureInfo("en-US")) : ""); - if (await cmdAddTransaction.ExecuteNonQueryAsync() > 0) - { - Transactions.Add(transaction.Id, transaction); - if (transaction.Id >= NextAvailableTransactionId) - { - NextAvailableTransactionId = transaction.Id + 1; - } - if (transaction.Date <= DateOnly.FromDateTime(DateTime.Now)) - { - var groupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - if (transaction.Type == TransactionType.Income) - { - Groups[groupId].Income += transaction.Amount; - TodayIncome += transaction.Amount; - } - else - { - Groups[groupId].Expense += transaction.Amount; - TodayExpense += transaction.Amount; - } - } - var newTags = new List(); - Tags.AddRange(transaction.Tags.Where(t => - { - if (!Tags.Contains(t)) - { - newTags.Add(t); - return true; - } - return false; - })); - if (transaction.RepeatInterval != TransactionRepeatInterval.Never && transaction.RepeatFrom == 0) - { - await SyncRepeatTransactionsAsync(); - } - else if (transaction.Date > DateOnly.FromDateTime(DateTime.Today)) - { - CalculateTransactionReminders(); - } - BackupAccountToCSV(); - return (true, newTags); - } - return (false, new List()); - } - - /// - /// Updates a transaction in the account - /// - /// The transaction to update - /// (bool Successful, List NewTags) - public async Task<(bool Successful, List NewTags)> UpdateTransactionAsync(Transaction transaction) - { - using var cmdUpdateTransaction = _database!.CreateCommand(); - cmdUpdateTransaction.CommandText = "UPDATE transactions SET date = $date, description = $description, type = $type, repeat = $repeat, amount = $amount, gid = $gid, rgba = $rgba, receipt = $receipt, repeatFrom = $repeatFrom, repeatEndDate = $repeatEndDate, useGroupColor = $useGroupColor, notes = $notes, tags = $tags WHERE id = $id"; - cmdUpdateTransaction.Parameters.AddWithValue("$id", transaction.Id); - cmdUpdateTransaction.Parameters.AddWithValue("$date", transaction.Date.ToString("d", new CultureInfo("en-US"))); - cmdUpdateTransaction.Parameters.AddWithValue("$description", transaction.Description); - cmdUpdateTransaction.Parameters.AddWithValue("$type", (int)transaction.Type); - cmdUpdateTransaction.Parameters.AddWithValue("$repeat", (int)transaction.RepeatInterval); - cmdUpdateTransaction.Parameters.AddWithValue("$amount", transaction.Amount); - cmdUpdateTransaction.Parameters.AddWithValue("$gid", transaction.GroupId); - cmdUpdateTransaction.Parameters.AddWithValue("$rgba", transaction.RGBA); - cmdUpdateTransaction.Parameters.AddWithValue("$useGroupColor", transaction.UseGroupColor); - cmdUpdateTransaction.Parameters.AddWithValue("$notes", transaction.Notes); - cmdUpdateTransaction.Parameters.AddWithValue("$tags", string.Join(',', transaction.Tags)); - if (transaction.Receipt != null) - { - using var memoryStream = new MemoryStream(); - await transaction.Receipt.SaveAsync(memoryStream, new JpegEncoder()); - cmdUpdateTransaction.Parameters.AddWithValue("$receipt", Convert.ToBase64String(memoryStream.ToArray())); - } - else - { - cmdUpdateTransaction.Parameters.AddWithValue("$receipt", ""); - } - cmdUpdateTransaction.Parameters.AddWithValue("$repeatFrom", transaction.RepeatFrom); - cmdUpdateTransaction.Parameters.AddWithValue("$repeatEndDate", transaction.RepeatEndDate != null ? transaction.RepeatEndDate.Value.ToString("d", new CultureInfo("en-US")) : ""); - if (await cmdUpdateTransaction.ExecuteNonQueryAsync() > 0) - { - var oldTransaction = Transactions[transaction.Id]; - if (oldTransaction.Date <= DateOnly.FromDateTime(DateTime.Now)) - { - var groupId = oldTransaction.GroupId == -1 ? 0u : (uint)oldTransaction.GroupId; - if (oldTransaction.Type == TransactionType.Income) - { - Groups[groupId].Income -= transaction.Amount; - TodayIncome -= oldTransaction.Amount; - } - else - { - Groups[groupId].Expense -= transaction.Amount; - TodayExpense -= oldTransaction.Amount; - } - } - Transactions[transaction.Id].Dispose(); - Transactions[transaction.Id] = transaction; - if (transaction.Date <= DateOnly.FromDateTime(DateTime.Now)) - { - var groupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - if (transaction.Type == TransactionType.Income) - { - Groups[groupId].Income += transaction.Amount; - TodayIncome += transaction.Amount; - } - else - { - Groups[groupId].Expense += transaction.Amount; - TodayExpense += transaction.Amount; - } - } - var newTags = new List(); - Tags.AddRange(transaction.Tags.Where(t => - { - if (!Tags.Contains(t)) - { - newTags.Add(t); - return true; - } - return false; - })); - if (transaction.RepeatFrom == 0) - { - await SyncRepeatTransactionsAsync(); - } - else if (transaction.Date > DateOnly.FromDateTime(DateTime.Today)) - { - CalculateTransactionReminders(); - } - BackupAccountToCSV(); - return (true, newTags); - } - return (false, new List()); - } - - /// - /// Updates a source transaction in the account - /// - /// The transaction to update - /// Whether or not to update generated transactions associated with the source - /// (bool Successful, List NewTags) - public async Task<(bool Successful, List NewTags)> UpdateSourceTransactionAsync(Transaction transaction, bool updateGenerated) - { - var transactions = Transactions.Values.ToList(); - var success = true; - var newTags = new List(); - if (updateGenerated) - { - foreach (var t in transactions) - { - if (t.RepeatFrom == (int)transaction.Id) - { - var tt = (Transaction)t.Clone(); - tt.Description = transaction.Description; - tt.Type = transaction.Type; - tt.Amount = transaction.Amount; - tt.GroupId = transaction.GroupId; - tt.RGBA = transaction.RGBA; - tt.UseGroupColor = transaction.UseGroupColor; - tt.Receipt = transaction.Receipt; - tt.RepeatEndDate = transaction.RepeatEndDate; - tt.Notes = transaction.Notes; - tt.Tags = transaction.Tags; - var r = await UpdateTransactionAsync(tt); - success = success && r.Successful; - newTags = newTags.Union(r.NewTags).ToList(); - } - } - var res = await UpdateTransactionAsync(transaction); - success = success && res.Successful; - newTags.AddRange(res.NewTags.Where(t => !newTags.Contains(t))); - } - else - { - foreach (var t in transactions) - { - if (t.RepeatFrom == (int)transaction.Id) - { - var tt = (Transaction)t.Clone(); - tt.RepeatInterval = TransactionRepeatInterval.Never; - tt.RepeatFrom = -1; - tt.RepeatEndDate = null; - var r = await UpdateTransactionAsync(tt); - success = success && r.Successful; - newTags = newTags.Union(r.NewTags).ToList(); - } - } - var res = await UpdateTransactionAsync(transaction); - success = success && res.Successful; - newTags.AddRange(res.NewTags.Where(t => !newTags.Contains(t))); - } - return (success, newTags); - } - - /// - /// The transaction to delete from the account - /// - /// The id of the transaction to delete - /// True if successful, else false - public async Task DeleteTransactionAsync(uint id) - { - using var cmdDeleteTransaction = _database!.CreateCommand(); - cmdDeleteTransaction.CommandText = "DELETE FROM transactions WHERE id = $id"; - cmdDeleteTransaction.Parameters.AddWithValue("$id", id); - if (await cmdDeleteTransaction.ExecuteNonQueryAsync() > 0) - { - var transaction = Transactions[id]; - if (transaction.Date <= DateOnly.FromDateTime(DateTime.Now)) - { - var groupId = transaction.GroupId == -1 ? 0u : (uint)transaction.GroupId; - if (transaction.Type == TransactionType.Income) - { - Groups[groupId].Income -= transaction.Amount; - TodayIncome -= transaction.Amount; - } - else - { - Groups[groupId].Expense -= transaction.Amount; - TodayExpense -= transaction.Amount; - } - } - else - { - CalculateTransactionReminders(); - } - Transactions[id].Dispose(); - Transactions.Remove(id); - if (id + 1 == NextAvailableTransactionId) - { - if(Transactions.Count == 0) - { - NextAvailableTransactionId = 1; - } - else - { - NextAvailableTransactionId = Transactions.Max(x => x.Key) + 1; - } - } - BackupAccountToCSV(); - return true; - } - return false; - } - - /// - /// Removes a source transaction from the account - /// - /// The id of the transaction to delete - /// Whether or not to delete generated transactions associated with the source - public async Task DeleteSourceTransactionAsync(uint id, bool deleteGenerated) - { - var transactions = Transactions.Values.ToList(); - if (deleteGenerated) - { - await DeleteTransactionAsync(id); - foreach (var transaction in transactions) - { - if (transaction.RepeatFrom == (int)id) - { - await DeleteTransactionAsync(transaction.Id); - } - } - } - else - { - await DeleteTransactionAsync(id); - foreach (var transaction in transactions) - { - if (transaction.RepeatFrom == (int)id) - { - var t = (Transaction)transaction.Clone(); - t.RepeatInterval = TransactionRepeatInterval.Never; - t.RepeatFrom = -1; - t.RepeatEndDate = null; - await UpdateTransactionAsync(t); - } - } - } - CalculateTransactionReminders(); - } - - /// - /// Removes generated repeat transactions from the account - /// - /// The id of the source transaction - public async Task DeleteGeneratedTransactionsAsync(uint id) - { - var transactions = Transactions.Values.ToList(); - foreach (var transaction in transactions) - { - if (transaction.RepeatFrom == (int)id) - { - await DeleteTransactionAsync(transaction.Id); - } - } - CalculateTransactionReminders(); - } - - /// - /// Syncs repeat transactions in the account - /// - /// True if transactions were modified, else false - public async Task SyncRepeatTransactionsAsync() - { - var transactionsModified = false; - var transactions = Transactions.Values.ToList(); - var i = 0; - foreach (var transaction in transactions) - { - if (transaction.RepeatFrom == 0) - { - var dates = new List(); - var endDate = (transaction.RepeatEndDate ?? DateOnly.FromDateTime(DateTime.Now)) < DateOnly.FromDateTime(DateTime.Now) ? transaction.RepeatEndDate : DateOnly.FromDateTime(DateTime.Now); - for (var date = transaction.Date; date <= endDate; date = date.AddDays(0)) //calculate needed repeat transaction dates up until today - { - if (date != transaction.Date) - { - dates.Add(date); - } - if (transaction.RepeatInterval == TransactionRepeatInterval.Daily) - { - date = date.AddDays(1); - } - else if (transaction.RepeatInterval == TransactionRepeatInterval.Weekly) - { - date = date.AddDays(7); - } - else if (transaction.RepeatInterval == TransactionRepeatInterval.Biweekly) - { - date = date.AddDays(14); - } - else if (transaction.RepeatInterval == TransactionRepeatInterval.Monthly) - { - date = date.AddMonths(1); - } - else if (transaction.RepeatInterval == TransactionRepeatInterval.Quarterly) - { - date = date.AddMonths(3); - } - else if (transaction.RepeatInterval == TransactionRepeatInterval.Yearly) - { - date = date.AddYears(1); - } - else if (transaction.RepeatInterval == TransactionRepeatInterval.Biyearly) - { - date = date.AddYears(2); - } - } - for (var j = i; j < transactions.Count; j++) //remove dates of existing repeat transactions - { - if (transactions[j].RepeatFrom == transaction.Id) - { - dates.Remove(transactions[j].Date); - } - } - foreach (var date in dates) //create missing repeat transactions - { - var res = (await AddTransactionAsync(transaction.Repeat(NextAvailableTransactionId, date))).Successful; - transactionsModified = transactionsModified || res; - } - } - else if (transaction.RepeatFrom > 0) //delete repeat transactions if the date from the original transaction was changed to a smaller date - { - if (Transactions[(uint)transaction.RepeatFrom].RepeatEndDate < transaction.Date) - { - var res = await DeleteTransactionAsync(transaction.Id); - transactionsModified = transactionsModified || res; - } - } - i++; - } - CalculateTransactionReminders(); - return transactionsModified; - } - - /// - /// Creates an expense transaction for the transfer - /// - /// The transfer to send - /// The description for the new transaction - /// The new transaction created - public async Task SendTransferAsync(Transfer transfer, string description) - { - var transaction = new Transaction(NextAvailableTransactionId) - { - Description = description, - Type = TransactionType.Expense, - Amount = transfer.SourceAmount, - RGBA = Configuration.Current.TransferDefaultColor - }; - await AddTransactionAsync(transaction); - return transaction; - } - - /// - /// Creates an income transaction for the transfer - /// - /// - /// - /// The new transaction created - public async Task ReceiveTransferAsync(Transfer transfer, string description) - { - var transaction = new Transaction(NextAvailableTransactionId) - { - Description = description, - Type = TransactionType.Income, - Amount = transfer.DestinationAmount, - RGBA = Configuration.Current.TransferDefaultColor - }; - await AddTransactionAsync(transaction); - return transaction; - } - - /// - /// Imports transactions from a file - /// - /// The path of the file - /// The default color for a transaction - /// The default color for a group - /// ImportResult - public async Task ImportFromFileAsync(string path, string defaultTransactionRGBA, string defaultGroupRGBA) - { - if (!System.IO.Path.Exists(path)) - { - Console.Error.WriteLine($"File not found: {path}"); - return ImportResult.Empty; - } - var extension = System.IO.Path.GetExtension(path).ToLower(); - if (extension == ".csv") - { - return await ImportFromCSVAsync(path, defaultTransactionRGBA, defaultGroupRGBA); - } - else if (extension == ".ofx") - { - return await ImportFromOFXAsync(path, defaultTransactionRGBA); - } - else if (extension == ".qif") - { - return await ImportFromQIFAsync(path, defaultTransactionRGBA, defaultGroupRGBA); - } - Console.Error.WriteLine($"Unsupported file extension: {extension}"); - return ImportResult.Empty; - } - - /// - /// Imports transactions from a CSV file - /// - /// The path of the file - /// The default color for a transaction - /// The default color for a group - /// ImportResult - private async Task ImportFromCSVAsync(string path, string defaultTransactionRGBA, string defaultGroupRGBA) - { - string[]? lines; - try - { - lines = File.ReadAllLines(path); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - return ImportResult.Empty; - } - var importResult = new ImportResult(); - foreach (var line in lines) - { - var fields = line.Split(';'); - if (fields.Length != 15) - { - continue; - } - //Get Id - var id = 0u; - try - { - id = uint.Parse(fields[0]); - } - catch - { - continue; - } - if (Transactions.ContainsKey(id)) - { - continue; - } - //Get Date - var date = default(DateOnly); - try - { - date = DateOnly.Parse(fields[1], new CultureInfo("en-US")); - } - catch - { - continue; - } - //Get Description - var description = fields[2]; - //Get Type - var type = TransactionType.Income; - try - { - type = (TransactionType)int.Parse(fields[3]); - } - catch - { - continue; - } - //Get Repeat Interval - var repeat = TransactionRepeatInterval.Never; - try - { - repeat = (TransactionRepeatInterval)int.Parse(fields[4]); - } - catch - { - continue; - } - //Get Repeat From - var repeatFrom = 0; - try - { - repeatFrom = int.Parse(fields[5]); - } - catch - { - continue; - } - //Get Repeat End Date - var repeatEndDate = default(DateOnly?); - try - { - repeatEndDate = DateOnly.Parse(fields[6]); - } - catch { } - //Get Amount - var amount = 0m; - try - { - amount = decimal.Parse(fields[7], NumberStyles.Currency, new CultureInfo("en-US")); - } - catch - { - continue; - } - amount = Math.Abs(amount); - //Get RGBA - var rgba = fields[8]; - if (string.IsNullOrWhiteSpace(rgba)) - { - rgba = defaultTransactionRGBA; - } - //Get UseGroupColor - var useGroupColor = false; - try - { - useGroupColor = Convert.ToBoolean(int.Parse(fields[9])); - } - catch - { - continue; - } - //Get Group Id - var gid = 0; - try - { - gid = int.Parse(fields[10]); - } - catch - { - continue; - } - //Get Group Name - var groupName = fields[11]; - //Get Group Description - var groupDescription = fields[12]; - //Get Group RGBA - var groupRGBA = fields[13]; - //Create Group If Needed - if (gid != -1 && !Groups.ContainsKey((uint)gid)) - { - var group = new Group((uint)gid) - { - Name = groupName, - Description = groupDescription, - RGBA = string.IsNullOrWhiteSpace(groupRGBA) ? defaultGroupRGBA : groupRGBA - }; - if (await AddGroupAsync(group)) - { - importResult.NewGroupIds.Add(group.Id); - } - } - var tags = fields[14].Split(',').Where(x => !string.IsNullOrWhiteSpace(x)); - //Add Transaction - var transaction = new Transaction(id) - { - Date = date, - Description = description, - Type = type, - RepeatInterval = repeat, - Amount = amount, - GroupId = gid, - RGBA = rgba, - UseGroupColor = useGroupColor, - RepeatFrom = repeatFrom, - RepeatEndDate = repeatEndDate, - Tags = tags.ToList() - }; - var res = await AddTransactionAsync(transaction); - if (res.Successful) - { - importResult.NewTransactionIds.Add(transaction.Id); - importResult.AddTags(res.NewTags); - if (transaction.RepeatInterval != TransactionRepeatInterval.Never) - { - foreach (var pair in Transactions) - { - if (pair.Value.RepeatFrom == transaction.Id) - { - importResult.NewTransactionIds.Add(pair.Value.Id); - } - } - } - } - } - return importResult; - } - - /// - /// Imports transactions from an OFX file - /// - /// The path of the file - /// The default color for a transaction - /// ImportResult - private async Task ImportFromOFXAsync(string path, string defaultTransactionRGBA) - { - OFXDocument? ofx = null; - //Check For Security - var ofxString = File.ReadAllText(path); - if (!ofxString.Contains("SIGNONMSGSRQV1") && !ofxString.Contains("SIGNONMSGSRSV1")) - { - ofxString = ofxString.Insert(ofxString.IndexOf("") + 5, @" - - - - 0 - INFO - OK - - 20230302112111[-8:PST] - ENG - -"); - } - if(!ofxString.Contains("LEDGERBAL")) - { - ofxString = ofxString.Insert(ofxString.IndexOf("") + 15, @" - - 0.00 - 20230302112111[-8:PST] -"); - } - if (ofxString.Contains("SECURITY:TYPE1")) - { - ofxString = ofxString.Replace("SECURITY:TYPE1", "SECURITY:NONE"); - } - //Parse OFX - try - { - ofx = new OFXDocumentParser().Import(ofxString); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - return ImportResult.Empty; - } - //Transactions - var importResult = new ImportResult(); - foreach (var transaction in ofx!.Transactions) - { - if (transaction.Amount != 0) - { - var t = new Transaction(NextAvailableTransactionId) - { - Description = string.IsNullOrWhiteSpace(transaction.Name) ? (string.IsNullOrWhiteSpace(transaction.Memo) ? _("N/A") : transaction.Memo) : transaction.Name, - Date = DateOnly.FromDateTime(transaction.Date), - Type = transaction.Amount > 0 ? TransactionType.Income : TransactionType.Expense, - Amount = Math.Abs(transaction.Amount), - RGBA = defaultTransactionRGBA - }; - if ((await AddTransactionAsync(t)).Successful) - { - importResult.NewTransactionIds.Add(t.Id); - } - } - } - return importResult; - } - - /// - /// Imports transactions from a QIF file - /// - /// The path of the file - /// The default color for a transaction - /// The default color for a group - /// ImportResult - private async Task ImportFromQIFAsync(string path, string defaultTransactionRGBA, string defaultGroupRGBA) - { - QifDocument? qif = null; - try - { - var oldCulture = Thread.CurrentThread.CurrentCulture; - Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); - qif = QifDocument.Load(File.OpenRead(path)); - Thread.CurrentThread.CurrentCulture = oldCulture; - } - catch (Exception e) - { - Console.Error.WriteLine(e); - return ImportResult.Empty; - } - var importResult = new ImportResult(); - //Groups - foreach (var group in qif.CategoryListTransactions) - { - if (Groups.Values.FirstOrDefault(x => x.Name == group.CategoryName) == null) - { - var g = new Group(NextAvailableGroupId) - { - Name = group.CategoryName, - Description = group.Description, - RGBA = defaultGroupRGBA - }; - if (await AddGroupAsync(g)) - { - importResult.NewGroupIds.Add(g.Id); - } - } - } - //Transactions - foreach (var transaction in qif.BankTransactions.Concat(qif.CashTransactions).Concat(qif.CreditCardTransactions)) - { - if (transaction.Amount != 0) - { - var group = Groups.Values.FirstOrDefault(x => x.Name == transaction.Category); - var t = new Transaction(NextAvailableTransactionId) - { - Date = DateOnly.FromDateTime(transaction.Date), - Type = transaction.Amount > 0 ? TransactionType.Income : TransactionType.Expense, - Amount = Math.Abs(transaction.Amount), - GroupId = group == null ? -1 : (int)group.Id, - UseGroupColor = group != null, - RGBA = defaultTransactionRGBA - }; - if(!string.IsNullOrWhiteSpace(transaction.Payee) && !string.IsNullOrWhiteSpace(transaction.Memo)) - { - t.Description = transaction.Payee; - t.Notes = transaction.Memo; - } - else - { - t.Description = string.IsNullOrWhiteSpace(transaction.Payee) ? (string.IsNullOrWhiteSpace(transaction.Memo) ? _("N/A") : transaction.Memo) : transaction.Payee; - } - if ((await AddTransactionAsync(t)).Successful) - { - importResult.NewTransactionIds.Add(t.Id); - } - } - } - return importResult; - } - - /// - /// Exports the account to a CSV file - /// - /// The path to the CSV file - /// The information to export - /// A list of filtered ids - /// True if successful, else false - public bool ExportToCSV(string path, ExportMode exportMode, List filteredIds) - { - string result = ""; - result += "ID;Date (en_US Format);Description;Type;RepeatInterval;RepeatFrom (-1=None,0=Original,Other=Id Of Source);RepeatEndDate (en_US Format);Amount (en_US Format);RGBA;UseGroupColor (0 for false, 1 for true);Group(Id Starts At 1);GroupName;GroupDescription;GroupRGBA;Tags\n"; - var transactions = Transactions; - if (exportMode == ExportMode.CurrentView) - { - transactions = new Dictionary(); - foreach (var id in filteredIds) - { - transactions.Add(id, Transactions[id]); - } - } - foreach (var pair in transactions) - { - result += $"{pair.Value.Id};{pair.Value.Date.ToString("d", new CultureInfo("en-US"))};{pair.Value.Description};{(int)pair.Value.Type};{(int)pair.Value.RepeatInterval};{pair.Value.RepeatFrom};{(pair.Value.RepeatEndDate != null ? pair.Value.RepeatEndDate.Value.ToString("d", new CultureInfo("en-US")) : "")};{pair.Value.Amount};{pair.Value.RGBA};{(pair.Value.UseGroupColor ? "1" : "0")};{pair.Value.GroupId};"; - if (pair.Value.GroupId != -1) - { - var group = Groups[(uint)pair.Value.GroupId]; - result += $"{group.Name};{group.Description};{group.RGBA};"; - } - else - { - result += ";;;"; - } - result += $"{string.Join(',', pair.Value.Tags)}\n"; - } - try - { - Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path)!); - File.WriteAllText(path, result); - return true; - } - catch (Exception e) - { - Console.Error.WriteLine(e); - return false; - } - } - - /// - /// Exports the account to a PDF file - /// - /// The path to the PDF file - /// The information to export - /// A list of filtered ids - /// The password to protect the PDF file with (null for no security) - /// True if successful, else false - public bool ExportToPDF(string path, ExportMode exportMode, List filteredIds, string? password) - { - QuestPDF.Settings.License = LicenseType.Community; - try - { - Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path)!); - var cultureAmount = CultureHelpers.GetNumberCulture(Metadata); - var regionAmount = new RegionInfo(cultureAmount.Name); - using var appiconStream = Assembly.GetCallingAssembly().GetManifestResourceStream("NickvisionMoney.Shared.Resources.org.nickvision.money-symbolic.png")!; - using var interRegularFontStream = Assembly.GetCallingAssembly().GetManifestResourceStream("NickvisionMoney.Shared.Resources.Inter-Regular.otf")!; - using var interSemiBoldFontStream = Assembly.GetCallingAssembly().GetManifestResourceStream("NickvisionMoney.Shared.Resources.Inter-SemiBold.otf")!; - using var notoEmojiFontStream = Assembly.GetCallingAssembly().GetManifestResourceStream("NickvisionMoney.Shared.Resources.NotoEmoji-VariableFont_wght.ttf")!; - FontManager.RegisterFont(interRegularFontStream); - FontManager.RegisterFont(interSemiBoldFontStream); - FontManager.RegisterFont(notoEmojiFontStream); - Document.Create(container => - { - //Page 1 - container.Page(page => - { - //Settings - page.Size(PageSizes.Letter); - page.Margin(1, Unit.Centimetre); - page.PageColor(Colors.White); - page.DefaultTextStyle(TextStyle.Default.FontFamily("Inter").FontSize(12).Fallback(x => x.FontFamily("Noto Emoji"))); - //Header - page.Header().Row(row => - { - row.RelativeItem(2).Text(Metadata.Name).SemiBold().FontSize(16).Fallback(x => x.FontFamily("Noto Emoji").FontSize(16)); - row.RelativeItem(1).AlignRight().Width(32, Unit.Point).Height(32, Unit.Point).Image(appiconStream).FitArea(); - }); - //Content - page.Content().PaddingVertical(0.4f, Unit.Centimetre).Column(col => - { - col.Spacing(15); - //Generated Date - col.Item().Text(_("Generated: {0}", DateTime.Now.ToString("g", CultureHelpers.DateCulture))); - //Overview - col.Item().Table(tbl => - { - tbl.ColumnsDefinition(x => - { - //Type, Amount - x.RelativeColumn(); - x.RelativeColumn(); - }); - //Headers - tbl.Cell().ColumnSpan(2).Background(Colors.Grey.Lighten1).Text(_("Overview")); - //Data - var maxDate = DateOnly.FromDateTime(DateTime.Today); - var transactions = Transactions; - if (exportMode == ExportMode.CurrentView) - { - transactions = new Dictionary(); - foreach (var id in filteredIds) - { - transactions.Add(id, Transactions[id]); - } - } - foreach (var pair in transactions) - { - if (pair.Value.Date > maxDate) - { - maxDate = pair.Value.Date; - } - } - tbl.Cell().Text(_("Total")); - var total = GetTotal(filteredIds); - tbl.Cell().AlignRight().Text($"{(total < 0 ? "- " : "+ ")}{total.ToAmountString(cultureAmount, Configuration.Current.UseNativeDigits)}"); - tbl.Cell().Background(Colors.Grey.Lighten3).Text(_("Income")); - tbl.Cell().Background(Colors.Grey.Lighten3).AlignRight().Text(GetIncome(filteredIds).ToAmountString(cultureAmount, Configuration.Current.UseNativeDigits)); - tbl.Cell().Text(_("Expense")); - tbl.Cell().AlignRight().Text(GetExpense(filteredIds).ToAmountString(cultureAmount, Configuration.Current.UseNativeDigits)); - tbl.Cell().ColumnSpan(2).Background(Colors.Grey.Lighten3).Image(GenerateGraph(GraphType.IncomeExpenseOverTime, false, filteredIds, -1, -1, false)); - }); - //Metadata - col.Item().Table(tbl => - { - tbl.ColumnsDefinition(x => - { - //Type, Currency - x.RelativeColumn(); - x.RelativeColumn(); - }); - //Headers - tbl.Cell().ColumnSpan(2).Background(Colors.Grey.Lighten1).Text(_("Account Settings")); - tbl.Cell().Text(_("Account Type")).SemiBold(); - tbl.Cell().Text(_("Currency")).SemiBold(); - //Data - tbl.Cell().Background(Colors.Grey.Lighten3).Text(Metadata.AccountType switch - { - AccountType.Checking => _("Checking"), - AccountType.Savings => _("Savings"), - AccountType.Business => _("Business"), - _ => "" - }); - if (Metadata.UseCustomCurrency) - { - tbl.Cell().Background(Colors.Grey.Lighten3).Text($"{Metadata.CustomCurrencySymbol} ({Metadata.CustomCurrencyCode})"); - } - else - { - tbl.Cell().Background(Colors.Grey.Lighten3).Text($"{cultureAmount.NumberFormat.CurrencySymbol} ({regionAmount.ISOCurrencySymbol})"); - } - }); - //Groups - col.Item().Table(tbl => - { - tbl.ColumnsDefinition(x => - { - //Name, Description, Balance - x.RelativeColumn(1); - x.RelativeColumn(2); - x.RelativeColumn(1); - }); - //Headers - tbl.Cell().ColumnSpan(3).Background(Colors.Grey.Lighten1).Text(_("Groups")); - tbl.Cell().Text(_("Name")).SemiBold(); - tbl.Cell().Text(_("Description")).SemiBold(); - tbl.Cell().AlignRight().Text(_("Amount")).SemiBold(); - //Data - var i = 0; - foreach (var pair in Groups.OrderBy(x => x.Value.Name == _("Ungrouped") ? " " : x.Value.Name)) - { - var balance = GetGroupTotal(pair.Value, filteredIds); - tbl.Cell().Background(i % 2 == 0 ? Colors.Grey.Lighten3 : Colors.White).Text(pair.Value.Name); - tbl.Cell().Background(i % 2 == 0 ? Colors.Grey.Lighten3 : Colors.White).Text(pair.Value.Description); - tbl.Cell().Background(i % 2 == 0 ? Colors.Grey.Lighten3 : Colors.White).AlignRight().Text($"{(balance < 0 ? "− " : "+ ")}{balance.ToAmountString(cultureAmount, Configuration.Current.UseNativeDigits)}"); - i++; - } - tbl.Cell().ColumnSpan(3).Background(i % 2 == 0 ? Colors.Grey.Lighten3 : Colors.White).Image(GenerateGraph(GraphType.IncomeExpensePerGroup, false, filteredIds)); - }); - //Transactions - col.Item().Table(tbl => - { - tbl.ColumnsDefinition(x => - { - //ID, Date, Description, Type, GroupName, Tags, Notes, Amount - x.RelativeColumn(1.5f); - x.RelativeColumn(2); - x.RelativeColumn(3); - x.RelativeColumn(2); - x.RelativeColumn(2); - x.RelativeColumn(2); - x.RelativeColumn(3); - x.RelativeColumn(2); - }); - //Headers - tbl.Cell().ColumnSpan(8).Background(Colors.Grey.Lighten1).Text(_("Transactions")); - tbl.Cell().Text(_("Id")).SemiBold(); - tbl.Cell().Text(_("Date")).SemiBold(); - tbl.Cell().Text(_("Description")).SemiBold(); - tbl.Cell().Text(_("Type")).SemiBold(); - tbl.Cell().Text(_("Group Name")).SemiBold(); - tbl.Cell().Text(_("Tags")).SemiBold(); - tbl.Cell().Text(_("Notes")).SemiBold(); - tbl.Cell().AlignRight().Text(_("Amount")).SemiBold(); - //Data - var transactions = Transactions; - if (exportMode == ExportMode.CurrentView) - { - transactions = new Dictionary(); - foreach (var id in filteredIds) - { - transactions.Add(id, Transactions[id]); - } - } - foreach (var pair in transactions) - { - var hex = "#32"; //120 - var rgba = pair.Value.UseGroupColor ? Groups[pair.Value.GroupId <= 0 ? 0u : (uint)pair.Value.GroupId].RGBA : pair.Value.RGBA; - if (string.IsNullOrWhiteSpace(rgba)) - { - hex = "#32FFFFFF"; - } - else - { - if (rgba.StartsWith("#")) - { - rgba = rgba.Remove(0, 1); - if (rgba.Length == 8) - { - rgba = rgba.Remove(rgba.Length - 2); - } - hex += rgba; - } - else - { - rgba = rgba.Remove(0, rgba.StartsWith("rgb(") ? 4 : 5); - rgba = rgba.Remove(rgba.Length - 1); - var fields = rgba.Split(','); - hex += byte.Parse(fields[0]).ToString("X2"); - hex += byte.Parse(fields[1]).ToString("X2"); - hex += byte.Parse(fields[2]).ToString("X2"); - } - } - tbl.Cell().Background(hex).Text(pair.Value.Id.ToString()); - tbl.Cell().Background(hex).Text(pair.Value.Date.ToString("d", CultureHelpers.DateCulture)); - tbl.Cell().Background(hex).Text(pair.Value.Description.Trim()); - tbl.Cell().Background(hex).Text(pair.Value.Type switch - { - TransactionType.Income => _("Income"), - TransactionType.Expense => _("Expense"), - _ => "" - }); - tbl.Cell().Background(hex).Text(pair.Value.GroupId == -1 ? _("Ungrouped") : Groups[(uint)pair.Value.GroupId].Name); - tbl.Cell().Background(hex).Text(string.Join(", ", pair.Value.Tags)); - tbl.Cell().Background(hex).Text(pair.Value.Notes); - tbl.Cell().Background(hex).AlignRight().Text($"{(pair.Value.Type == TransactionType.Income ? "+ " : "− ")}{pair.Value.Amount.ToAmountString(cultureAmount, Configuration.Current.UseNativeDigits)}"); - } - }); - //Receipts - col.Item().Table(tbl => - { - tbl.ColumnsDefinition(x => - { - //ID, Receipt - x.RelativeColumn(.5f); - x.RelativeColumn(2); - }); - //Headers - tbl.Cell().ColumnSpan(2).Background(Colors.Grey.Lighten1).Text(_("Receipts")); - tbl.Cell().Text(_("Id")).SemiBold(); - tbl.Cell().Text(_("Receipt")).SemiBold(); - //Data - var transactions = Transactions; - if (exportMode == ExportMode.CurrentView) - { - transactions = new Dictionary(); - foreach (var id in filteredIds) - { - transactions.Add(id, Transactions[id]); - } - } - var i = 0; - foreach (var pair in transactions) - { - if (pair.Value.Receipt != null) - { - using var memoryStream = new MemoryStream(); - pair.Value.Receipt.Save(memoryStream, new JpegEncoder()); - tbl.Cell().Background(i % 2 == 0 ? Colors.Grey.Lighten3 : Colors.White).Text(pair.Value.Id.ToString()); - tbl.Cell().Background(i % 2 == 0 ? Colors.Grey.Lighten3 : Colors.White).MinWidth(300).MinHeight(300).MaxWidth(300).MaxHeight(300).Image(memoryStream.ToArray()).FitArea(); - i++; - } - } - }); - }); - //Footer - page.Footer().Row(row => - { - row.RelativeItem(2).Text(_("Nickvision Denaro Account")).FontColor(Colors.Grey.Medium); - row.RelativeItem(1).Text(x => - { - var pageString = _("Page {0}"); - if (pageString.EndsWith("{0}")) - { - x.Span(pageString.Remove(pageString.IndexOf("{0}"), 3)).FontColor(Colors.Grey.Medium); - } - x.CurrentPageNumber().FontColor(Colors.Grey.Medium); - if (pageString.StartsWith("{0}")) - { - x.Span(pageString.Remove(pageString.IndexOf("{0}"), 3)).FontColor(Colors.Grey.Medium); - } - x.AlignRight(); - }); - }); - }); - }).GeneratePdf(path); - if (password != null) - { - var pdf = PdfReader.Open(path); - var pdfSecurity = pdf.SecuritySettings; - pdfSecurity.UserPassword = password; - pdf.Save(path); - } - } - catch (Exception e) - { - Console.Error.WriteLine(e); - return false; - } - return true; - } - - /// - /// Generates a graph based on the type - /// - /// GraphType - /// Whether or not to draw the graph in dark mode - /// A list of filtered ids - /// The width of the graph - /// The height of the graph - /// Whether or not to show the legend - /// The byte[] of the graph - public byte[] GenerateGraph(GraphType type, bool darkMode, List filteredIds, int width = -1, int height = -1, bool showLegend = true) - { - InMemorySkiaSharpChart? chart = null; - if (type == GraphType.IncomeExpensePie) - { - var income = GetIncome(filteredIds); - var expense = GetExpense(filteredIds); - chart = new SKPieChart() - { - Background = SKColor.Empty, - Series = new ISeries[] - { - new PieSeries { Name = _("Income"), Values = new decimal[] { income }, Fill = new SolidColorPaint(SKColors.Green) }, - new PieSeries { Name = _("Expense"), Values = new decimal[] { expense }, Fill = new SolidColorPaint(SKColors.Red) } - }, - LegendPosition = showLegend ? LegendPosition.Top : LegendPosition.Hidden, - LegendTextPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black), - }; - } - else if (type == GraphType.IncomeExpensePerGroup) - { - var data = new Dictionary(); - foreach (var groupId in Groups.Keys) - { - var group = Groups[groupId]; - data[group.Name] = new[] { GetGroupIncome(group, filteredIds), GetGroupExpense(group, filteredIds) }; - } - chart = new SKCartesianChart() - { - Background = SKColor.Empty, - Series = new ISeries[] - { - new ColumnSeries() { Name = _("Income"), Values = data.OrderBy(x => x.Key == _("Ungrouped") ? " " : x.Key).Select(x => x.Value[0]).ToArray(), Fill = new SolidColorPaint(SKColors.Green) }, - new ColumnSeries() { Name = _("Expense"), Values = data.OrderBy(x => x.Key == _("Ungrouped") ? " " : x.Key).Select(x => x.Value[1]).ToArray(), Fill = new SolidColorPaint(SKColors.Red) }, - }, - XAxes = new Axis[] - { - new Axis() { Labels = data.Keys.OrderBy(x => x == _("Ungrouped") ? " " : x).ToArray(), LabelsPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black) } - }, - YAxes = new Axis[] - { - new Axis() { LabelsPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black) } - }, - LegendPosition = showLegend ? LegendPosition.Top : LegendPosition.Hidden, - LegendTextPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black), - }; - } - else if (type == GraphType.IncomeExpenseOverTime) - { - //Graph - var data = new Dictionary(); - foreach (var id in filteredIds) - { - var transaction = Transactions[id]; - if (!data.ContainsKey(transaction.Date)) - { - data.Add(transaction.Date, new decimal[2] { 0m, 0m }); - } - if (transaction.Type == TransactionType.Income) - { - data[transaction.Date][0] += transaction.Amount; - } - else - { - data[transaction.Date][1] += transaction.Amount; - } - } - chart = new SKCartesianChart() - { - Background = SKColor.Empty, - Series = new ISeries[] - { - new LineSeries() { Name = _("Income"), Values = data.OrderBy(x => x.Key).Select(x => x.Value[0]).ToArray(), GeometryFill = new SolidColorPaint(SKColors.Green), GeometryStroke = new SolidColorPaint(SKColors.Green), Fill = null, Stroke = new SolidColorPaint(SKColors.Green) }, - new LineSeries() { Name = _("Expense"), Values = data.OrderBy(x => x.Key).Select(x => x.Value[1]).ToArray(), GeometryFill = new SolidColorPaint(SKColors.Red), GeometryStroke = new SolidColorPaint(SKColors.Red), Fill = null, Stroke = new SolidColorPaint(SKColors.Red) } - }, - XAxes = new Axis[] - { - new Axis() { Labels = data.Keys.Order().Select(x => x.ToString("d", CultureHelpers.DateCulture)).ToArray(), LabelsPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black), LabelsRotation = 50 } - }, - YAxes = new Axis[] - { - new Axis() { LabelsPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black) } - }, - LegendPosition = showLegend ? LegendPosition.Top : LegendPosition.Hidden, - LegendTextPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black), - }; - } - else if (type == GraphType.IncomeByGroup || type == GraphType.ExpenseByGroup) - { - var data = new Dictionary(); - if (type == GraphType.IncomeByGroup) - { - foreach (var groupId in Groups.Keys) - { - var group = Groups[groupId]; - data[groupId] = GetGroupIncome(group, filteredIds); - } - } - else - { - foreach (var groupId in Groups.Keys) - { - var group = Groups[groupId]; - data[groupId] = GetGroupExpense(group, filteredIds); - } - } - var series = new List(data.Count); - foreach (var pair in data.OrderBy(x => Groups[x.Key].Name == _("Ungrouped") ? " " : Groups[x.Key].Name)) - { - var hex = "#FF"; //255 - var rgba = string.IsNullOrWhiteSpace(Groups[pair.Key].RGBA) ? Configuration.Current.GroupDefaultColor : Groups[pair.Key].RGBA; - if (rgba.StartsWith("#")) - { - rgba = rgba.Remove(0, 1); - if (rgba.Length == 8) - { - rgba = rgba.Remove(rgba.Length - 2); - } - hex += rgba; - } - else - { - rgba = rgba.Remove(0, rgba.StartsWith("rgb(") ? 4 : 5); - rgba = rgba.Remove(rgba.Length - 1); - var fields = rgba.Split(','); - hex += byte.Parse(fields[0]).ToString("X2"); - hex += byte.Parse(fields[1]).ToString("X2"); - hex += byte.Parse(fields[2]).ToString("X2"); - } - series.Add(new PieSeries() - { - Name = Groups[pair.Key].Name, - Values = new decimal[] { pair.Value }, - Fill = new SolidColorPaint(SKColor.Parse(hex)) - }); - } - chart = new SKPieChart() - { - Title = new LabelVisual() - { - Text = type == GraphType.IncomeByGroup ? _("Income") : _("Expense"), - Paint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black), - Padding = new LiveChartsCore.Drawing.Padding(15), - TextSize = 16 - }, - Background = SKColor.Empty, - Series = series, - LegendPosition = showLegend ? LegendPosition.Bottom : LegendPosition.Hidden, - LegendTextPaint = new SolidColorPaint(darkMode ? SKColors.White : SKColors.Black), - }; - } - if (chart != null) - { - if (width > 0) - { - chart.Width = width; - } - if (height > 0) - { - chart.Height = height; - } - return chart.GetImage().Encode().ToArray(); - } - return Array.Empty(); - } - - /// - /// Populates the TransactionReminders list - /// - private void CalculateTransactionReminders() - { - TransactionReminders.Clear(); - if (Metadata.TransactionRemindersThreshold == RemindersThreshold.Never) - { - return; - } - var today = DateOnly.FromDateTime(DateTime.Today); - foreach (var pair in Transactions) - { - var upcomingDate = today; - if (pair.Value.RepeatFrom == 0 && pair.Value.Date <= today) //repeat transactions - { - var latestRepeat = pair.Value; - foreach (var pair2 in Transactions) - { - if (pair2.Value.RepeatFrom == pair.Value.Id) - { - if (pair2.Value.Date > latestRepeat.Date) - { - latestRepeat = pair2.Value; - } - } - } - var nextRepeatDate = latestRepeat.Date; - if (pair.Value.RepeatInterval == TransactionRepeatInterval.Daily) - { - nextRepeatDate = nextRepeatDate.AddDays(1); - } - else if (pair.Value.RepeatInterval == TransactionRepeatInterval.Weekly) - { - nextRepeatDate = nextRepeatDate.AddDays(7); - } - else if (pair.Value.RepeatInterval == TransactionRepeatInterval.Biweekly) - { - nextRepeatDate = nextRepeatDate.AddDays(14); - } - else if (pair.Value.RepeatInterval == TransactionRepeatInterval.Monthly) - { - nextRepeatDate = nextRepeatDate.AddMonths(1); - } - else if (pair.Value.RepeatInterval == TransactionRepeatInterval.Quarterly) - { - nextRepeatDate = nextRepeatDate.AddMonths(3); - } - else if (pair.Value.RepeatInterval == TransactionRepeatInterval.Yearly) - { - nextRepeatDate = nextRepeatDate.AddYears(1); - } - else if (pair.Value.RepeatInterval == TransactionRepeatInterval.Biyearly) - { - nextRepeatDate = nextRepeatDate.AddYears(2); - } - if (nextRepeatDate > today) - { - upcomingDate = nextRepeatDate; - } - } - else if (pair.Value.Date > today) //future transactions - { - upcomingDate = pair.Value.Date; - } - if (upcomingDate != today) //add reminder - { - var culture = CultureHelpers.GetNumberCulture(Metadata); - if (Metadata.TransactionRemindersThreshold == RemindersThreshold.OneDayBefore && upcomingDate.AddDays(-1) == today) - { - TransactionReminders.Add(($"{pair.Value.Description} - {pair.Value.Amount.ToAmountString(culture, Configuration.Current.UseNativeDigits)}", _("Tomorrow"))); - } - else if (Metadata.TransactionRemindersThreshold == RemindersThreshold.OneWeekBefore && upcomingDate.AddDays(-7) <= today) - { - TransactionReminders.Add(($"{pair.Value.Description} - {pair.Value.Amount.ToAmountString(culture, Configuration.Current.UseNativeDigits)}", _("One week from now"))); - } - else if (Metadata.TransactionRemindersThreshold == RemindersThreshold.OneMonthBefore && upcomingDate.AddMonths(-1) <= today) - { - TransactionReminders.Add(($"{pair.Value.Description} - {pair.Value.Amount.ToAmountString(culture, Configuration.Current.UseNativeDigits)}", _("One month from now"))); - } - else if (Metadata.TransactionRemindersThreshold == RemindersThreshold.TwoMonthsBefore && upcomingDate.AddMonths(-2) <= today) - { - TransactionReminders.Add(($"{pair.Value.Description} - {pair.Value.Amount.ToAmountString(culture, Configuration.Current.UseNativeDigits)}", _("Two months from now"))); - } - } - } - } - - /// - /// Backups the account to CSV backup folder location - /// - private void BackupAccountToCSV() - { - if (!(_isEncrypted ?? false) && Directory.Exists(Configuration.Current.CSVBackupFolder)) - { - ExportToCSV($"{Configuration.Current.CSVBackupFolder}{System.IO.Path.DirectorySeparatorChar}{Metadata.Name}.csv", ExportMode.All, new List()); - } - } -} diff --git a/NickvisionMoney.Shared/Models/AccountMetadata.cs b/NickvisionMoney.Shared/Models/AccountMetadata.cs deleted file mode 100644 index b074e4466..000000000 --- a/NickvisionMoney.Shared/Models/AccountMetadata.cs +++ /dev/null @@ -1,287 +0,0 @@ -using Microsoft.Data.Sqlite; -using System; -using System.IO; - -namespace NickvisionMoney.Shared.Models; - -/// -/// Types of an account -/// -public enum AccountType -{ - Checking = 0, - Savings, - Business -} - -/// -/// Ways to sort transactions -/// -public enum SortBy -{ - Id = 0, - Date, - Amount -} - -/// -/// Thresholds for when to show a reminder -/// -public enum RemindersThreshold -{ - Never, - OneDayBefore, - OneWeekBefore, - OneMonthBefore, - TwoMonthsBefore -} - -/// -/// A model of metadata for an account -/// -public class AccountMetadata : ICloneable -{ - private int? _customCurrencyAmountStyle; - - /// - /// The name of the account - /// - public string Name { get; set; } - /// - /// The type of the account - /// - public AccountType AccountType { get; set; } - /// - /// Whether or not to use a custom currency - /// - public bool UseCustomCurrency { get; set; } - /// - /// The symbol of the custom currency - /// - public string? CustomCurrencySymbol { get; set; } - /// - /// The code of the custom currency - /// - public string? CustomCurrencyCode { get; set; } - /// - /// Decimal separator for custom currency - /// - public string? CustomCurrencyDecimalSeparator { get; set; } - /// - /// Group separator for custom currency - /// - public string? CustomCurrencyGroupSeparator { get; set; } - /// - /// Decimal digits number for custom currency - /// - public int? CustomCurrencyDecimalDigits { get; set; } - /// - /// The default transaction type of the account - /// - public TransactionType DefaultTransactionType { get; set; } - /// - /// The threshold for showing transaction reminders - /// - public RemindersThreshold TransactionRemindersThreshold { get; set; } - /// - /// Whether or not to show the groups section on the account view - /// - public bool ShowGroupsList { get; set; } - /// - /// Whether or not to show the tags section on the account view - /// - public bool ShowTagsList { get; set; } - /// - /// Whether or not to sort transactions from first to last - /// - public bool SortFirstToLast { get; set; } - /// - /// The way in which to sort transactions - /// - public SortBy SortTransactionsBy { get; set; } - - /// - /// Constructs a new AccountMetadata - /// - /// The name of the account - /// The type of the account - internal AccountMetadata(string name, AccountType accountType) - { - Name = name; - AccountType = accountType; - UseCustomCurrency = false; - CustomCurrencySymbol = null; - CustomCurrencyCode = null; - CustomCurrencyAmountStyle = null; - CustomCurrencyDecimalSeparator = null; - CustomCurrencyGroupSeparator = null; - CustomCurrencyDecimalDigits = null; - DefaultTransactionType = TransactionType.Income; - TransactionRemindersThreshold = RemindersThreshold.OneDayBefore; - ShowGroupsList = true; - ShowTagsList = true; - SortFirstToLast = false; - SortTransactionsBy = SortBy.Date; - } - - /// - /// The style to use for displaying an amount - /// - /// Must be a value between 0 and 3. See https://learn.microsoft.com/en-us/dotnet/api/system.globalization.numberformatinfo.currencypositivepattern?view=net-7.0#remarks for the values' meaning - public int? CustomCurrencyAmountStyle - { - get => _customCurrencyAmountStyle; - - set - { - if (value != null && (value < 0 || value > 3)) - { - value = 0; - } - _customCurrencyAmountStyle = value; - } - } - - /// - /// Updates the metadata database table with new properties - /// - /// SqliteConnection - internal static void UpdateMetadataDatabaseTable(SqliteConnection database) - { - try - { - using var cmdTableMetadataUpdate1 = database.CreateCommand(); - cmdTableMetadataUpdate1.CommandText = "ALTER TABLE metadata ADD COLUMN sortTransactionsBy INTEGER"; - cmdTableMetadataUpdate1.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableMetadataUpdate2 = database.CreateCommand(); - cmdTableMetadataUpdate2.CommandText = "ALTER TABLE metadata ADD COLUMN customDecimalSeparator TEXT"; - cmdTableMetadataUpdate2.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableMetadataUpdate3 = database.CreateCommand(); - cmdTableMetadataUpdate3.CommandText = "ALTER TABLE metadata ADD COLUMN customGroupSeparator TEXT"; - cmdTableMetadataUpdate3.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableMetadataUpdate4 = database.CreateCommand(); - cmdTableMetadataUpdate4.CommandText = "ALTER TABLE metadata ADD COLUMN customDecimalDigits INTEGER"; - cmdTableMetadataUpdate4.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableMetadataUpdate5 = database.CreateCommand(); - cmdTableMetadataUpdate5.CommandText = "ALTER TABLE metadata ADD COLUMN showTagsList INTEGER"; - cmdTableMetadataUpdate5.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableMetadataUpdate6 = database.CreateCommand(); - cmdTableMetadataUpdate6.CommandText = "ALTER TABLE metadata ADD COLUMN transactionRemindersThreshold INTEGER"; - cmdTableMetadataUpdate6.ExecuteNonQuery(); - } - catch { } - try - { - using var cmdTableMetadataUpdate7 = database.CreateCommand(); - cmdTableMetadataUpdate7.CommandText = "ALTER TABLE metadata ADD COLUMN customAmountStyle INTEGER"; - cmdTableMetadataUpdate7.ExecuteNonQuery(); - } - catch { } - } - - /// - /// Loads metadata from an account file - /// - /// The path to the account file - /// AccountMetadata? - public static AccountMetadata? LoadFromAccountFile(string path, string? password) - { - if (Path.GetExtension(path).ToLower() != ".nmoney") - { - return null; - } - var connectionString = new SqliteConnectionStringBuilder() - { - DataSource = path, - Mode = SqliteOpenMode.ReadOnly, - Pooling = false - }; - if (!string.IsNullOrEmpty(password)) - { - connectionString.Password = password; - } - using var database = new SqliteConnection(connectionString.ConnectionString); - try - { - database.Open(); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - database.Close(); - return null; - } - // Update Metadata Table - UpdateMetadataDatabaseTable(database); - // Get Metadata - var result = new AccountMetadata(Path.GetFileNameWithoutExtension(path), AccountType.Checking); - var cmdQueryMetadata = database.CreateCommand(); - cmdQueryMetadata.CommandText = "SELECT * FROM metadata where id = 0"; - using var readQueryMetadata = cmdQueryMetadata.ExecuteReader(); - if (readQueryMetadata.HasRows) - { - readQueryMetadata.Read(); - result.Name = readQueryMetadata.GetString(1); - result.AccountType = (AccountType)readQueryMetadata.GetInt32(2); - result.UseCustomCurrency = readQueryMetadata.GetBoolean(3); - result.CustomCurrencySymbol = string.IsNullOrWhiteSpace(readQueryMetadata.GetString(4)) ? null : readQueryMetadata.GetString(4); - result.CustomCurrencyCode = string.IsNullOrWhiteSpace(readQueryMetadata.GetString(5)) ? null : readQueryMetadata.GetString(5); - result.DefaultTransactionType = (TransactionType)readQueryMetadata.GetInt32(6); - result.ShowGroupsList = readQueryMetadata.GetBoolean(7); - result.SortFirstToLast = readQueryMetadata.GetBoolean(8); - result.SortTransactionsBy = readQueryMetadata.IsDBNull(9) ? SortBy.Id : (SortBy)readQueryMetadata.GetInt32(9); - result.CustomCurrencyDecimalSeparator = readQueryMetadata.IsDBNull(10) ? null : (string.IsNullOrEmpty(readQueryMetadata.GetString(10)) ? null : readQueryMetadata.GetString(10)); - result.CustomCurrencyGroupSeparator = readQueryMetadata.IsDBNull(11) ? null : (string.IsNullOrEmpty(readQueryMetadata.GetString(11)) ? null : readQueryMetadata.GetString(11)); - result.CustomCurrencyDecimalDigits = readQueryMetadata.IsDBNull(12) ? null : readQueryMetadata.GetInt32(12); - result.ShowTagsList = readQueryMetadata.IsDBNull(13) ? true : readQueryMetadata.GetBoolean(13); - result.TransactionRemindersThreshold = readQueryMetadata.IsDBNull(14) ? RemindersThreshold.OneDayBefore : (RemindersThreshold)readQueryMetadata.GetInt32(14); - result.CustomCurrencyAmountStyle = readQueryMetadata.IsDBNull(15) ? null : readQueryMetadata.GetInt32(15); - } - database.Close(); - return result; - } - - /// - /// Clones the account metadata - /// - /// A new AccountMetadata - public object Clone() - { - return new AccountMetadata(Name, AccountType) - { - UseCustomCurrency = UseCustomCurrency, - CustomCurrencySymbol = CustomCurrencySymbol, - CustomCurrencyCode = CustomCurrencyCode, - CustomCurrencyAmountStyle = CustomCurrencyAmountStyle, - CustomCurrencyDecimalSeparator = CustomCurrencyDecimalSeparator, - CustomCurrencyGroupSeparator = CustomCurrencyGroupSeparator, - CustomCurrencyDecimalDigits = CustomCurrencyDecimalDigits, - DefaultTransactionType = DefaultTransactionType, - TransactionRemindersThreshold = TransactionRemindersThreshold, - ShowGroupsList = ShowGroupsList, - ShowTagsList = ShowTagsList, - SortFirstToLast = SortFirstToLast, - SortTransactionsBy = SortTransactionsBy - }; - } -} diff --git a/NickvisionMoney.Shared/Models/Configuration.cs b/NickvisionMoney.Shared/Models/Configuration.cs deleted file mode 100644 index ad4c3964a..000000000 --- a/NickvisionMoney.Shared/Models/Configuration.cs +++ /dev/null @@ -1,231 +0,0 @@ -using Nickvision.Aura; -using System.Collections.Generic; -using System.IO; -using System.Text.Json.Serialization; - -namespace NickvisionMoney.Shared.Models; - -/// -/// Decimal Separator Inserting -/// -public enum InsertSeparator -{ - Off = 0, - NumpadOnly, - PeriodComma -} - -/// -/// A model for the configuration of the application -/// -public class Configuration : ConfigurationBase -{ - /// - /// The preferred theme for the application - /// - public Theme Theme { get; set; } - /// - /// The first recent account - /// - [JsonInclude] - public RecentAccount RecentAccount1 { get; private set; } - /// - /// The second recent account - /// - [JsonInclude] - public RecentAccount RecentAccount2 { get; private set; } - /// - /// The third recent account - /// - [JsonInclude] - public RecentAccount RecentAccount3 { get; private set; } - /// - /// The default color of a transaction - /// - public string TransactionDefaultColor { get; set; } - /// - /// The default color of a transfer - /// - public string TransferDefaultColor { get; set; } - /// - /// The default color of a group - /// - public string GroupDefaultColor { get; set; } - /// - /// The color of accounts with Checking type - /// - public string AccountCheckingColor { get; set; } - /// - /// The color of accounts with Savings type - /// - public string AccountSavingsColor { get; set; } - /// - /// The color of accounts with Business type - /// - public string AccountBusinessColor { get; set; } - /// - /// Whether to use native digits - /// - public bool UseNativeDigits { get; set; } - /// - /// Decimal Separator Inserting - /// - public InsertSeparator InsertSeparator { get; set; } - /// - /// A folder to use to backup accounts as CSV - /// - public string CSVBackupFolder { get; set; } - /// - /// Whether or not to show graphs - /// - public bool ShowGraphs { get; set; } - - /// - /// Constructs a Configuration - /// - public Configuration() - { - Theme = Theme.System; - RecentAccount1 = new RecentAccount(); - RecentAccount2 = new RecentAccount(); - RecentAccount3 = new RecentAccount(); - TransactionDefaultColor = "rgb(53,132,228)"; - TransferDefaultColor = "rgb(192,97,203)"; - GroupDefaultColor = "rgb(51,209,122)"; - AccountCheckingColor = "rgb(129,61,156)"; - AccountSavingsColor = "rgb(53,132,228)"; - AccountBusinessColor = "rgb(38,162,105)"; - UseNativeDigits = true; - InsertSeparator = InsertSeparator.NumpadOnly; - CSVBackupFolder = ""; - ShowGraphs = true; - } - - /// - /// Gets the singleton object - /// - internal static Configuration Current => Aura.Active.GetConfig("config"); - - /// - /// Gets the list of recent accounts available - /// - [JsonIgnore] - public List RecentAccounts - { - get - { - var recents = new List(); - var update = false; - if (File.Exists(RecentAccount1.Path)) - { - recents.Add(RecentAccount1); - } - else - { - update = true; - } - if (File.Exists(RecentAccount2.Path)) - { - recents.Add(RecentAccount2); - } - else - { - update = true; - } - if (File.Exists(RecentAccount3.Path)) - { - recents.Add(RecentAccount3); - } - else - { - update = true; - } - if (update) - { - if (recents.Count == 0) - { - RecentAccount1 = new RecentAccount(); - RecentAccount2 = new RecentAccount(); - RecentAccount3 = new RecentAccount(); - } - else if (recents.Count == 1) - { - RecentAccount1 = recents[0]; - RecentAccount2 = new RecentAccount(); - RecentAccount3 = new RecentAccount(); - } - else if (recents.Count == 2) - { - RecentAccount1 = recents[0]; - RecentAccount2 = recents[1]; - RecentAccount3 = new RecentAccount(); - } - Configuration.Current.Save(); - } - return recents; - } - } - - /// - /// Adds a recent account - /// - /// The new recent account - public void AddRecentAccount(RecentAccount newRecentAccount) - { - if (newRecentAccount == RecentAccount1) - { - RecentAccount1.Name = newRecentAccount.Name; - RecentAccount1.Type = newRecentAccount.Type; - } - else if (newRecentAccount == RecentAccount2) - { - var temp = RecentAccount1; - RecentAccount1 = RecentAccount2; - RecentAccount2 = temp; - RecentAccount1.Name = newRecentAccount.Name; - RecentAccount1.Type = newRecentAccount.Type; - } - else if (newRecentAccount == RecentAccount3) - { - var temp1 = RecentAccount1; - var temp2 = RecentAccount2; - RecentAccount1 = RecentAccount3; - RecentAccount2 = temp1; - RecentAccount3 = temp2; - RecentAccount1.Name = newRecentAccount.Name; - RecentAccount1.Type = newRecentAccount.Type; - } - else - { - RecentAccount3 = RecentAccount2; - RecentAccount2 = RecentAccount1; - RecentAccount1 = newRecentAccount; - } - } - - /// - /// Removes a recent account - /// - /// The RecentAccount to remove - public void RemoveRecentAccount(RecentAccount recentAccount) - { - var ra1 = RecentAccount1; - var ra2 = RecentAccount2; - var ra3 = RecentAccount3; - RecentAccount1 = new RecentAccount(); - RecentAccount2 = new RecentAccount(); - RecentAccount3 = new RecentAccount(); - if (ra3.Path != recentAccount.Path) - { - AddRecentAccount(ra3); - } - if (ra2.Path != recentAccount.Path) - { - AddRecentAccount(ra2); - } - if (ra1.Path != recentAccount.Path) - { - AddRecentAccount(ra1); - } - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Models/CurrencyConversionService.cs b/NickvisionMoney.Shared/Models/CurrencyConversionService.cs deleted file mode 100644 index 549bfc6ae..000000000 --- a/NickvisionMoney.Shared/Models/CurrencyConversionService.cs +++ /dev/null @@ -1,173 +0,0 @@ -using Nickvision.Aura; -using System; -using System.Collections.Generic; -using System.IO; -using System.Net.Http; -using System.Text.Json; -using System.Threading.Tasks; - -namespace NickvisionMoney.Shared.Models; - -/// -/// A model of a result of a currency conversion -/// -public class CurrencyConversion -{ - /// - /// The currency code of the source amount - /// - public string SourceCurrency { get; init; } - /// - /// The source amount to convert - /// - public decimal SourceAmount { get; init; } - /// - /// The currency code for the result amount - /// - public string ResultCurrency { get; init; } - /// - /// The rate of conversion from the source currency to the result currency - /// - public decimal ConversionRate { get; init; } - - /// - /// The result amount - /// - public decimal ResultAmount => SourceAmount * ConversionRate; - - /// - /// Constructs a CurrencyConversion - /// - /// The currency code of the source amount - /// The source amount to convert - /// The currency code for the result amount - /// The rate of conversion from the source currency to the result currency - public CurrencyConversion(string sourceCurrency, decimal sourceAmount, string resultCurrency, decimal conversionRate) - { - SourceCurrency = sourceCurrency; - SourceAmount = sourceAmount; - ResultCurrency = resultCurrency; - ConversionRate = conversionRate; - } -} - -/// -/// A service for getting currency conversions -/// -public static class CurrencyConversionService -{ - private static readonly HttpClient _http; - - /// - /// Constructs a static CurrencyConversionService - /// - static CurrencyConversionService() - { - _http = new HttpClient(); - _http.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0"); - } - - /// - /// Converts a sourceAmount from the sourceCurrency to the resultCurrency - /// - /// The currency code of the source amount - /// The source amount to convert - /// The currency code for the result amount - /// CurrencyConversion if successful, else null - public static async Task ConvertAsync(string sourceCurrency, decimal sourceAmount, string resultCurrency) - { - if (sourceCurrency == resultCurrency) - { - return new CurrencyConversion(sourceCurrency, sourceAmount, resultCurrency, 1); - } - var rates = await GetConversionRatesAsync(sourceCurrency); - if (rates == null || !rates.ContainsKey(resultCurrency)) - { - return null; - } - return new CurrencyConversion(sourceCurrency, sourceAmount, resultCurrency, rates[resultCurrency]); - } - - /// - /// Gets a dictionary of conversion rates from the source currency - /// - /// The currency code to get converting rates for - /// Dictionary<string, decimal> is successful, else false - /// This method will cache the data for the sourceCurrency on disk - public static async Task?> GetConversionRatesAsync(string sourceCurrency) - { - var path = $"{UserDirectories.ApplicationCache}{Path.DirectorySeparatorChar}currency_{sourceCurrency}.json"; - var needsUpdate = !File.Exists(path); - JsonDocument? json = null; - if (!needsUpdate) //File.Exists(path) - { - try - { - json = JsonDocument.Parse(await File.ReadAllTextAsync(path)); - var seconds = json.RootElement.GetProperty("time_next_update_unix").GetInt64(); - if (DateTimeOffset.FromUnixTimeSeconds(seconds).ToLocalTime() <= DateTime.Now) - { - needsUpdate = true; - json.Dispose(); - } - } - catch (Exception e) - { - // Couldn't get the cached rates - Console.Error.WriteLine(e); - needsUpdate = true; - json?.Dispose(); - } - } - if (needsUpdate) - { - var apiUrl = $"https://open.er-api.com/v6/latest/{sourceCurrency}"; - try - { - var response = await _http.GetStringAsync(apiUrl); - json = JsonDocument.Parse(response); - if (json.RootElement.GetProperty("result").GetString() != "success") - { - json.Dispose(); - return null; - } - } - catch (Exception e) - { - Console.Error.WriteLine(e); - json?.Dispose(); - return null; - } - } - if (json != null) - { - try - { - var ratesJson = json.RootElement.GetProperty("rates").ToString() ?? ""; - var rates = JsonSerializer.Deserialize>(ratesJson); - if (needsUpdate) - { - try - { - await File.WriteAllTextAsync(path, json.RootElement.ToString() ?? ""); - } - catch (Exception e) - { - Console.Error.WriteLine(e); - } - } - return rates; - } - catch (Exception e) - { - Console.Error.WriteLine(e); - return null; - } - finally - { - json.Dispose(); - } - } - return null; - } -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Models/Group.cs b/NickvisionMoney.Shared/Models/Group.cs deleted file mode 100644 index 20cece034..000000000 --- a/NickvisionMoney.Shared/Models/Group.cs +++ /dev/null @@ -1,172 +0,0 @@ -using System; - -namespace NickvisionMoney.Shared.Models; - -/// -/// A model of a transaction -/// -public class Group : ICloneable, IComparable, IEquatable -{ - /// - /// The id of the group - /// - public uint Id { get; init; } - /// - /// The name of the group - /// - public string Name { get; set; } - /// - /// The description of the group - /// - public string Description { get; set; } - /// - /// The income of the group - /// - public decimal Income { get; set; } - /// - /// The expense of the group - /// - public decimal Expense { get; set; } - /// - /// The RGBA color of the group - /// - public string RGBA { get; set; } - - /// - /// The balance of the group - /// - public decimal Balance => Income - Expense; - - /// - /// Constructs a group - /// - /// The id of the group - public Group(uint id) - { - Id = id; - Name = ""; - Description = ""; - Income = 0m; - Expense = 0m; - RGBA = "rgb(0,0,0)"; - } - - /// - /// Clones the group - /// - /// A new Group - public object Clone() - { - return new Group(Id) - { - Name = Name, - Description = Description, - Income = Income, - Expense = Expense, - RGBA = RGBA - }; - } - - /// - /// Clones the group but replaces the balance - /// - /// A new income to use - /// A new expense to use - /// A new Group - public Group Clone(decimal newIncome, decimal newExpense) - { - return new Group(Id) - { - Name = Name, - Description = Description, - Income = newIncome, - Expense = newExpense, - RGBA = RGBA - }; - } - - /// - /// Compares this with other - /// - /// The Group object to compare to - /// -1 if this is less than other. 0 if this is equal to other. 1 if this is greater than other - /// Thrown if other is null - public int CompareTo(Group? other) - { - if (other == null) - { - throw new NullReferenceException(); - } - if (this < other) - { - return -1; - } - else if (this == other) - { - return 0; - } - else - { - return 1; - } - } - - /// - /// Gets whether or not an object is equal to this Group - /// - /// The object to compare - /// True if equals, else false - public override bool Equals(object? obj) - { - if (obj is Group toCompare) - { - return Id == toCompare.Id; - } - return false; - } - - /// - /// Gets whether or not an object is equal to this Group - /// - /// The Group? object to compare - /// True if equals, else false - public bool Equals(Group? obj) => Equals((object?)obj); - - /// - /// Gets a hash code for the object - /// - /// The hash code for the object - public override int GetHashCode() => Id.GetHashCode(); - - /// - /// Compares two Group objects by == - /// - /// The first Group object - /// The second Group object - /// True if a == b, else false - public static bool operator ==(Group? a, Group? b) => a?.Id == b?.Id; - - /// - /// Compares two Group objects by != - /// - /// The first Group object - /// The second Group object - /// True if a != b, else false - public static bool operator !=(Group? a, Group? b) => a?.Id != b?.Id; - - /// - /// Compares two Group objects by > - /// - /// The first Group object - /// The second Group object - /// True if a > b, else false - public static bool operator <(Group? a, Group? b) => a?.Name.CompareTo(b?.Name) == -1; - - /// - /// Compares two Group objects by < - /// - /// The first Group object - /// The second Group object - /// True if a < b, else false - public static bool operator >(Group? a, Group? b) => a?.Name.CompareTo(b?.Name) == 1; -} diff --git a/NickvisionMoney.Shared/Models/ImportResult.cs b/NickvisionMoney.Shared/Models/ImportResult.cs deleted file mode 100644 index c92ae32cc..000000000 --- a/NickvisionMoney.Shared/Models/ImportResult.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace NickvisionMoney.Shared.Models; - -/// -/// A model of the result from importing a file -/// -public class ImportResult -{ - private static readonly ImportResult _empty; - - /// - /// An empty ImportResult - /// - public static ImportResult Empty => _empty; - - /// - /// The list of newly added transaction ids - /// - public List NewTransactionIds { get; init; } - /// - /// The list of newly added group ids - /// - public List NewGroupIds { get; init; } - /// - /// The list of newly added tags - /// - public List NewTags { get; init; } - /// - /// Whether or not the ImportResult is empty - /// - public bool IsEmpty => NewTransactionIds.Count == 0 && NewGroupIds.Count == 0 && NewTags.Count == 0; - - /// - /// Static constructor for ImportResult - /// - static ImportResult() - { - _empty = new ImportResult(); - } - - /// - /// Creates an ImportResult - /// - internal ImportResult() - { - NewTransactionIds = new List(); - NewGroupIds = new List(); - NewTags = new List(); - } - - /// - /// Adds a list of tags to the new tags - /// - /// IEnumerable - /// Will only add non-existing tags. Existing tags will just be skipped to avoid duplicates - internal void AddTags(IEnumerable tags) => NewTags.AddRange(tags.Where(t => !NewTags.Contains(t))); -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Models/RecentAccount.cs b/NickvisionMoney.Shared/Models/RecentAccount.cs deleted file mode 100644 index 81a2c197f..000000000 --- a/NickvisionMoney.Shared/Models/RecentAccount.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; - -namespace NickvisionMoney.Shared.Models; - -/// -/// A model of a recent account -/// -public class RecentAccount : IEquatable -{ - /// - /// The path of the recent account - /// - public string Path { get; set; } - /// - /// The name of the recent account - /// - public string Name { get; set; } - /// - /// The type of the recent account - /// - public AccountType Type { get; set; } - - /// - /// Constructs a RecentAccount - /// - /// The path of the recent account - public RecentAccount(string path = "null") - { - Path = path; - Name = System.IO.Path.GetFileNameWithoutExtension(Path); - Type = AccountType.Checking; - } - - /// - /// Gets whether or not an object is equal to this RecentAccount - /// - /// The object to compare - /// True if equals, else false - public override bool Equals(object? obj) - { - if (obj is RecentAccount toCompare) - { - return Path == toCompare.Path; - } - return false; - } - - /// Gets whether or not an object is equal to this RecentAccount - ///
- /// The RecentAccount? object to compare - /// True if equals, else false - public bool Equals(RecentAccount? other) => Equals(other); - - /// - /// Gets a hash code for the object - /// - /// The hash code for the object - public override int GetHashCode() => Path.GetHashCode(); - - /// - /// Compares two RecentAccount objects by == - /// - /// The first RecentAccount object - /// The second RecentAccount object - /// True if a == b, else false - public static bool operator ==(RecentAccount? a, RecentAccount? b) => a?.Path == b?.Path; - - /// - /// Compares two RecentAccount objects by != - /// - /// The first RecentAccount object - /// The second RecentAccount object - /// True if a != b, else false - public static bool operator !=(RecentAccount? a, RecentAccount? b) => a?.Path != b?.Path; -} diff --git a/NickvisionMoney.Shared/Models/Theme.cs b/NickvisionMoney.Shared/Models/Theme.cs deleted file mode 100644 index 534bbb391..000000000 --- a/NickvisionMoney.Shared/Models/Theme.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace NickvisionMoney.Shared.Models; - -/// -/// Application themes -/// -public enum Theme -{ - Light = 0, - Dark, - System -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Models/Transaction.cs b/NickvisionMoney.Shared/Models/Transaction.cs deleted file mode 100644 index cf4ffe51c..000000000 --- a/NickvisionMoney.Shared/Models/Transaction.cs +++ /dev/null @@ -1,294 +0,0 @@ -using SixLabors.ImageSharp; -using SixLabors.ImageSharp.Processing; -using System; -using System.Collections.Generic; - -namespace NickvisionMoney.Shared.Models; - -/// -/// Types of a transaction -/// -public enum TransactionType -{ - Income = 0, - Expense -} - -/// -/// Repeat intervals for a transaction -/// -public enum TransactionRepeatInterval -{ - Never = 0, - Daily, - Weekly, - Biweekly = 7, - Monthly = 3, - Quarterly, - Yearly, - Biyearly -} - -/// -/// A model of a transaction -/// -public class Transaction : ICloneable, IComparable, IDisposable, IEquatable -{ - private bool _disposed; - private int _groupId; - - /// - /// The Id of the transaction - /// - public uint Id { get; init; } - /// - /// The date of the transaction - /// - public DateOnly Date { get; set; } - /// - /// The description of the transaction - /// - public string Description { get; set; } - /// - /// The type of the transaction - /// - public TransactionType Type { get; set; } - /// - /// The repeat inerval of the transaction - /// - public TransactionRepeatInterval RepeatInterval { get; set; } - /// - /// The amount of the transaction - /// - public decimal Amount { get; set; } - /// - /// The RGBA color of the transaction - /// - public string RGBA { get; set; } - /// - /// Whether to use group color for transaction - /// - public bool UseGroupColor { get; set; } - /// - /// The receipt image for the transaction - /// - public Image? Receipt { get; set; } - /// - /// The id of the transaction to repeat from (or -1 for non repeat transaction, 0 for original repeat transaction) - /// - public int RepeatFrom { get; set; } - /// - /// The date of when to end the repeat sequence - /// - public DateOnly? RepeatEndDate { get; set; } - /// - /// A tags list for the Transaction - /// - public List Tags { get; set; } - /// - /// The notes for the transaction - /// - public string Notes { get; set; } - - /// - /// Constructs a Transaction - /// - /// The id of the transaction - public Transaction(uint id = 0) - { - _disposed = false; - Id = id; - Date = DateOnly.FromDateTime(DateTime.Today); - Description = ""; - Type = TransactionType.Income; - RepeatInterval = TransactionRepeatInterval.Never; - Amount = 0m; - GroupId = -1; - RGBA = "rgb(0,0,0)"; - UseGroupColor = true; - Receipt = null; - RepeatFrom = -1; - RepeatEndDate = null; - Tags = new List(); - Notes = ""; - } - - /// - /// Finalizes the Transaction - /// - ~Transaction() => Dispose(false); - - /// - /// The group id of the transaction - /// - public int GroupId - { - get => _groupId; - - set - { - if (value <= 0) - { - value = -1; - } - _groupId = value; - } - } - - /// - /// Frees resources used by the Transaction object - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Frees resources used by the Transaction object - /// - protected virtual void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - if (disposing) - { - Receipt?.Dispose(); - } - _disposed = true; - } - - /// - /// Creates a repeat transaction from this transaction - /// - /// The new id to use - /// The new date to use - /// A new transaction - public Transaction Repeat(uint newId, DateOnly newDate) - { - return new Transaction(newId) - { - Date = newDate, - Description = Description, - Type = Type, - RepeatInterval = RepeatInterval, - Amount = Amount, - GroupId = GroupId, - RGBA = RGBA, - UseGroupColor = UseGroupColor, - Receipt = Receipt?.Clone((x) => { }) ?? null, - RepeatFrom = (int)Id, - RepeatEndDate = RepeatEndDate, - Tags = new List(Tags), - Notes = Notes - }; - } - - /// - /// Clones the transaction - /// - /// A new transaction - public object Clone() - { - return new Transaction(Id) - { - Date = Date, - Description = Description, - Type = Type, - RepeatInterval = RepeatInterval, - Amount = Amount, - GroupId = GroupId, - RGBA = RGBA, - UseGroupColor = UseGroupColor, - Receipt = Receipt?.Clone((x) => { }) ?? null, - RepeatFrom = RepeatFrom, - RepeatEndDate = RepeatEndDate, - Tags = new List(Tags), - Notes = Notes - }; - } - - /// - /// Compares this with other - /// - /// The Transaction object to compare to - /// -1 if this is less than other. 0 if this is equal to other. 1 if this is greater than other - /// Thrown if other is null - public int CompareTo(Transaction? other) - { - if (other == null) - { - throw new NullReferenceException(); - } - if (this < other) - { - return -1; - } - if (this == other) - { - return 0; - } - return 1; - } - - /// - /// Gets whether or not an object is equal to this Transaction - /// - /// The object to compare - /// True if equals, else false - public override bool Equals(object? obj) - { - if (obj is Transaction toCompare) - { - return Id == toCompare.Id; - } - return false; - } - - /// - /// Gets whether or not an object is equal to this Transaction - /// - /// The Transaction? object to compare - /// True if equals, else false - public bool Equals(Transaction? obj) => Equals((object?)obj); - - /// - /// Gets a hash code for the object - /// - /// The hash code for the object - public override int GetHashCode() => Id.GetHashCode(); - - /// - /// Compares two Transaction objects by == - /// - /// The first Transaction object - /// The second Transaction object - /// True if a == b, else false - public static bool operator ==(Transaction? a, Transaction? b) => a?.Id == b?.Id; - - /// - /// Compares two Transaction objects by != - /// - /// The first Transaction object - /// The second Transaction object - /// True if a != b, else false - public static bool operator !=(Transaction? a, Transaction? b) => a?.Id != b?.Id; - - /// - /// Compares two Transaction objects by > - /// - /// The first Transaction object - /// The second Transaction object - /// True if a > b, else false - public static bool operator <(Transaction? a, Transaction? b) => a?.Id < b?.Id; - - /// - /// Compares two Transaction objects by < - /// - /// The first Transaction object - /// The second Transaction object - /// True if a < b, else false - public static bool operator >(Transaction? a, Transaction? b) => a?.Id > b?.Id; -} diff --git a/NickvisionMoney.Shared/Models/Transfer.cs b/NickvisionMoney.Shared/Models/Transfer.cs deleted file mode 100644 index 865a1baa1..000000000 --- a/NickvisionMoney.Shared/Models/Transfer.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.IO; - -namespace NickvisionMoney.Shared.Models; - -/// -/// A model of a transfer -/// -public class Transfer -{ - /// - /// The path to the source account - /// - public string SourceAccountPath { get; init; } - /// - /// The name of the source account - /// - public string SourceAccountName { get; set; } - /// - /// The amount to transfer from the source account - /// - public decimal SourceAmount { get; set; } - /// - /// The path to the destination account - /// - public string DestinationAccountPath { get; set; } - /// - /// The name of the destination account - /// - public string DestinationAccountName { get; set; } - /// - /// The password for the destination account (if needed) - /// - public string? DestinationAccountPassword { get; set; } - /// - /// The rate of converting the source amount to the destination amount - /// - public decimal ConversionRate { get; set; } - - /// - /// The amount to transfer from the destination account - /// - public decimal DestinationAmount => SourceAmount / ConversionRate; - - /// - /// Constructs a Transfer - /// - /// The path to the source account - /// The name of the source account - public Transfer(string sourceAccountPath, string? sourceAccountName = null) - { - SourceAccountPath = sourceAccountPath; - SourceAccountName = sourceAccountName ?? Path.GetFileNameWithoutExtension(sourceAccountPath); - SourceAmount = 0m; - DestinationAccountPath = ""; - DestinationAccountName = ""; - DestinationAccountPassword = null; - ConversionRate = 1.0m; - } -} diff --git a/NickvisionMoney.Shared/NickvisionMoney.Shared.csproj b/NickvisionMoney.Shared/NickvisionMoney.Shared.csproj deleted file mode 100644 index 430ad2f53..000000000 --- a/NickvisionMoney.Shared/NickvisionMoney.Shared.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - net8.0 - enable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/NickvisionMoney.Shared/Resources/AccountExport.pdf b/NickvisionMoney.Shared/Resources/AccountExport.pdf deleted file mode 100644 index eec2f941f..000000000 Binary files a/NickvisionMoney.Shared/Resources/AccountExport.pdf and /dev/null differ diff --git a/NickvisionMoney.Shared/Resources/Inter-Regular.otf b/NickvisionMoney.Shared/Resources/Inter-Regular.otf deleted file mode 100644 index 84e6a61c3..000000000 Binary files a/NickvisionMoney.Shared/Resources/Inter-Regular.otf and /dev/null differ diff --git a/NickvisionMoney.Shared/Resources/Inter-SemiBold.otf b/NickvisionMoney.Shared/Resources/Inter-SemiBold.otf deleted file mode 100644 index daf4c4413..000000000 Binary files a/NickvisionMoney.Shared/Resources/Inter-SemiBold.otf and /dev/null differ diff --git a/NickvisionMoney.Shared/Resources/NotoEmoji-VariableFont_wght.ttf b/NickvisionMoney.Shared/Resources/NotoEmoji-VariableFont_wght.ttf deleted file mode 100644 index 8f0aa0b13..000000000 Binary files a/NickvisionMoney.Shared/Resources/NotoEmoji-VariableFont_wght.ttf and /dev/null differ diff --git a/NickvisionMoney.Shared/Resources/org.nickvision.money.Source.svg b/NickvisionMoney.Shared/Resources/org.nickvision.money.Source.svg deleted file mode 100644 index 7b8e84585..000000000 --- a/NickvisionMoney.Shared/Resources/org.nickvision.money.Source.svg +++ /dev/null @@ -1,784 +0,0 @@ - - - -Adwaita Icon Templateimage/svg+xmlGNOME Design TeamAdwaita Icon TemplateHicolorSymbolic diff --git a/NickvisionMoney.Shared/Resources/po/LINGUAS b/NickvisionMoney.Shared/Resources/po/LINGUAS deleted file mode 100644 index caa772592..000000000 --- a/NickvisionMoney.Shared/Resources/po/LINGUAS +++ /dev/null @@ -1,27 +0,0 @@ -ar -cs -da -de -es -et -fi -fr -gl -hi -hr -id -it -ja -nl -oc -pl -pt -pt_BR -ro -ru -sv -ta -tr -ur -zh_CN -bg diff --git a/NickvisionMoney.Shared/Resources/po/ar.po b/NickvisionMoney.Shared/Resources/po/ar.po deleted file mode 100644 index 9d65d2266..000000000 --- a/NickvisionMoney.Shared/Resources/po/ar.po +++ /dev/null @@ -1,1864 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-12-06 07:04+0000\n" -"Last-Translator: ButterflyOfFire \n" -"Language-Team: Arabic \n" -"Language: ar\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\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 ? 4 : 5;\n" -"X-Generator: Weblate 5.3-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(انسخ)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} من {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "لا معاملة" -msgstr[1] "معاملة واحدة" -msgstr[2] "معاملتان" -msgstr[3] "{0} معاملات" -msgstr[4] "{0} معاملةً" -msgstr[5] "{0} معاملة" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "اسم الحساب" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "اسم الحساب (موجود)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "اسم الحساب (مفتوح)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "إعدادات الحساب" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "نوع الحساب" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "أضف" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "أضف معاملةً جديدةً أو استورد معاملات من ملفٍّ." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "أأضيف كلمة سرٍّ لملفِّ البي‌دي‌إف؟" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "كلُّ الملفَّات" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "المَبلغ" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "المبلغ (غير صالح)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "طبِّق" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"أمتيقِّن من أنك تريد حذف هذه المجموعة؟\n" -"هذا الإجراء نهائيٌّ." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"أمتيقِّن من أنك تريد حذف هذه المعاملة؟\n" -"هذا الإجراء نهائيٌّ." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "أعمال" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "تعذَّر الوصول للمجلَّد المحدَّد. تأكَّد من أذونات فلاتباك." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "ألغِ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "غيِّر كلمة السرِّ" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "جارٍ" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "أغلق" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "مساهمو جت هب ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "العملة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "رمز العملة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "رمز العملة (فارغ)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "شعار العملة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "شعار العملة (فارغ)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "شعار العملة (غير صالح)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "التاريخ" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "الفاصل العشري" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "الفاصل العشري (فارغ)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "الفاصل العشري (غير صالح)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "احذف المعاملات الموجودة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "احذف المجموعة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "احذف المصدر فقط" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "احذف المصدر والمعاملات المولَّدة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "احذف المعاملة" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "دينار" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "الوصف" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "الوصف (فارغ)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "حساب الوجهة" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "حساب الوجهة (غير صالح)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "كلمة سرِّ حساب الوجهة" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "كلمة سرِّ حساب الوجهة (غير صالح)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "كلمة سرِّ حساب الوجهة (مطلوب)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "افصل المعاملات الموجودة" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "خطأ" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "نفقة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "صدِّر إلى ملفٍّ" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "صُدِّر الحساب للملفِّ بنجاح." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "وُلِّد: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "مستودع جت‌هب" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "مساء الخير!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "طاب يومك!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "مساء الخير!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "المجموعة" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "اسم المجموعة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "فاصل المجموعة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "فاصل المجموعة (غير صالح)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "المجموعات" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "المساعدة" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "المعرِّف" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "استورد من حساب" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "استورد من ملفٍّ" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "لم تستورد من الملف أي معاملة." -msgstr[1] "اُستوردت من الملف معاملة واحدة." -msgstr[2] "اُستوردت من الملف معاملتان." -msgstr[3] "اُستوردت من الملف {0} معاملات." -msgstr[4] "اُستوردت من الملف {0} معاملة." -msgstr[5] "اُستوردت من الملف {0} معاملة." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "دخل" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "احفظ مالك" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "محادثة ماتركس" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "غير متوفر" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "الاسم" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "الاسم (فارغ)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "الاسم (موجود)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "أبدًا" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "حساب نِكفِجِن دِنارو" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "لا" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "لا يوجد تاريخ انتهاء" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "لا توجد معاملات" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "لم يُعثر على معاملات" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "لا توجد معاملات حسب التصفية المحدَّدة." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "الملاحظات" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "لا شيء للاستيراد من الملف." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "شهر واحد من الآن" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "بعد أسبوع من الآن" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "افتح" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "افتح حسابًا" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "ملخَّص" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "الصفحة {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "كلمة سرِّ بي‌دي‌إف" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "الإيصال" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "الإيصال (لا يمكن الوصول للملف)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "الإيصالات" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "تاريخ انتهاء التكرار" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "تاريخ انتهاء التكرار (غير صالح)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "مدَّة التكرار" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "غُيِّرت مدَّة التكرار" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "تم نسخ النتائج إلى الحافظة." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "ادِّخار" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "حدِّد حسابًا" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "حدِّد مجلَّد النسخ الاحتياطيِّ" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "حدِّد مجلدًا" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "ترتيب حسب المبلغ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "افرز حسب التاريخ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "افرز حسب المعرِّف" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "الوسوم" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "غُيِّرت كلمة سرِّ الحساب." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "أُزيلت كلمة سرِّ الحساب." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "سوف تزال كلمة السرِّ عقب إغلاق مربَّع الحوار هذا." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "لم تتطابق كلمتا السرِّ." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"غُيِّرت مدَّة التكرار.\n" -"ما تفعل بالمعاملات المولَّدة الموجودة؟\n" -"\n" -"سوف تولَّد معاملات تكرار جديدة حسب المدَّة الجديدة." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "ليس في هذا الحساب مال ليحوِّله." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "هذا الحساب مفتوح بالفعل." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"هذه المعاملة معاملة تكرار مصدر.\n" -"ما تفعل بالمعاملات المكرَّرة؟\n" -"\n" -"إن حذف معاملة المصدر فقط يتيح\n" -"تعديل المعاملات المولَّدة." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"هذه المعاملة معاملة تكرار مصدر.\n" -"ما تفعل بالمعاملات المكرَّرة؟\n" -"\n" -"إن تحديث معاملة المصدر فقط يفصل\n" -"المعاملات المولَّدة عن المصدر." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "غدًا" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "الإجماليُّ" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "المعاملة" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "المعاملات" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "المعاملات خارج المجموعات" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "حوِّل من {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "حوِّل إلى {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "علي الجشي " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "بعد شهرين من الآن" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "النوع" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "تعذَّر تصدير الحساب للملفِّ." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"تعذَّر استيراد المعلومات من الملف. تأكد من حصول التطبيق على صلاحية الوصول " -"للملف وجرب مرةً أخرى." - -#: ../../../Controllers/AccountViewController.cs:973 -#, fuzzy -msgid "Unable to import transactions from the file." -msgstr "أضف معاملةً جديدةً أو استورد معاملات من ملفٍّ." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "تعذَّر الدخول للحساب، فكلمة السرِّ المدخلة خاطئة." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"تعذَّر فتح الحساب. تأكد من حصول التطبيق على صلاحية الوصول للملف وجرب مرةً أخرى." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "تتعذَّر الكتابة على حساب موجود." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "تتعذَّر الكتابة على حساب مفتوح." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "دون مجموعة" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "من دون وسم" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "المعاملات المقبلة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "حدِّث المصدر فقط" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "حدِّث المصدر والمعاملة المولَّدة" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "حدِّث المعاملة" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "ارفع" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "اعرض" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"أتريد حماية ملفِّ بي‌دي‌إف بكلمة سرٍّ؟\n" -"\n" -"إن فُقدت كلمة السرِّ فسوف يصبح الملفُّ غير قابل للفتح." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "نعم" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "يقول نظامك أن عملتك هي" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "صباح الخير!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "صباح الخير!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "عد" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "نوع المعاملة المبدئيُّ" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "قبل يوم واحد" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "قبل أسبوع واحد" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "قبل شهر واحد" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "قبل شهرين" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "أدر العملة التي يستخدمها الحساب." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "عيِّن كلمة سرٍّ جديدة أو أزل إحداها." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "استخدم عملةً مخصَّصةً" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "غير ذلك" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "لا يوجد" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "الأرقام بعد الفاصل العشريِّ" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "إثنان" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "ثلاثة" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "أربعة" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "خمسة" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "ستة" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "دون حدٍّ" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "كلمة سرٍّ جديدة" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "أكِّد كلمة السرِّ" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "قوة كلمة السر" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "إن فُقدت كلمة السرِّ فاعلم إنه لا يوجد سبيل لاستعادته!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "أزل" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "حوِّل مالًا" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "صدِّر كلَّ المعلومات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "صدِّر المنظور الحاليَّ" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "افرز حسب الوصف" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "ملخَّص لليوم" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "المفكرات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "الإجراءات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "حدِّد كلَّ تصفيات النظرة العامة" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "مجموعة جديدة (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "جديد" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "بدِّل ظهور المجموعات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "حدِّد كلَّ تصفيات المجموعات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "ألغِ تحديد تصفيات المجموعات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "بدِّل ظهور المجموعات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -#, fuzzy -msgid "Select All Tags Filters" -msgstr "حدِّد كلَّ تصفيات المجموعات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -#, fuzzy -msgid "Unselect Tags Filters" -msgstr "ألغِ تحديد تصفيات المجموعات" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "التقويم" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "صفِّر لليوم" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "اليوم" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "اختر مدًى" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "البداية" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "النهاية" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "التالي" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "افرز من الأحدث إلى الأقدم" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "افرز من الأقدم إلى الأحدث" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "معاملة جديدة (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "جديد" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "اقتراحات" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "جارٍ التحميل…" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "المصدر" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "النتيجة" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "نسخ نتيجة المبلغ" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "كلُّ الحسابات" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "اللون" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "احذف" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "حرِّر المجموعة" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "حساب جديد" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "يرشدك هذا المرشد نحو أحسن استفادة من حسابك" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "بسم الله نبدأ" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "مكان التخزين" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "كلمة سرِّ الحساب (اختياري)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "مجلد" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "اكتب على حسابات موجودة" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "خيارات الحساب" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "هذه ليست سوى تسمية مفيدة لا تؤثر على كيفية عمل التطبيق." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "عملة الحساب" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "استورد معلومات موجودةً" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "ارفع ملفًّا صالحًا يُستخدم لاستيراد معلومات إلى حساب جديد." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "استورد ملفًّا" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "حدِّد ملفًّا" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "امحُ ملفًّا" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "أنشئ" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "أدخل كلمة السرِّ لتسجِّل دخولك:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "كلمة السرِّ" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "افتح" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "التفضيلات" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "واجهة المستخدم" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "السمة" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "فاتحة" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "داكنة" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "نفس سمة النظام" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "الألوان" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "خصِّص الألوان التي يستخدمها دينار." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "اللون المبدئيُّ للمعاملات" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "التغييرات لهذا الإعداد تطبَّق على المعاملات الجديدة فقط." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "اللون المبدئيُّ للتحويلات" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "التغييرات لهذا الإعداد تطبَّق على التحويلات الجديدة فقط." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "اللون المبدئيُّ للمجموعات" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "التغييرات لهذا الإعداد تطبَّق على المجموعات الجديدة فقط." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "لون الحساب الجاري" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "لون حساب التوفير" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "لون حساب الأعمال" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "الإعدادات المحلية" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "استخدم أرقام اللغة" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"ما إن كان ينبغي استخدام الأرقام المستخدمة في لغتك (مثلًا الأرقام العربية " -"المشرقية) أم الأرقام العربية المغربية." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "أدرج فاصلًا عشريًّا" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"عيِّن أيُّ المفاتيح إن ضُغطت يدرج الفاصل العشري في حقل مقدار حسب الإعدادات " -"المحلية." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "معطَّل" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "نقطة لوح الأرقام فقط" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "النقطة والفاصلة" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "النسخ الاحتياطيُّ" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "مجلَّد النسخ الاحتياطيِّ ل‍سي‌إس‌في" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"سوف تصدَّر الحسابات غير المعمَّاة على هيأة ملفَّات سي‌إس‌في لهذا الحساب تلقائيًّا، " -"وذلك إن طرأ عليها تغيير." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "امحُ مجلَّد النسخ الاحتياطيِّ" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "لا مفكرات" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "الحساب" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "أغلق الحساب" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "حوِّل" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "مجموعة جديدة" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "معاملة جديدة" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "التطبيق" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "اختصارات لوح المفاتيح" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "بدِّل شريط الجانب" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "أنهِ" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "انسخه" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "امحُ تاريخ الانتهاء" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "كلَّ يوم" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "كلَّ أسبوع" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "كلَّ نصف شهر" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "كلَّ شهر" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "كلَّ ربع سنة" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "كلَّ سنة" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "كلَّ سنتين" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "استخدم لون المجموعة" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "استخدم لونًا مميِّزًا" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "إضافات" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "أدر حقولًا إضافيةً في المعاملة." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "أدخل الملاحظات هنا" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "حرِّر المعاملة" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"يكلِّف تحويل المال من هذا الحساب نفقةً عليه ودخلًا على المحوَّل له، وقيمتها هي " -"قيمة التحويل، وتكون النفقة على هيأة معاملة نفقة، ويكون الدخل على هيئة معاملة " -"دخل." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "لم يحدَّد حساب" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "حدِّد حساب الوجهة" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "الحسابات المستخدمة مؤخَّرًا" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "الحديثة" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "التحويل مطلوب" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "استخدم عملةً مخصَّصةً" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "أدخل تحويلًا هنا" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "حوِّل" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "مُحوّل عملات" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "عن دينار" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "قائمة الحساب" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "حساب جديد (Ctrl + N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "جديد" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "افتح حسابًا (Ctrl + O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "لا توجد حسابات استخدمت مؤخَّرًا" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "القائمة الرئيسية" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "لوح المعلومات" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"أنشئ أو افتح حسابًا لتبدأ، ولك إن شئت أن تفلت ملفًّا على التطبيق من متصفِّح " -"الملفَّات." - -#, fuzzy -#~ msgid "result" -#~ msgstr "النتيجة" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "money;finance;wallet;cash;bank;Nickvision;مال;مالية;محفظة;بنك;مصرف;نكفجن;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "— إدارة عدة حسابات آنًا في واجهة ألسنة" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— فرز المعاملات حسب نوعها ومجموعتها وتاريخها" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "— تكرار المعاملات، مثل دفع الفواتير كلَّ شهر" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— تحويل المال من حساب لآخر" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— تصدير الحسابات في صورة ملفات سي‌إس‌في، واستيراد ملفات سي‌إس‌في وأو‌إف‌إكس " -#~ "وكيو‌آي‌إف لإضافة الكثير من المعاملات لحساب آنًا" - -#~ msgid "OK" -#~ msgstr "حسنًا" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "اصبر ريثما تُستورد المعاملات..." - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "تعذَّر استيراد المعلومات من الملف، فنوعه ليس مدعومًا." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "ديفد لابشن {0}\n" -#~ "توبايس برنارد {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "نيكولاس لوجوزو {0}\n" -#~ "فيودور سوبليف {1}\n" -#~ "دا‌بج‌جاي {2}" - -#~ msgid "Nickvision" -#~ msgstr "نكفجن" - -#~ msgid "Customize the application's user interface." -#~ msgstr "خصِّص واجهة مستخدم التطبيق." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "خصِّص كيف يستخدم دينار الإعدادات المحلية." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "خصِّص مواضع النسخ الاحتياطيِّ لحسابات دينار." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "غير ذلك" - -#~ msgid "Enter symbol here" -#~ msgstr "أدخل الشعار هنا" - -#~ msgid "Enter code here" -#~ msgstr "أدخل الرمز هنا" - -#~ msgid "Save" -#~ msgstr "احفظ" - -#~ msgid "Hide" -#~ msgstr "أخفِ" - -#~ msgid "Show" -#~ msgstr "أظهر" - -#~ msgid "Reset Dates Filters" -#~ msgstr "صفِّر تصفيات التواريخ" - -#~ msgid "Delete Group?" -#~ msgstr "أأحذف المجموعة؟" - -#~ msgid "Delete Transaction?" -#~ msgstr "أأحذف المعاملة؟" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "- أصلحت مشكلة تسبب انهيار دينار في الأنظمة التي لم تضبط إعدادات توطينها" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "- أصلحت مشكلة فشل تصدير ملفات بي‌دي‌إف من الحسابات كثيرة الإيصالات" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "- أصلحت مشكلة إعادة تفعيل مرشح مجموعة إن أضيفت لها معاملة" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "- سوف تظهر رسالة خطأ حالما حاول دينار الوصول لملفات ليس له أن يصل لها، " -#~ "وذلك عوضًا عن انهياره" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "- تحديث الترجمات (شكرًا لكل المساهمين من وبليت)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "إعدادات الحساب" - -#~ msgid "Version: {0}" -#~ msgstr "الإصدار: {0}" - -#~ msgid "About {0}" -#~ msgstr "عن {0}" - -#~ msgid "Changelog" -#~ msgstr "سجلُّ التغييرات" - -#~ msgid "Report a Bug" -#~ msgstr "بلِّغ عن علَّة" - -#~ msgid "Discussions" -#~ msgstr "النقاشات" - -#~ msgid "Credits" -#~ msgstr "الإشادات" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "نيكولاس لوجوزو https://github.com/nlogozzo\n" -#~ "المساهمون من جت‌هب ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "نيكولاس لوجوزو https://github.com/nlogozzo\n" -#~ "فيودور سوبوليف https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "ديفد لابشن https://github.com/daudix-UFO\n" -#~ "توبايس برنارد https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "المساهمون من وِبليت ❤️ https://hosted.weblate.org/projects/nickvision-money/" -#~ "app/" - -#~ msgid "Home" -#~ msgstr "الصفحة الرئيسة" - -#~ msgid "Settings" -#~ msgstr "اﻹعدادات" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "حوِّل مالًا (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "استورد من ملفٍّ (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "التصفيات" - -#~ msgid "Hide Groups" -#~ msgstr "أخف المجموعات" - -#~ msgid "Show Groups" -#~ msgstr "أظهر المجموعات" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "اُستوردت {0} معاملة من الملفِّ." - -#~ msgid "Enter name here" -#~ msgstr "أدخل الاسم هنا" - -#~ msgid "Enter description here" -#~ msgstr "أدخل الوصف هنا" - -#~ msgid "Enter amount here" -#~ msgstr "أدخل المقدار هنا" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "حساب مال (*.nmoney)" - -#~ msgid "Enter password here" -#~ msgstr "أدخل كلمة السرِّ هنا" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— أدر عدَّة حسابات آنًا، فواجهة التطبيق واجهة ألسنة\n" -#~ "— افرز المعاملات حسب أنواعها أو مجموعاتها أو تواريخها\n" -#~ "— كرِّر المعاملات بكلِّ يسر، فلك مثلًا أن تكرِّر المعاملات كلَّ شهر\n" -#~ "— حوِّل المال من حساب لآخر\n" -#~ "— صدِّر الحسابات على صورة ملفات سي‌إس‌في، واستورد ملفات سي‌إس‌في أو أو‌إف‌إكس أو " -#~ "كيو‌آي‌إف لتضيف معاملات لحساب" - -#~ msgid "New Window" -#~ msgstr "نافذة جديدة" - -#~ msgid "Accounts" -#~ msgstr "الحسابات" - -#~ msgid "Transaction ({0})" -#~ msgstr "المعاملة ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "المعاملات ({0})" - -#~ msgid "Reset All Filters" -#~ msgstr "صفِّر كلَّ التصفيات" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "إعدادات الحساب (Ctrl + .)" - -#~ msgid "Sort" -#~ msgstr "افرز" - -#~ msgid "Increasing" -#~ msgstr "التصاعد" - -#~ msgid "Decreasing" -#~ msgstr "التنازل" - -#~ msgid "Sort By" -#~ msgstr "افرز حسب" - -#~ msgid "No Backup Folder" -#~ msgstr "لا يوجد مجلَّد نسخ احتياطيٍّ" - -#~ msgid "Order By" -#~ msgstr "افرز حسب" - -#~ msgid "Enter decimal separator" -#~ msgstr "أدخل الفاصل العشريَّ" - -#~ msgid "Enter group separator" -#~ msgstr "أدخل فاصل المجموعة" diff --git a/NickvisionMoney.Shared/Resources/po/bg.po b/NickvisionMoney.Shared/Resources/po/bg.po deleted file mode 100644 index 271b323e1..000000000 --- a/NickvisionMoney.Shared/Resources/po/bg.po +++ /dev/null @@ -1,1581 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2024-04-11 20:57+0000\n" -"Last-Translator: twlvnn \n" -"Language-Team: Bulgarian \n" -"Language: bg\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Копиране)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} от {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} етикет" -msgstr[1] "{0} етикети" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} операция" -msgstr[1] "{0} операции" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Име на сметката" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Име на сметката (съществува)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Име на сметката (отворена)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Настройки на сметката" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Вид на сметката" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Добавяне" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Добавете нова операция или внесете операции от файл." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Искате ли да добавите парола към този PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Всички файлове" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Сума" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Сума (неправилен)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Прилагане" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Сигурни ли сте, че искате да премахнете тази група?\n" -"Това действие е необратимо." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Сигурни ли сте, че искате да премахнете тази операция?\n" -"Това действие е необратимо." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Бизнес" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Няма достъп до избраната папка, проверете правата на Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Отказване" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Смяна на паролата" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Разплащателна" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Затваряне" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Сътрудници в GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Валута" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Код на валутата" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Код на валутата (празен)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Символ на валутата" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Символ на валутата (празен)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Символ на валутата (неправилен)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Дата" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Десетичен знак" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Десетичен знак (празен)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Десетичен знак (неправилен)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Премахване на съществуващ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Премахване на групата" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Премахване само на източника" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Премахване на източника и генерирания" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Премахване на операцията" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Описание" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Описание (празен)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Целева сметка" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Целева сметка (неправилен)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Парола на целевата сметка" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Парола на целевата сметка (неправилен)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Парола на целевата сметка (задължителен)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Прекъсване на връзката на съществуващото" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Грешка" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Разходи" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Изнасяне във файл" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Сметката е изнесена във файла успешно." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Генерирано: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub проект" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Добър ден!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Добър ден!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Добър вечер!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Група" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Име на група" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Разделител на група" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Разделител на група (неправилен)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Групи" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Помощ" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Идентификатор" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Внасяне от сметка" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Внасяне от файл" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Внесена е {0} операция от файл." -msgstr[1] "Внесени са {0} операции от файл." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Доходи" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Управлявайте личните си финанси" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix чат" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "Липсва" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Име" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Име (празен)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Име (съществува)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Никога" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "„Nickvision Denaro“ сметка" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Не" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Без крайна дата" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Няма операции" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Няма намерени операции" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Няма транзакции, които да отговарят на зададените филтри." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Бележки" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Няма какво да се внесе от файла." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Един месец от сега" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Една седмица от сега" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Отваряне" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Отваряне на сметка" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Преглед" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Страница {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF парола" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Разписка" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Разписка (файлът е недостъпен)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Разписки" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Крайна дата на повторение" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Крайна дата на повторение (неправилен)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Интервал на повторение" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Интервалът на повторение е променен" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Резултатът е копиран в буфера за обмен." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Спестовна" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Избиране на сметка" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Избиране на папка за резерв" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Избиране на папка" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Подреждане по сума" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Подреждане по дата" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Подреждане по идентификатор" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Етикети" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Паролата на сметката е променена." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Паролата на сметката е премахната." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Паролата ще бъде премахната след затварянето на този прозорец." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Паролите не съвпадат." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Интервалът на повтаряне е променен.\n" -"Какво искате да направите със съществуващите генерирани операции?\n" -"\n" -"Нови повтарящи се операции ще бъдат генерирани въз основа на новия интервал." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "В тази сметка няма налични средства за прехвърляне." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Тази сметка вече е открита." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Тази операция се повтаря в източника.\n" -"Какво искате да направите с повтарящите се операции?\n" -"\n" -"Премахването само на операцията от източника ще позволи на\n" -"отделните генерирани операции да може да се променят." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Тази операция се повтаря в източника.\n" -"Какво искате да направите с повтарящите се операции?\n" -"\n" -"Обновяването само на операцията от източника ще прекъсне\n" -"връзката на генерираните операции от източника." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Утре" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Общо" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Операция" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Операции" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Операции без група" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Прехвърляне от {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Прехвърляне към {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "twlvnn " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Два месеца от сега" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Вид" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Неуспешно изнасяне на сметката във файла." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Неуспешно внасяне на информацията от файла. Уверете се, че приложението има " -"правата да достъпи файла и опитайте отново." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Неуспешно внасяне на операциите от файла." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Неуспешно зареждане на данните за валутата. Моля, опитайте отново. " -"Докладвайте за грешка ако продължава да се появява." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Неуспешно вписване в сметката. Дадената парола е неправилна." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Неуспешно отваряне на сметката. Уверете се, че приложението има правата да " -"достъпи файла и опитайте отново." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Неуспешно презаписване на съществуваща сметка." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Неуспешно презаписване на отворена сметка." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Негрупирани" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Без етикет" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Предстоящи операции" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Обновяване само на източника" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Обновяване на източника и генерирания" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Обновяване на операцията" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Качване" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Изглед" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Искате ли да защитите PDF файла с парола?\n" -"\n" -"Ако паролата е загубена, PDF файлът ще бъде дедостъпен." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Да" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Системата ви съобщи, че валутата ви е" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Добро утро!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Добро утро!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Назад" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Стандартен вид на операциите" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Праг на напомнянията за операции" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Един ден по-рано" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Една седмица по-рано" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Един месец по-рано" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Два месеца по-рано" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Управлявайте валутата, използвана от сметката." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Задайте нова парола или премахнете такава." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Използване на собствена валута" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Стил на показване на сумата" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Друго" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Без" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Десетични цифри" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Две" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Три" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Четири" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Пет" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Шест" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Неограничено" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Нова парола" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Потвърждаване на нова парола" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Сила на паролата" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Ако паролата е загубена, няма как да се възстанови файлът!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Премахване" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Прехвърляне на пари" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Изнасяне на всичката информация" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Изнасяне на текущия изглед" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Търсене по описание" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Днешният преглее" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Напомняния" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Действия" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Избиране на всички филтри за преглед" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Нова група (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Нова" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Превключване на видимостта на групите" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Избиране на всички филтри за групите" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Демаркиране на филтрите за групите" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Превключване на видимостта на етикетите" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Избиране на всички филтри за етикетите" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Демаркиране на филтрите за етикети" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Календар" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Избиране на текущия месец" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Връщане до днес" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Днес" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Избиране на диапазон" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Начало" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Край" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Визуализиране" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Следващо" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Сортиране от първо към последно" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Сортиране от последно към първо" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Нова операция (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Нова" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Предложения" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Преобразувател" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Разменяне на валутите" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Разменяне" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Зареждане..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Източник" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Резултат" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Копиране на сумата на резултата" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Всички сметки" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Цвят" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Изтриване" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Редактиране на групата" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Нова сметка" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" -"Използвайте този съветник, за да се възползвате възможно най-много от " -"сметката си" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Да започнем" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Място за съхранение" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Парола на сметката (незадължителен)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Папка" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Презаписване на съществуващи сметки" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Настройки на сметката" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "Това е само полезен етикет, който не влияе на работата на приложението." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Валута на сметката" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Внасяне на съществуваща информация" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Качете валиден файл, който да използвате за внасяне на съществуваща " -"информация в новия акаунт." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Внасяне на файл" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Избиране на файл" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Изчистване на файл" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Създаване" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Въведете паролата, за да се впишете:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Парола" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Отключване" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Настройки" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Потребителски интерфейс" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Тема" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Светла" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Тъмна" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Система" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Цветове" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Персонализирайте цветовете, използвани от „Denaro“." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Стандартен цвят на операциите" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Промяната на тази настройка ще се прилага само за новодобавени операции." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Стандартен цвят на преводите" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Промяната на тази настройка ще се прилага само за нови прехвърляния." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Стандартен цвят на групите" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Промяната на тази настройка ще се прилага само за нови групи." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Цвят на разплащателната сметка" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Цвят на спестовната сметка" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Цвят на бизнес сметка" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Местоположение" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Използване на собствени цифри" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Дали да се използват цифри, които са за вашия регион вместо латински цифри." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Вмъкване на десетичен знак" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Зададете за кои натиснати клавиши да бъде вмъкнат десетичният знак на " -"местоположението в полето за сумата." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Изкл." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Само точка на цифровата клавиатура" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Точка и запетая" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Резерв" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Папка за CSV резерв" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Нешифрирани сметки автоматично се изнасят като CSV файлове в тази папка, " -"когато се направи промяна." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Изчистване на резервната папка" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Няма напомняния" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Сметка" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Затваряне на сметката" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Превод" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Нова група" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Нова операция" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Програма" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Клавишни комбинации" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Превключване на страничната лента" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Спиране на програмата" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Направете копие" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Изчистване на крайната дата" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Ежедневно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Седмично" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Двуседмично" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Месечно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Тримесечно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Годишно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Двугодишно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Използване на групов цвят" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Използване на собствен цвят" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Въведете ново име на етикет..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Добавяне на етикет" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Допълнения" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Управлявайте допълнителните полета на операцията." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Въведете бележките тук" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Редактиране на операцията" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Прехвърлянето на пари ще създаде разходна операция с дадената сума в тази " -"сметка и доходна операция с дадената сума в сметката за прехвърляне." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Няма избрана сметка" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Изберете целева сметка" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Скоро ползвани сметки" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Скорошни" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Необходимо е преобразуване" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Използване на собствени коефициенти" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Въведете коефициентите на преобразуване ръчно" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Превеждане" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Преобразувател на валути" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Относно „Denaro“" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Меню на сметката" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Нова сметка (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Нова" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Отваряне на сметка (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Няма скорошни сметки" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Превключване на графиките" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Основно меню" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Табло" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Създадете или отворете сметка, за да започнете. Можете също така да " -"изтеглите файл в приложението от файловия си браузър." diff --git a/NickvisionMoney.Shared/Resources/po/cs.po b/NickvisionMoney.Shared/Resources/po/cs.po deleted file mode 100644 index 7fce299fb..000000000 --- a/NickvisionMoney.Shared/Resources/po/cs.po +++ /dev/null @@ -1,1861 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-11-17 11:26+0000\n" -"Last-Translator: Fjuro \n" -"Language-Team: Czech \n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 5.2\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Kopírovat)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} z {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} štítek" -msgstr[1] "{0} štítky" -msgstr[2] "{0} štítků" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transakce" -msgstr[1] "{0} transakce" -msgstr[2] "{0} transakcí" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Název účtu" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Název účtu (existuje)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Název účtu (otevřený)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Nastavení účtu" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Typ účtu" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Přidat" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Přidejte novou transakci nebo importujte transakce ze souboru." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Přidat heslo do PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Všechny soubory" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Množství" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Částka (neplatná)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Použít" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Opravdu chcete odstranit tuto skupinu?\n" -"Tato akce je nevratná." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Opravdu chcete odstranit tuto transakci?\n" -"Tato akce je nevratná." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Firemní" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Nelze získat přístup k vybrané složce, zkontrolujte oprávnění Flatpaku." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Zrušit" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Změnit heslo" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Běžný" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Zavřít" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Přispěvatelé na GitHubu ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Měna" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Kód měny" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Kód měny (prázdný)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Symbol měny" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Symbol měny (prázdný)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Symbol měny (neplatný)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Datum" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Oddělovač desetinných míst" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Oddělovač desetinných míst (prázdný)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Oddělovač desetinných míst (neplatný)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Odstranit stávající" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Odstranit skupinu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Odstranit pouze zdroj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Odstranit zdroj a generované" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Odstranit transakci" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Popis" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Popis (prázdný)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Cílový účet" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Cílový účet (neplatný)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Heslo cílového účtu" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Heslo cílového účtu (neplatné)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Heslo cílového účtu (povinné)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Odpojit stávající" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Chyba" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Výdaj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Export do souboru" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Účet byl úspěšně exportován do souboru." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Vygenerováno: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repozitář GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Dobré odpoledne!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Dobrý den!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Dobrý večer!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Skupina" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Název skupiny" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Oddělovač skupin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Oddělovač skupin (neplatný)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Skupiny" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Nápověda" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Import z účtu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Import ze souboru" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Importována {0} transakce ze souboru." -msgstr[1] "Importovány {0} transakce ze souboru." -msgstr[2] "Importováno {0} transakcí ze souboru." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Příjem" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Správa osobních financí" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Název" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Název (prázdný)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Název (existuje)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nikdy" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Účet Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Ne" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Žádné datum ukončení" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Žádné transakce" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nenalezeny žádné transakce" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Žádné transakce neodpovídají zadaným filtrům." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Poznámky" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nic k importování ze souboru." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Jeden měsíc ode dneška" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Jeden týden ode dneška" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Otevřít" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Otevřít účet" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Přehled" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Strana {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Heslo PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Faktura" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Faktura (soubor nedostupný)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Účtenky" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Datum ukončení opakování" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Datum ukončení opakování (neplatné)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Interval opakování" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Interval opakování změněn" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Výsledek zkopírován do schránky." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Spořicí" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Vybrat účet" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Vyberte složku záloh" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Vybrat složku" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Seřadit podle množství" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Seřadit podle data" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Seřadit podle ID" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Štítky" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Heslo účtu bylo změněno." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Heslo účtu bylo odstraněno." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Heslo bude odstraněno po zavření tohoto dialogu." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Hesla se neshodují." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Interval opakování byl změněn.\n" -"Co chcete udělat se stávajícími vygenerovanými transakcemi?\n" -"\n" -"Nové opakované transakce budou generovány na základě nového intervalu." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Tento účet nemá žádné peníze k převodu." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Tento účet je již otevřen." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Tato transakce je opakovanou transakcí zdroje.\n" -"Co chcete s opakovanými transakcemi udělat?\n" -"\n" -"Odstraněním pouze zdrojové transakce umožníte\n" -"individuální úpravu vygenerovaných transakcí." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Tato transakce je opakovanou transakcí zdroje.\n" -"Co chcete s opakovanými transakcemi udělat?\n" -"\n" -"Aktualizací pouze zdrojové transakce dojde k odpojení\n" -"vygenerovaných transakcí od zdroje." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Zítra" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Celkem" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transakce" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transakce" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transakce bez skupiny" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Převést z {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Převést na {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Jonáš Loskot , 2023" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Dva měsíce ode dneška" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Typ" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Nepodařilo se exportovat účet do souboru." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Nepodařilo se importovat informace ze souboru. Ujistěte se, že má aplikace " -"oprávnění k přístupu k vašemu souboru a zkuste to znovu." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Nepodařilo se importovat transakce ze souboru." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Nepodařilo se načíst informace o měnách. Zkuste to prosím znovu. Pokud chyba " -"nezmizí, nahlaste to prosím jako chybu." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Nelze se přihlásit k účtu. Zadané heslo je neplatné." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Nepodařilo se otevřít účet. Ujistěte se, že má aplikace oprávnění k přístupu " -"k vašemu souboru a zkuste to znovu." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Nelze přepsat existující účet." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Nelze přepsat otevřený účet." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Neseskupené" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Bez štítku" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Nadcházející transakce" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Aktualizovat pouze zdroj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Aktualizovat zdroj a generované" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Aktualizovat transakci" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Nahrát" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Zobrazit" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Chcete soubor PDF chránit heslem?\n" -"\n" -"Pokud heslo ztratíte, soubor PDF bude nepřístupný." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Ano" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Váš systém hlásí, že vaší měnou je" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Dobré ráno!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Dobré ráno!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Zpět" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Výchozí typ transakce" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Hranice pro připomenutí transakcí" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Jeden den před" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Jeden týden před" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Jeden měsíc před" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Dva měsíce před" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Správa měny používané účtem." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Nastavte nové heslo nebo jej odstraňte." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Použít vlastní měnu" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Styl zobrazení množství" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Jiný" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Žádný" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Desetinné číslice" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Dva" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Tři" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Čtyři" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Pět" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Šest" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Neomezeně" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nové heslo" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Potvrzení hesla" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Síla hesla" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Pokud dojde ke ztrátě hesla, není možné soubor obnovit!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Odebrat" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Převod peněz" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Exportovat všechny informace" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Exportovat aktuální zobrazení" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Vyhledávání podle popisu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Dnešní přehled" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Připomínky" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Akce" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Vybrat všechny filtry přehledu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Nová skupina (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nová" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Přepnout viditelnost skupin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Vybrat všechny filtry skupin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Zrušit výběr filtrů skupin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Přepnout viditelnost štítků" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Vybrat všechny filtry štítků" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Zrušit výběr filtrů štítků" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalendář" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Vybrat aktuální měsíc" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Obnovit na dnešek" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Dnes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Zvolit rozsah" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Začátek" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Konec" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Vizualizace" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Další" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Řazení od prvního do posledního" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Řazení od posledního k prvnímu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nová transakce (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nová" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Návrhy" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Převodník" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Prohodit měny" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Prohodit" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Načítání..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Zdroj" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Výsledek" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Zkopírovat množství výsledku" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Všechny účty" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Barva" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Odstranit" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Upravit skupinu" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nový účet" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Pomocí tohoto průvodce získáte ze svého účtu maximum" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Začínáme" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Umístění úložiště" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Heslo účtu (volitelné)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Složka" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Přepsat existující účty" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Možnosti účtu" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Jedná se pouze o užitečné označení, které nemá vliv na fungování aplikace." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Měna účtu" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importovat existující informace" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Pro importování existujících informací do nového účtu nahrajte platný soubor." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Import souboru" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Vybrat soubor" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Vymazat soubor" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Vytvořit" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Pro přihlášení zadejte heslo:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Heslo" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Odemknout" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Předvolby" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Uživatelské rozhraní" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Motiv" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Světlý" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Tmavý" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Systémový" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Barvy" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Přizpůsobit barvy používané Denarem." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Výchozí barva transakce" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "Změna tohoto nastavení se projeví pouze u nově přidaných transakcí." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Výchozí barva převodu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Změna tohoto nastavení se projeví pouze u nových převodů." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Výchozí barva skupiny" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Změna tohoto nastavení se projeví pouze u nových skupin." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Barva běžného účtu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Barva spořicího účtu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Barva firemního účtu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Národní prostředí" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Použít nativní číslice" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Zda se mají místo latinských číslic používat číslice, které jsou pro danou " -"oblast přirozené." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Vložení desetinného oddělovače" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Nastavte, pro které stisknuté klávesy se do pole částky vloží desetinný " -"oddělovač místního jazyka." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Vypnout" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Pouze čárka na numerické klávesnici" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Tečka a čárka" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Záloha" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Složka zálohy CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Nezašifrované účty se při změně automaticky exportují do této složky jako " -"soubory CSV." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Vymazat složku záloh" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Žádné připomínky" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Účet" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Uzavřít účet" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Převod" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Nová skupina" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nová transakce" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplikace" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Klávesové zkratky" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Přepnout postranní panel" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Opustit" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Vytvořit kopii" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Vymazat datum ukončení" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Denně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Týdně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Dvakrát týdně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Měsíčně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Čtvrtletně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Ročně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Dvakrát ročně" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Použít barvu skupiny" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Použít unikátní barvu" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Zadejte nový název štítku..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Přidat štítek" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Další" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Spravovat další pole transakce." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Sem zadejte poznámky" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Upravit transakci" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Převodem peněz se vytvoří nákladová transakce s danou částkou na tomto účtu " -"a příjmová transakce s danou částkou na účtu, na který je prováděn převod." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Není vybrán žádný účet" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Vyberte cílový účet" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Nedávné účty" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Nedávné" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Nutná konverze" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Použít vlastní kurzy" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Ručně zadejte kurzy" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Převod" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Převodník měn" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "O aplikaci Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Nabídka účtu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nový účet (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Nová" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Otevřít účet (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Žádné nedávné účty" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Přepnout grafy" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Hlavní nabídka" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Nástěnka" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Chcete-li začít, vytvořte si nebo otevřete účet. Do aplikace můžete také " -"přetáhnout soubor z prohlížeče souborů." - -#~ msgid "result" -#~ msgstr "výsledek" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "peníze;finance;peněženka;hotovost;banka;Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Správa několika účtů najednou pomocí intuitivního rozhraní s kartami" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— Snadné filtrování transakcí podle typu, skupiny nebo data" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Snadné opakované transakce, například účtování, ke kterým dochází každý " -#~ "měsíc" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Převod peněz z jednoho účtu na druhý" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Export účtu do souboru CSV a import souboru CSV, OFX nebo QIF pro " -#~ "hromadné přidání transakcí na účet" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "Počkejte prosím na import transakcí..." - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Nepodařilo se importovat informace ze souboru. Nepodporovaný typ souboru." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Přizpůsobit uživatelské rozhraní aplikace." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Přizpůsobte si, jak Denaro využívá nastavení národního prostředí." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Přizpůsobte si umístění záloh pro účty Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Jiný" - -#~ msgid "Enter symbol here" -#~ msgstr "Sem zadejte symbol" - -#~ msgid "Enter code here" -#~ msgstr "Sem zadejte kód" - -#~ msgid "Save" -#~ msgstr "Uložit" - -#~ msgid "Hide" -#~ msgstr "Skrýt" - -#~ msgid "Show" -#~ msgstr "Zobrazit" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Obnovit filtry dat" - -#~ msgid "Delete Group?" -#~ msgstr "Odstranit skupinu?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Odstranit transakci?" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "- Opraven problém, při kterém Denaro padalo na systémech s nenastavenými " -#~ "místními nastaveními" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "" -#~ "- Opraven problém, kdy se nezdařil export do PDF u účtů s velkým počtem " -#~ "faktur" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "" -#~ "- Opraven problém, kdy se filtr skupiny znovu aktivoval, když byla do " -#~ "dané skupiny přidána transakce" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "- Pokud se Denaro pokusí o přístup k nedostupným souborům, místo pádu se " -#~ "zobrazí chybové zprávy" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "- Aktualizovány překlady (Díky všem na Weblate)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Nastavení účtu" - -#~ msgid "Version: {0}" -#~ msgstr "Verze: {0}" - -#~ msgid "About {0}" -#~ msgstr "O aplikaci {0}" - -#~ msgid "Changelog" -#~ msgstr "Seznam změn" - -#~ msgid "Report a Bug" -#~ msgstr "Nahlásit chybu" - -#~ msgid "Discussions" -#~ msgstr "Diskuze" - -#~ msgid "Credits" -#~ msgstr "Zásluhy" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Přispěvatelé na GitHubu ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Překladatelé na Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Domů" - -#~ msgid "Accounts" -#~ msgstr "Účty" - -#~ msgid "Settings" -#~ msgstr "Nastavení" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Převod peněz (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Import ze souboru (Ctrl+I)" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transakce ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transakce ({0})" - -#~ msgid "Filters" -#~ msgstr "Filtry" - -#~ msgid "Reset All Filters" -#~ msgstr "Obnovit všechny filtry" - -#~ msgid "Hide Groups" -#~ msgstr "Skrýt skupiny" - -#~ msgid "Show Groups" -#~ msgstr "Zobrazit skupiny" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Nastavení účtu (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Řazení" - -#~ msgid "Order By" -#~ msgstr "Řadit podle" - -#~ msgid "Increasing" -#~ msgstr "Vzestupně" - -#~ msgid "Decreasing" -#~ msgstr "Sestupně" - -#~ msgid "Sort By" -#~ msgstr "Řadit podle" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Importováno {0} transakcí ze souboru." - -#~ msgid "Enter name here" -#~ msgstr "Sem zadejte název" - -#~ msgid "Enter description here" -#~ msgstr "Sem zadejte popis" - -#~ msgid "Enter amount here" -#~ msgstr "Sem zadejte částku" - -#~ msgid "Enter decimal separator" -#~ msgstr "Zadejte oddělovač desetinných míst" - -#~ msgid "Enter group separator" -#~ msgstr "Zadejte oddělovač skupin" - -#~ msgid "Enter password here" -#~ msgstr "Sem zadejte heslo" - -#~ msgid "No Backup Folder" -#~ msgstr "Žádná složka záloh" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Správa více účtů najednou pomocí známého rozhraní karet\n" -#~ "— Snadné filtrování transakcí podle typu, skupiny nebo data\n" -#~ "— Snadné opakování transakcí, například účtů, které se objevují každý " -#~ "měsíc.\n" -#~ "— Převod peněz z jednoho účtu na druhý\n" -#~ "— Export účtu jako soubor CSV a import souboru CSV, OFX nebo QIF pro " -#~ "hromadné přidávání transakcí na účet" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Peněžní účet (*.nmoney)" - -#~ msgid "New Window" -#~ msgstr "Nové okno" diff --git a/NickvisionMoney.Shared/Resources/po/da.po b/NickvisionMoney.Shared/Resources/po/da.po deleted file mode 100644 index e08404dcd..000000000 --- a/NickvisionMoney.Shared/Resources/po/da.po +++ /dev/null @@ -1,1761 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: da\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Kopi)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, fuzzy, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "Overførsel" -msgstr[1] "Overførsel" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -#, fuzzy -msgid "Account Name" -msgstr "Kontotype" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -#, fuzzy -msgid "Account Name (Exists)" -msgstr "Navn (findes allerede)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -#, fuzzy -msgid "Account Name (Opened)" -msgstr "Ingen konto åbnet" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Konto indstillinger" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Kontotype" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Tilføj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Tilføj en ny overførsel eller importer overførsler fra en fil." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Alle filer" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Beløb" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Beløb (ugyldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Anvend" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Er du sikker på at du vil slette denne gruppe?\n" -"Handlingen kan ikke fortrydes." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Er du sikker på at du vil slette overførslen?\n" -"Handlingen kan ikke fortrydes." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Virksomhed" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Afbryd" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Skift kodeord" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Indkomst" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Luk" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Valuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Valutakode" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Valutakode (tom)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Valuta symbol" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Valuta symbol (tom)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -#, fuzzy -msgid "Currency Symbol (Invalid)" -msgstr "Valuta symbol (tom)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Dato" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -#, fuzzy -msgid "Decimal Separator" -msgstr "Indsæt decimal-seperator" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -#, fuzzy -msgid "Decimal Separator (Empty)" -msgstr "Indsæt decimal-seperator" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -#, fuzzy -msgid "Decimal Separator (Invalid)" -msgstr "Indsæt decimal-seperator" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -#, fuzzy -msgid "Delete Existing" -msgstr "Slet eksisterende" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Slet gruppe" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Slet kun udgangspunktet" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Slet udgangspunktet samt alle tilføjede" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Slet overførsel" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Beskrivelse" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Beskrivelse (tom)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Modtagerkonto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Modtagerkonto (ugyldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Kodeord på destinations konto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Kodeord på destinations konto (ugyldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Kodeord på destinations konto (påkrævet)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Fjern eksisterende tilknytning" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Udgift" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Eksporter til fil" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Kontoen blev eksporteret til fil uden fejl." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Genereret: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub Depot" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "God eftermiddag!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "God dag!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Godaften!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Gruppe" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Gruppenavn" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -#, fuzzy -msgid "Group Separator (Invalid)" -msgstr "Beløb (ugyldig)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupper" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Hjælp" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -#, fuzzy -msgid "Import from Account" -msgstr "Importer fra fil" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importer fra fil" - -#: ../../../Controllers/AccountViewController.cs:969 -#, fuzzy, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Importerede {0} overførsel fra fil." -msgstr[1] "Importerede {0} overførsel fra fil." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Indkomst" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Administrer din privatøkonomi" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix Chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "I/T" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Navn" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Navn (tom)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Navn (findes allerede)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Aldrig" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Nej" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Ingen slutdato" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Ingen overførsler" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Ingen overførsler fundet" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Ingen overførsler ud fra de valgte filtre." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Åbn" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Åbn konto" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Oversigt" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Side {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -#, fuzzy -msgid "PDF Password" -msgstr "Kodeord" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Kvittering" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Kvitteringer" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Gentag slutdato" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Gentag sludato (ugyldig)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Gentag interval" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Intervallet for gentagelse er ændret" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Opsparing" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -#, fuzzy -msgid "Select Account" -msgstr "Seneste kontier" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -#, fuzzy -msgid "Select Folder" -msgstr "Vælg rækkevidde" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Sorter efter beløb" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Sorter efter dato" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Sorter efter Id" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Kontoens kodeord blev ændret." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Kontoens kodeord blev fjernet." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Kodeordet bliver fjernet når du lukker denne dialog." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -#, fuzzy -msgid "The passwords do not match." -msgstr "Kontoens kodeord blev ændret." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Intervallet for gentagelse blev ændret.\n" -"Hvad vil du gerne gøre med de eksisterende genererede overførsler?\n" -"\n" -"Nye gentagende overførsler vil blive genereret ud fra det nye interval." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Denne konto har ingen penge tilgængelig til overførsel." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Denne konto er allerede åben." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#, fuzzy -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Denne overførsel er en udgangspunktet for gentagende overførsel.\n" -"Hvad vil du gøre med de gentagende overførsler?\n" -"\n" -"Ved kun at slette udgangspunktet bliver det muligt at \n" -"ændre i alle individuelt tilføjede overførsler." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Denne overførsel er oprettet som en gentagende overførsel.\n" -"HVad vil du gerne gøre med de gentange overførsler?\n" -"\n" -"Hvis du ændrer i den oprindelig overførsel, vil den \n" -"fjerne tilknytningen til samtlige gentagelserne." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Overførsel" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Overførsler" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Overførsler uden en gruppe" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Overfør fra {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Overfør til {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Type" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Ude af stand til at eksportere konto til fil." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -#, fuzzy -msgid "Unable to import transactions from the file." -msgstr "Tilføj en ny overførsel eller importer overførsler fra en fil." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Ude af stand til at logge ind på kontoen. Kodeordet er forkert." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -#, fuzzy -msgid "Unable to overwrite an existing account." -msgstr "Ude af stand til at overskrive en åbnet konto." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Ude af stand til at overskrive en åbnet konto." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Ikke grupperet" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -#, fuzzy -msgid "Upcoming transactions" -msgstr "Ingen overførsler" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Kun opdatere kilden" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Opdater kilde og genereret" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Opdater overførsel" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Upload" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Visning" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Ja" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Dit system fortalte at din valuta er" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Godmorgen!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Godmorgen!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Tilbage" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Standard overførselstype" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Sæt nyt kodeord eller fjern kodeord." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Brug tilpasset valuta" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Ny kodeord" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Bekræft kodeord" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -#, fuzzy -msgid "Password Strength" -msgstr "Kodeord" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Hvis du glemmer kodeordet kan kontoen ikke blive genskabt!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Fjern" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Overfør penge" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -#, fuzzy -msgid "Export Current View" -msgstr "Eksporter til fil" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Søg efter beskrivelse" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Dagens oversigt" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Handlinger" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -#, fuzzy -msgid "Select All Overview Filters" -msgstr "Nulstil oversigt filtre" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Ny gruppe (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "Ny" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Skift gruppers synlighed" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -#, fuzzy -msgid "Select All Groups Filters" -msgstr "Nulstil gruppe filtre" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -#, fuzzy -msgid "Unselect Groups Filters" -msgstr "Nulstil gruppe filtre" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "Skift gruppers synlighed" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -#, fuzzy -msgid "Select All Tags Filters" -msgstr "Nulstil gruppe filtre" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -#, fuzzy -msgid "Unselect Tags Filters" -msgstr "Nulstil gruppe filtre" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalender" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Vælg rækkevidde" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -#, fuzzy -msgctxt "DateRange" -msgid "Start" -msgstr "Start" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -#, fuzzy -msgctxt "DateRange" -msgid "End" -msgstr "Slut" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Sorter fra første til sidste" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Sorter fra sidste til første" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Ny overførsel (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "Ny" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Resultat" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "Ingen seneste kontier" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -#, fuzzy -msgid "All Accounts" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Farve" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Slet" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Ret gruppe" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Ny konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -#, fuzzy -msgid "Let's Start" -msgstr "Start" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -#, fuzzy -msgid "Account Password (Optional)" -msgstr "Kodeord på destinations konto (ugyldig)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -#, fuzzy -msgid "Overwrite Existing Accounts" -msgstr "Modtagerkonto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "Konto indstillinger" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "Dette er kun en brugbar label som ikke påvirker programmet." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -#, fuzzy -msgid "Account Currency" -msgstr "Konto menu" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -#, fuzzy -msgid "Import File" -msgstr "Importer fra fil" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -#, fuzzy -msgid "Select File" -msgstr "Vælg rækkevidde" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Indtast kodeord for at logge ind:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Kodeord" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Lås op" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Præferencer" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Brugerflade" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Light" -msgstr "Lys" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Dark" -msgstr "Mørk" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "System" -msgstr "System" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Farver" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Tilpas farverne som Denaro bruger." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Standardfarve for overførsel" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"En ændring i indstillinger bliver kun gælde for nyligt tilføjede overførsler." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Standardfarve for overførsel" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "En ændring i indstillinger vil gælde for nye overførsler." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -#, fuzzy -msgid "Group Default Color" -msgstr "Standardfarve for overførsel" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -#, fuzzy -msgid "A change in this setting will only be applied to new groups." -msgstr "En ændring i indstillinger vil gælde for nye overførsler." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Indkomstkonto farve" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Opsparingskonto farve" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Virksomhedskonto farve" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Lokalitet" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Indsæt decimal-seperator" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Indstil hvilke taster der kan trykkes på for at indsætte lokalitetens " -"decimalseparator i beløbsfeltet." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -#, fuzzy -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Fra" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Kun numerisk tastatur" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Punktum og komma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -#, fuzzy -msgid "Backup" -msgstr "Tilbage" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Luk konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -#, fuzzy -msgctxt "Title" -msgid "Transfer" -msgstr "Overførsel" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Ny gruppe" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Ny overførsel" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Program" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Tastatur genveje" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Skift sidebjælke" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Afslut" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Lav en kopi" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Ryd slutdato" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Daglig" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Ugentlig" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Hver anden uge" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Månedlig" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Kvartalsvis" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Årlig" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Hvert andet år" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -#, fuzzy -msgid "Enter notes here" -msgstr "Indtast navn her" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Ret overførsel" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Overførsel af penge til lave en udgifts-overførsel med det givne beløb på " -"denne konto og en indkomst-overførsel med det givne beløb på den konto der " -"overføres til." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Ingen konto valgt" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Vælg en modtagerkonto" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Seneste kontier" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Seneste" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Omregning krævet" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "Brug tilpasset valuta" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "Indtast omregning her" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -#, fuzzy -msgctxt "Button" -msgid "Transfer" -msgstr "Overførsel" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Valutakode" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Konto menu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Ny konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "Ny" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Åbn konto (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Ingen seneste kontier" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Hovedmenu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Opret eller åbn en konto for at starte. Du kan også trække en fil ind i " -"programmet fra fil browseren." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Resultat" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "penge;finans;pung;kontanter;bank;GTK;Nickvision;" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Tilpas programmets brugerflade." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Tilpas hvordan Denaro bruger lokale indstillinger." - -#, fuzzy -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Tilpas programmets brugerflade." - -#~ msgid "Enter symbol here" -#~ msgstr "Indtast symbol her" - -#~ msgid "Enter code here" -#~ msgstr "Indsæt valutakode her" - -#~ msgid "Save" -#~ msgstr "Gem" - -#~ msgid "Hide" -#~ msgstr "Skjul" - -#~ msgid "Show" -#~ msgstr "Vis" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Nulstil dato filtre" - -#~ msgid "Delete Group?" -#~ msgstr "Slet gruppe?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Slet overførsel?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Konto indstillinger" - -#~ msgid "Version: {0}" -#~ msgstr "Version: {0}" - -#~ msgid "About {0}" -#~ msgstr "Om {0}" - -#~ msgid "Changelog" -#~ msgstr "Ændringer" - -#~ msgid "Report a Bug" -#~ msgstr "Anmeld en fejl" - -#~ msgid "Discussions" -#~ msgstr "Diskussioner" - -#~ msgid "Credits" -#~ msgstr "Kreditter" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Bidragydere på GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "David Lapshin https://github.com/daudix-UFO" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Oversættere på Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Hjem" - -#~ msgid "Settings" -#~ msgstr "Indstillinger" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Overfør penge (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importer fra fil (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtre" - -#~ msgid "Hide Groups" -#~ msgstr "Skjul grupper" - -#~ msgid "Show Groups" -#~ msgstr "Vis grupper" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Importerede {0} overførsler fra fil." - -#~ msgid "Enter description here" -#~ msgstr "Indtast beskrivelse her" - -#~ msgid "Enter amount here" -#~ msgstr "Indtast beløb her" - -#~ msgid "Enter password here" -#~ msgstr "Indtast kodeord" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Administrer din privatøkonomi" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Penge konto (*.nmoney)" - -#~ msgid "New Window" -#~ msgstr "Nyt vindue" diff --git a/NickvisionMoney.Shared/Resources/po/de.po b/NickvisionMoney.Shared/Resources/po/de.po deleted file mode 100644 index 96cc5d8d2..000000000 --- a/NickvisionMoney.Shared/Resources/po/de.po +++ /dev/null @@ -1,1874 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-08-29 18:53+0000\n" -"Last-Translator: Ettore Atalan \n" -"Language-Team: German \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Kopie)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} von {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} Tag" -msgstr[1] "{0} Tags" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} Überweisung" -msgstr[1] "{0} Überweisungen" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Kontoname" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Kontoname (Existiert)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Kontoname (Eröffnet)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Konto-Einstellungen" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Kontotyp" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Hinzufügen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Füge eine neue Überweisung hinzu oder importiere eine von einer Datei." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Passwort zur PDF hinzufügen?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Alle dateien" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Betrag" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Betrag (Ungültig)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Anwenden" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Möchtest du diese Gruppe wirklich löschen?\n" -"Diese Aktion kann nicht rückgängig gemacht werden." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Möchtest du diese Überweisung wirklich löschen?\n" -"Diese Aktion kann nicht rückgängig gemacht werden." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Geschäftskonto" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Kann auf den ausgewählten Ordner nicht zugreifen, prüfe Flatpack-Rechte." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Abbrechen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Passwort ändern" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Girokonto" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Schließen" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Beitragende auf Github ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Währung" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Währungs-Code" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Währungs-Code (Leer)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Währungszeichen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Währungszeichen (leer)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Währungszeichen (ungültig)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Datum" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Dezimaltrennzeichen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Dezimaltrennzeichen (leer)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Dezimaltrennzeichen (ungültig)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Bestehende Löschen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Gruppe Löschen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Nur Ursprung Löschen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Ursprung und Generierte Löschen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Überweisung Löschen" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Beschreibung" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Beschreibung (Leer)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Zielkonto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Zielkonto (Ungültig)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Zielkonto-Passwort" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Passwort des Zielkontos (ungültig)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Passwort für das Zielkonto (erforderlich)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Bestehende Trennen" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Fehler" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Ausgaben" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Zu Datei exportieren" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Konto erfolgreich zu Datei exportiert." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Generiert: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub-Repo" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Guten Nachmittag!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Schönen Tag!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Guten Abend!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Gruppe" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Gruppenname" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Gruppentrennzeichen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Gruppentrennzeichen (ungültig)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Gruppen" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Hilfe" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Aus Konto importieren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Von Datei importieren" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} Überweisung aus Datei importiert." -msgstr[1] "{0} Überweisungen aus Datei importiert." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Einkommen" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Verwalte deine persönlichen Finanzen" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix-Chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "Entfällt" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Name" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Name (Leer)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Name (Existiert)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nie" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro-Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Nein" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Kein End-Datum" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Keine Überweisungen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Keine Überweisungen Gefunden" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Keine Überweisung entsprechen den angegebenen Filtern." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Notizen" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "In einem Monat ab jetzt" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "In einer Woche ab jetzt" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Öffnen" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Konto öffnen" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Übersicht" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Seite {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF-Passwort" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Beleg" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Beleg (Datei unzugänglich)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Beleg" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Wiederholungs-Ende" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Wiederholungs-Ende (Ungültig)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Wiederholungs-Intervall" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Wiederholungs-Intervall Wurde Geändert" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Ergebnis wurde in die Zwischenablage kopiert." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Sparkonto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Konto auswählen" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Sicherungsordner auswählen" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Ordner auswählen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Nach Menge sortieren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Nach Datum sortieren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Nach ID sortieren" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Tags" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Das Passwort des Kontos wurde geändert." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Das Passwort des Kontos wurde entfernt." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Das Passwort wird nach dem Schließen dieses Dialogs entfernt werden." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Die Passwörter stimmen nicht überein." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Das Wiederholungs-Intervall wurde geändert.\n" -"Was möchtest du mit bestehenden generierten Überweisungen machen?\n" -"\n" -"Neue wiederholte Überweisungen werden basierend auf dem neuen Intervall " -"generiert." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Dieses Konto hat kein Geld zum überweisen mehr." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Dieses Konto ist schon geöffnet." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Diese Überweisung ist eine wiederholte Überweisung.\n" -"Was möchtest du mit wiederholten Überweisungen machen?\n" -"\n" -"Nur die Ursprungs-Überweisung zu löschen macht es möglich\n" -"die generierten Überweisungen zu modifizieren." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Diese Überweisung ist eine wiederholte Überweisung.\n" -"Was möchtest du mit wiederholten Überweisungen machen?\n" -"\n" -"Nur die Ursprungs-Überweisung zu aktualisieren wird die\n" -"generierten Überweisungen unabhängig machen." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Morgen" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Insgesamt" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Überweisung" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Überweisungen" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Überweisungen ohne Gruppe" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Von {0} Überweisen" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Zu {0} Überweisen" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Jummit" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "In zwei Monaten" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Art" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Konto konnte nicht zu Datei exportiert werden." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Die Informationen aus der Datei können nicht importiert werden. Bitte " -"stellen Sie sicher, dass die App die Berechtigungen für den Zugriff auf die " -"Datei hat und versuchen Sie es erneut." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Es können keine Überweisungen aus der Datei importiert werden." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Währungsdaten können nicht geladen werden. Bitte versuchen Sie es erneut. " -"Wenn der Fehler weiterhin auftritt, melden Sie einen Fehler." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" -"Anmeldung zum Konto nicht möglich. Das angegebene Kennwort ist ungültig." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Das Konto kann nicht eröffnet werden. Bitte stellen Sie sicher, dass die App " -"die Berechtigungen für den Zugriff auf die Datei hat und versuchen Sie es " -"erneut." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Bestehendes Konto konnte nicht überschrieben werden." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Eröffnetes Konto konnte nicht überschrieben werden." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Ungruppiert" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Nicht gekennzeichnet" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Bevorstehende Überweisungen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Nur Ursprung Aktualisieren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Ursprung und Generierte Aktualisieren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Überweisung Aktualisieren" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Hochladen" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Ansehen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Möchten Sie die PDF-Datei mit einem Passwort schützen?\n" -"\n" -"Wenn das Passwort verloren geht, ist die PDF-Datei unzugänglich." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Ja" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Dein System meldete deine Währung sei" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Guten Morgen!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Guten Morgen!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Zurück" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Standard-Transaktionsart" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Schwellenwert für Überweisungserinnerungen" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Einen Tag vorher" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Eine Woche vorher" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Einen Monat vorher" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Zwei Monate vorher" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Die vom Konto verwendete Währung verwalten." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Legen Sie ein neues Passwort fest oder entfernen Sie eines." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Eigene Währung Benutzen" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Andere" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Keine" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Dezimalziffern" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Zwei" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Drei" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Vier" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Fünf" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Sechs" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Unbegrenzt" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Neues Passwort" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Passwort bestätigen" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Passwortstärke" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" -"Wenn das Passwort verloren geht, gibt es keine Möglichkeit, die Datei " -"wiederherzustellen!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Entfernen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Geld Überweisen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Alle Informationen exportieren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Aktuelle Ansicht exportieren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Nach Beschreibung suchen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Heutige Übersicht" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Erinnerungen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Aktionen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Alle Übersichtsfilter auswählen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Neue Gruppe (Strg+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Neu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Gruppen-Sichtbarkeit Umschalten" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Alle Gruppenfilter auswählen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Gruppenfilter abwählen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Tag-Sichtbarkeit Umschalten" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Alle Tagfilter auswählen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Tagfilter abwählen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalender" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Jetzigen Monat auswählen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Für heute zurücksetzen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Heute" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Wähle Zeitspanne Aus" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Beginn" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Ende" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Veranschaulichen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Weiter" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Sortiere Vom Ersten Zum Letzten" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Sortiere Vom Letzten Zum Ersten" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Neue Überweisung (Strg+Umschalt+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Neu" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Vorschläge" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Umrechner" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Währungen wechseln" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Wechseln" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Wird geladen..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Quelle" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Ergebnis" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Ergebnisbetrag kopieren" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Alle Konten" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Farbe" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Löschen" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Gruppe Editieren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Neues Konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Nutzen Sie diesen Assistenten, um Ihr Konto optimal zu nutzen" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Los geht's" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Speicherort" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Kontopasswort (optional)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Ordner" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Bestehende Kontos überschreiben" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Kontooptionen" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Dies ist nur eine nützliche Bezeichnung die nicht beeinflusst wie das " -"Programm funktioniert." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Kontowährung" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Bestehende Informationen importieren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Laden Sie eine gültige Datei hoch, mit der Sie bestehende Informationen in " -"das neue Konto importieren können." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Datei importieren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Datei auswählen" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Datei leeren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Erstellen" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Passwort zum Anmelden eingeben:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Passwort" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Entsperren" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Einstellungen" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Nutzeroberfläche" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Thema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Hell" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Dunkel" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "System" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Farben" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Passe die Farben an die Denaro verwendet." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Standardfarbe für Überweisungen" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Eine Änderung zu dieser Einstellung wird nur für neue Überweisungen " -"verwendet." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Standard-Transferfarbe" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Eine Änderung zu dieser Einstellung wird nur für neue Überweisungen " -"verwendet." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Standardfarbe der Gruppe" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Eine Änderung dieser Einstellung wird nur auf neue Gruppen angewendet." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Girokonto-Farbe" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Sparkonto-Farbe" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Geschäftskontofarbe" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Sprache" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Native Ziffern verwenden" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Ob Sie anstelle von lateinischen Ziffern die für Ihre Sprachumgebung " -"typischen Ziffern verwenden wollen." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Dezimaltrennzeichen einfügen" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Stelle ein bei welchen Gedrückten Tasten das Dezimaltrennzeichen der " -"Sprachumgebung in das Mengenfeld eingefügt wird." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Aus" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Nur Ziffernblock-Punkt" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Punkt und Komma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Sicherung" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "CSV-Sicherungsordner" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Unverschlüsselte Konten werden automatisch als CSV-Dateien in diesen Ordner " -"exportiert wenn eine Änderung gemacht wird." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Setze Sicherungs-Ordner zurück" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Keine Erinnerungen" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Konto Schließen" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Überweisen" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Neue Gruppe" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Neue Überweisung" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Programm" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Tastaturkürzel" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Seitenleiste Umschalten" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Beenden" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Eine Kopie erstellen" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "End-Datum Zurücksetzen" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Täglich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Wöchentlich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Zweiwöchentlich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Monatlich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Vierteljährlich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Jährlich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Zweijährlich" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Gruppenfarbe verwenden" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Einzigartige Farbe verwenden" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Geben Sie einen neuen Schlagwortnamen ein..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Tag hinzufügen" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extras" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Verwalte Extra-Felder der Transaktion." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Notizen hier eingeben" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Überweisung Editieren" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Geld zu überweisen wird eine Ausgabe-Überweisung mit dem angegebenen Betrag " -"in diesem Konto und eine Einkommen-Überweisung mit dem gegebenen Betrag in " -"dem angegeben Konto erstellen." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Kein Konto Ausgewählt" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Wähle ein Zielkonto aus" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Kürzliche Konten" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Kürzliche" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Umwechslung Benötigt" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Benutzerdefinierte Kurse verwenden" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Geben Sie die Umrechnungskurse manuell ein" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Überweisen" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Währungsumrechner" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Über Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Konto-Menü" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Neues Konto (Strg+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Neu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Konto öffnen (Strg+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Keine kürzlichen Konten" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Diagramm umschalten" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Hauptmenü" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Übersicht" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Erstelle oder öffne ein Konto um loszulegen. Dateien können auch vom Datei-" -"Manager in das Programm gezogen werden." - -#~ msgid "result" -#~ msgstr "Ergebnis" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "Geld;Finanzen;Brieftasche;Bargeld;Bank;Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Mehrere Konten gleichzeitig verwalten, mit einer vertrauten " -#~ "Registerkartenoberfläche" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— Transaktionen einfach nach Typ, Gruppe oder Datum filtern" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Einfaches Wiederholen von Überweisungen, beispielsweise von Rechnungen, " -#~ "die jeden Monat anfallen" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Geld von einem Konto auf ein anderes überweisen" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Ein Konto als CSV-Datei exportieren und eine CSV-, OFX- oder QIF-Datei " -#~ "importieren, um einem Konto massenhaft Überweisungen hinzuzufügen" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "Bitte warten Sie, während Transaktionen importiert werden..." - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Die Informationen aus der Datei können nicht importiert werden. Nicht " -#~ "unterstützter Dateityp." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Passe die Nutzeroberfläche des Programms an." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Passe an wie Denaro Spracheinstellungen verwendet." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Passe den Sicherungsort der Denaro-Konten an." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Anderes" - -#~ msgid "Enter symbol here" -#~ msgstr "Zeichen hier eingeben" - -#~ msgid "Enter code here" -#~ msgstr "Code hier eingeben" - -#~ msgid "Save" -#~ msgstr "Speichern" - -#~ msgid "Hide" -#~ msgstr "Ausblenden" - -#~ msgid "Show" -#~ msgstr "Zeigen" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Datum-Filter Zurücksetzen" - -#~ msgid "Delete Group?" -#~ msgstr "Gruppe Löschen?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Überweisung Löschen?" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "- Ein Problem behoben, bei dem Denaro auf Systemen mit nicht " -#~ "konfigurierten Gebietsschemata abstürzte" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "" -#~ "- Ein Problem behoben, bei dem der PDF-Export für Konten mit vielen " -#~ "Belegen fehlschlug" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "" -#~ "- Ein Problem behoben, bei dem der Filter einer Gruppe reaktiviert wurde, " -#~ "wenn eine Überweisung zu dieser Gruppe hinzugefügt wurde" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "- Fehlermeldungen werden angezeigt, wenn Denaro versucht, auf " -#~ "unzugängliche Dateien zuzugreifen, anstatt abzustürzen" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "- Aktualisierte Übersetzungen (Dank an alle auf Weblate)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Konto-Einstellungen" - -#~ msgid "Version: {0}" -#~ msgstr "Version: {0}" - -#~ msgid "About {0}" -#~ msgstr "Über {0}" - -#~ msgid "Changelog" -#~ msgstr "Änderungen" - -#~ msgid "Report a Bug" -#~ msgstr "Einen Fehler melden" - -#~ msgid "Discussions" -#~ msgstr "Diskussionen" - -#~ msgid "Credits" -#~ msgstr "Anerkennungen" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Beitragende auf GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Übersetzer auf Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Startseite" - -#~ msgid "Settings" -#~ msgstr "Einstellungen" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Geld Überweisen (Strg+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Von Datei importieren (Strg+I)" - -#~ msgid "Filters" -#~ msgstr "Filter" - -#~ msgid "Hide Groups" -#~ msgstr "Gruppen Ausblenden" - -#~ msgid "Show Groups" -#~ msgstr "Gruppen Zeigen" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "{0} Überweisungen von Datei importiert." - -#~ msgid "Enter name here" -#~ msgstr "Gebe hier den Namen ein" - -#~ msgid "Enter description here" -#~ msgstr "Gebe hier die Beschreibung ein" - -#~ msgid "Enter amount here" -#~ msgstr "Gebe hier den Betrag ein" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Money-Konto (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "- Verwalte mehrere Konten gleichzeitig, mit einer bekannten " -#~ "Registerkartenoberfläche\n" -#~ "- Einfaches Filtern von Transaktionen nach Typ, Gruppe oder Datum\n" -#~ "- Einfaches Wiederholen von Transaktionen, z. B. von Rechnungen, die " -#~ "jeden Monat anfallen\n" -#~ "- Geld von einem Konto auf ein anderes übertragen\n" -#~ "- Exportiere ein Konto als CSV-Datei und importieren Sie eine CSV-, OFX- " -#~ "oder QIF-Datei, um einem Konto massenhaft Transaktionen hinzuzufügen" - -#~ msgid "New Window" -#~ msgstr "Neues Fenster" - -#~ msgid "Enter password here" -#~ msgstr "Passwort hier eingeben" - -#~ msgid "Enter decimal separator" -#~ msgstr "Dezimaltrennzeichen eingeben" - -#~ msgid "Enter group separator" -#~ msgstr "Gruppentrennzeichen eingeben" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transaktion {0}" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transaktionen ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Kein Sicherungs-Ordner" - -#~ msgid "Accounts" -#~ msgstr "Konten" - -#~ msgid "Reset All Filters" -#~ msgstr "All Filter Zurücksetzen" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Kontoeinstellungen (Strg+.)" - -#~ msgid "Sort" -#~ msgstr "Sortieren" - -#~ msgid "Order By" -#~ msgstr "Sortieren Nach" - -#~ msgid "Increasing" -#~ msgstr "Steigend" - -#~ msgid "Decreasing" -#~ msgstr "Abnehmend" - -#~ msgid "Sort By" -#~ msgstr "Sortieren Nach" diff --git a/NickvisionMoney.Shared/Resources/po/denaro.pot b/NickvisionMoney.Shared/Resources/po/denaro.pot deleted file mode 100644 index a76f54633..000000000 --- a/NickvisionMoney.Shared/Resources/po/denaro.pot +++ /dev/null @@ -1,1539 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "" -msgstr[1] "" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" diff --git a/NickvisionMoney.Shared/Resources/po/es.po b/NickvisionMoney.Shared/Resources/po/es.po deleted file mode 100644 index 067130dd0..000000000 --- a/NickvisionMoney.Shared/Resources/po/es.po +++ /dev/null @@ -1,1874 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-12-29 06:12+0000\n" -"Last-Translator: Óscar Fernández Díaz \n" -"Language-Team: Spanish \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.4-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copia)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} de {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} etiqueta" -msgstr[1] "{0} etiquetas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transacción" -msgstr[1] "{0} transacciones" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nombre de cuenta" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nombre de la cuenta (existente)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nombre de la cuenta (abierta)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Configuración de la cuenta" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipo de cuenta" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Añadir" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" -"Añadir una transacción nueva o importar transacciones desde un archivo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "¿Añadir contraseña a un PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Todos los archivos" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Importe" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Importe (no válido)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Aplicar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"¿Está seguro de que desea borrar este grupo?\n" -"Esta acción es irreversible." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"¿Está seguro de que desea borrar esta transacción?\n" -"Esta acción es irreversible." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Empresa" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"No se puede acceder a la carpeta seleccionada, compruebe los permisos de " -"Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Cancelar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Cambiar contraseña" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Corriente" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Cerrar" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Contribuidores en GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Moneda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Código de moneda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Código de la divisa (vacío)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Símbolo de moneda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Símbolo de moneda (vacío)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Símbolo de la moneda (no válido)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Fecha" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separador de decimales" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separador de decimal (vacío)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separador de decimal (No válido )" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Borrar existente" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Borrar grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Borrar solo origen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Borrar origen y generadas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Borrar transacción" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descripción" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descripción (vacía)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Cuenta de destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Cuenta de destino (no válida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Contraseña de la cuenta de destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Contraseña de la cuenta de destino (no válida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Contraseña de la cuenta de destino (requerida)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Disociar existente" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Error" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Gastos" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportar a archivo" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Cuenta exportada a archivo correctamente." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Generado: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repositorio de GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "¡Buenas tardes!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "¡Buen día!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "¡Buenas noches!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupo" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nombre del grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separador de grupos" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separador de grupos (no válido)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupos" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Ayuda" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importar desde cuenta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importar desde archivo" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Importada {0} transacción del archivo." -msgstr[1] "Importadas {0} transacciones del archivo." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Ingresos" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Administre sus finanzas personales" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Chat de Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/D" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nombre" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nombre (vacío)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nombre (existente)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nunca" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Cuenta Denaro de Nickvision" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "No" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Sin fecha final" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Sin transacciones" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "No se han encontrado transacciones" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Ninguna transacción coincide con los filtros especificados." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Notas" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nada que importar del archivo." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Dentro de un mes" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Dentro de una semana" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Abrir" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Abrir cuenta" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Resumen" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Página {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Contraseña del PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Recibo" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Recibo (Archivo inaccesible)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Recibos" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Repetir fecha final" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Repetir fecha final (no válida)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Intervalo de repetición" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Intervalo de repetición modificado" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Resultado copiado al portapapeles." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Ahorros" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Seleccionar cuenta" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Seleccione la carpeta de copia de seguridad" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Seleccionar carpeta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Ordenar por cantidad" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Ordenar por fecha" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Ordenar por id" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Etiquetas" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "La contraseña de la cuenta ha sido cambiada." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "La contraseña de la cuenta ha sido eliminada." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "La contraseña se eliminará al cerrar este diálogo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Las contraseñas no concuerdan." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Se ha modificado el intervalo de repetición.\n" -"¿Qué desea hacer con las transacciones generadas existentes?\n" -"\n" -"Se generarán nuevas transacciones de repetición basadas en el nuevo " -"intervalo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Esta cuenta no tiene dinero disponible para transferir." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Esta cuenta ya está abierta." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Esta transacción es una transacción repetida en origen.\n" -"¿Qué desea hacer con las transacciones repetidas?\n" -"\n" -"Borrando sólo la transacción de origen permitirá que las\n" -"transacciones generadas sean modificables." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Esta transacción es una transacción repetida en origen.\n" -"¿Qué desea hacer con las transacciones repetidas?\n" -"\n" -"Al actualizar sólo la transacción de origen se disociarán\n" -"las transacciones generadas en origen." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Mañana" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transacción" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transacciones" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transacciones sin grupo" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transferir desde {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transferir a {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Óscar Fernández Díaz " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Dentro de dos meses" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tipo" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "No se puede exportar la cuenta a un archivo." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"No se ha podido importar la información del archivo. Asegúrese de que la " -"aplicación tiene permisos para acceder al archivo e inténtelo de nuevo." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "No se pueden importar las transacciones del archivo." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"No se han podido cargar los datos de la divisa. Por favor, vuelva a " -"intentarlo. Si el error persiste, notifique un error." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" -"No se puede acceder a la cuenta. La contraseña proporcionada no es válida." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"No se ha podido abrir la cuenta. Asegúrese de que la aplicación tiene los " -"permisos para acceder al archivo e inténtelo de nuevo." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "No se puede sobrescribir una cuenta existente." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "No se puede sobrescribir una cuenta abierta." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Sin agrupar" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Sin etiqueta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Próximas transacciones" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Actualizar solo origen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Actualizar origen y generadas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Actualizar transacción" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Cargar" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Ver" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"¿Desea proteger el archivo PDF con una contraseña?\n" -"\n" -"Si pierde la contraseña, el PDF será inaccesible." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Sí" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Su sistema informó de que su moneda es" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "¡Buenos días!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "¡Buenos días!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Volver" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tipo de transacción predeterminado" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Umbral de recordatorios de las transacciones" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Un día antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Una semana antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Un mes antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Dos meses antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Gestionar la moneda utilizada por la cuenta." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Establecer una nueva contraseña o eliminar una." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Usar moneda personalizada" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Estilo de visualización de la cantidad" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Otro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Ninguno" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Dígitos decimales" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Dos" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Tres" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Cuatro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Cinco" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Seis" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Sin límites" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nueva contraseña" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Confirmar contraseña" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Fortaleza de la contraseña" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Si se pierde la contraseña, ¡no hay forma de restaurar el archivo!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Eliminar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Transferir dinero" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Exportar toda la información" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Exportar vista actual" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Buscar por las descripciones" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Resumen de hoy" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Recordatorios" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Acciones" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Seleccionar todos los filtros del resumen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Grupo nuevo (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nuevo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Conmutar visibilidad de grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Seleccionar todos los grupos de Filtros" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Desmarcar los filtros de los grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Conmutar la visibilidad de las etiquetas" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Seleccionar todas los filtros para las etiquetas" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Deseleccionar los filtros para las etiquetas" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Calendario" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Seleccionar mes actual" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Volver al día de hoy" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Hoy" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Seleccionar intervalo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Inicio" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Fin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Visualizar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Siguiente" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Ordenar del primero al último" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Ordenar del último al primero" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Transacción nueva (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nueva" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Sugerencias" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Conversor" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Cambiar de divisa" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Cambiar" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Cargando..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Fuente" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Resultado" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Copiar el resultado del importe" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Todas las cuentas" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Color" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Borrar" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Editar grupo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Cuenta nueva" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Use este asistente para sacar el máximo partido a su cuenta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Comencemos" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Ubicación de almacenamiento" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Contraseña de la cuenta (opcional)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Carpeta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Sobrescribir cuentas existentes" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Opciones de cuenta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Se trata sólo de una etiqueta útil que no afecta al funcionamiento de la " -"aplicación." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Divisa de la cuenta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importar información existente" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Cargue un archivo válido para importar la información existente en la cuenta " -"nueva." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Importar archivo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Seleccionar archivo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Limpiar archivo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Crear" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Introduzca la contraseña para iniciar sesión:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Contraseña" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Desbloquear" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Preferencias" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interfaz de usuario" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Claro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Oscuro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Sistema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Colores" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Personalice los colores usados por Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Color de transacción predeterminado" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Un cambio en esta configuración sólo se aplicará a las transacciones recién " -"añadidas." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Color predeterminado de la transferencia" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Un cambio en esta configuración sólo se aplicará a las transferencias nuevas." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Color predeterminado del grupo" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Un cambio en esta configuración sólo se aplicará a los grupos nuevos." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Color de la cuenta corriente" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Color de la cuenta de ahorro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Color de la cuenta de la empresa" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Localización" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Usar dígitos nativos" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Si usar numerales que son nativos para su localización en lugar de dígitos " -"latinos." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Insertar separador decimal" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Establecer para qué teclas pulsadas se insertará el separador decimal de la " -"configuración regional en un campo de importe." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Fuera" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Punto final" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Punto y coma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Copia de seguridad" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Carpeta de copia de seguridad de CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Las cuentas no cifradas se exportarán automáticamente como archivos CSV a " -"esta carpeta cuando se realice un cambio." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Borrar la carpeta de copia de seguridad" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Sin recordatorios" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Cuenta" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Cerrar cuenta" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Transferencia" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Grupo nuevo" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Transacción nueva" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplicación" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Atajos del teclado" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Conmutar barra lateral" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Salir" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Hacer una copia" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Limpiar fecha final" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Diario" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Semanal" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Quincenal" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Mensual" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Trimestral" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Anual" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Bianual" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Usar color de grupo" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Usar color único" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Introduzca un nombre de etiqueta nuevo..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Añadir una etiqueta" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extras" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Gestionar los campos adicionales de la transacción." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Escriba aquí las notas" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Editar transacción" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Al transferir dinero se creará una operación de gasto con el importe dado en " -"esta cuenta y una operación de ingreso con el importe dado en la cuenta a la " -"que se va a transferir." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Ninguna cuenta seleccionada" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Seleccione una cuenta de destino" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Cuentas recientes" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Recientes" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Se necesita la conversión" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Usar tarifas personalizadas" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Introduzca manualmente los índices para la conversión" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Conversor de divisas" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Acerca de Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menú de la cuenta" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Cuenta nueva (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Nueva" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Abrir cuenta (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Sin cuentas recientes" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Conmutar gráficas" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menú principal" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Panel" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Cree o abra una cuenta para empezar. También puede arrastrar un archivo a la " -"aplicación desde el explorador de archivos." - -#~ msgid "result" -#~ msgstr "resultado" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "dinero;finanzas;cartera;efectivo;banco;Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Gestione varias cuentas a la vez, con una interfaz de pestañas intuitiva" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— Filtre fácilmente las transacciones por tipo, grupo o fecha" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Repetir fácilmente las transacciones, como facturas que se producen " -#~ "todos los meses" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Transferir dinero de una cuenta a otra" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Exporte una cuenta como un archivo CSV e importe un archivo CSV, OFX o " -#~ "QIF para añadir las transacciones en bloque a una cuenta" - -#~ msgid "OK" -#~ msgstr "Aceptar" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "Espere mientras se importan las transacciones..." - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "No se ha podido importar información del fichero. Tipo de archivo no " -#~ "compatible." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Personalice la interfaz de usuario de la aplicación." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Personalizar cómo Denaro usa la configuración regional." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "" -#~ "Personalizar las ubicaciones de la copia de seguridad para las cuentas de " -#~ "Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Otro" - -#~ msgid "Enter symbol here" -#~ msgstr "Introduzca aquí el símbolo" - -#~ msgid "Enter code here" -#~ msgstr "Introduzca aquí el código" - -#~ msgid "Save" -#~ msgstr "Guardar" - -#~ msgid "Hide" -#~ msgstr "Ocultar" - -#~ msgid "Show" -#~ msgstr "Mostrar" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Restablecer filtros de fechas" - -#~ msgid "Delete Group?" -#~ msgstr "¿Eliminar grupo?" - -#~ msgid "Delete Transaction?" -#~ msgstr "¿Eliminar transacción?" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "- Se ha solucionado un problema por el que Denaro se bloqueaba en " -#~ "sistemas con configuraciones regionales no configuradas" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "" -#~ "- Se ha solucionado un problema por el que la exportación a PDF fallaba " -#~ "en cuentas con muchos recibos" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "" -#~ "- Se ha corregido un problema por el que el filtro de un grupo se " -#~ "reactivaba cuando se añadía una transacción a ese grupo" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "- Se mostrarán mensajes de error si Denaro intenta acceder a archivos " -#~ "inaccesibles en lugar de bloquearse" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "" -#~ "- ¡Traducciones actualizadas (Gracias a todos los usuarios de Weblate)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Configuración de la cuenta" - -#~ msgid "Version: {0}" -#~ msgstr "Versión: {0}" - -#~ msgid "About {0}" -#~ msgstr "Acerca de {0}" - -#~ msgid "Changelog" -#~ msgstr "Registro de cambios" - -#~ msgid "Credits" -#~ msgstr "Créditos" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contribuidores en GitHub ❤️ https://github.com/NickvisionApps/Denaro/" -#~ "graphs/contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Los traductores en Weblate ❤️ https://hosted.weblate.org/projects/" -#~ "nickvision-money/app/" - -#~ msgid "Home" -#~ msgstr "Inicio" - -#~ msgid "Settings" -#~ msgstr "Configuración" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Transferir dinero (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importar desde archivo (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtros" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Importadas {0} transacciones del archivo." - -#~ msgid "Enter name here" -#~ msgstr "Introduzca aquí el nombre" - -#~ msgid "Enter description here" -#~ msgstr "Introduzca aquí la descripción" - -#~ msgid "Enter amount here" -#~ msgstr "Introduzca aquí el importe" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Cuenta bancaria (*.nmoney)" - -#~ msgid "Report a Bug" -#~ msgstr "Informar de un error" - -#~ msgid "Discussions" -#~ msgstr "Debates" - -#~ msgid "Hide Groups" -#~ msgstr "Ocultar grupos" - -#~ msgid "Show Groups" -#~ msgstr "Mostrar grupos" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Administra varias cuentas simultáneamente, ya que la interfaz de la " -#~ "aplicación es una interfaz de pestañas\n" -#~ "— Ordenar transacciones por sus tipos, grupos o fechas\n" -#~ "— Repita las transacciones con facilidad, por ejemplo, puede repetir las " -#~ "transacciones todos los meses\n" -#~ "Transferir dinero de una cuenta a otra\n" -#~ "— Exporte cuentas como archivos CSV e importe archivos CSV, OFX o QIF " -#~ "para agregar transacciones a una cuenta" - -#~ msgid "New Window" -#~ msgstr "Ventana nueva" - -#~ msgid "Enter password here" -#~ msgstr "Introduzca aquí la contraseña" - -#~ msgid "Enter decimal separator" -#~ msgstr "Introduzca el separador de decimal" - -#~ msgid "Enter group separator" -#~ msgstr "Introduzca el separador de grupos" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transacción ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transacciones ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Sin carpeta de copia de seguridad" - -#~ msgid "Accounts" -#~ msgstr "Cuentas" - -#~ msgid "Reset All Filters" -#~ msgstr "Restablecer todos los filtros" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Configuración de la cuenta (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Ordenar" - -#~ msgid "Order By" -#~ msgstr "Ordenar por" - -#~ msgid "Increasing" -#~ msgstr "Ascendente" - -#~ msgid "Decreasing" -#~ msgstr "Descendente" - -#~ msgid "Sort By" -#~ msgstr "Ordenar por" diff --git a/NickvisionMoney.Shared/Resources/po/et.po b/NickvisionMoney.Shared/Resources/po/et.po deleted file mode 100644 index 6ca8e774e..000000000 --- a/NickvisionMoney.Shared/Resources/po/et.po +++ /dev/null @@ -1,1620 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: et\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, fuzzy, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "Tehingud" -msgstr[1] "Tehingud" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -#, fuzzy -msgid "Account Name" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -#, fuzzy -msgid "Account Name (Exists)" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -#, fuzzy -msgid "Account Name (Opened)" -msgstr "Konto" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -#, fuzzy -msgid "Account Settings" -msgstr "Sätted" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -#, fuzzy -msgid "Account Type" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Lisa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Kõik failid" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -#, fuzzy -msgid "Amount" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Rakenda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Tühista" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Sulge" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -#, fuzzy -msgid "Delete Existing" -msgstr "Kustuta tehing" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -#, fuzzy -msgid "Delete Group" -msgstr "Kustuta tehing" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Kustuta tehing" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -#, fuzzy -msgid "Destination Account" -msgstr "Uus konto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Kulu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Tere päevast!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Tere päevast!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Tere õhtust!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Abi" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "" -msgstr[1] "" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Tulu" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrixi jututuba" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro konto" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Ei" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Pole tehinguid" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -#, fuzzy -msgid "No Transactions Found" -msgstr "Pole tehinguid" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Ava" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -#, fuzzy -msgid "Open Account" -msgstr "Uus konto" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Ülevaade" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -#, fuzzy -msgid "Savings" -msgstr "Sätted" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -#, fuzzy -msgid "Select Account" -msgstr "Uus konto" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Kokku" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -#, fuzzy -msgid "Transaction" -msgstr "Tehingud" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Tehingud" - -#: ../../../Models/Account.cs:472 -#, fuzzy -msgid "Transactions without a group" -msgstr "Tehingud" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:875 -#, fuzzy, csharp-format -msgid "Transfer To {0}" -msgstr "Tehing ({0})" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -#, fuzzy -msgid "Upcoming transactions" -msgstr "Pole tehinguid" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -#, fuzzy -msgid "Update Transaction" -msgstr "Kustuta tehing" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Jah" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Tere hommikust!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Head ööd!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Tagasi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -#, fuzzy -msgid "Default Transaction Type" -msgstr "Kustuta tehing" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Eemalda" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Tänane ülevaade" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -#, fuzzy -msgid "Actions" -msgstr "Tehingud" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -#, fuzzy -msgid "New Group (Ctrl+G)" -msgstr "Uus konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "Uus" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalender" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -#, fuzzy -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Uus konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "Uus" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "Kontod" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -#, fuzzy -msgid "All Accounts" -msgstr "Kontod" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Uus konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -#, fuzzy -msgid "Overwrite Existing Accounts" -msgstr "Uus konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "Sätted" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -#, fuzzy -msgid "Account Currency" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Eelistused" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -#, fuzzy -msgid "Backup" -msgstr "Tagasi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -#, fuzzy -msgid "Close Account" -msgstr "Uus konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -#, fuzzy -msgid "New Group" -msgstr "Uus konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -#, fuzzy -msgid "New Transaction" -msgstr "Pole tehinguid" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Kiirklahvid" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Lahku" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -#, fuzzy -msgid "Edit Transaction" -msgstr "Tehingud" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -#, fuzzy -msgid "No Account Selected" -msgstr "Uus konto" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -#, fuzzy -msgid "Recent Accounts" -msgstr "Kontod" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -#, fuzzy -msgid "Account Menu" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Uus konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "Uus" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -#, fuzzy -msgid "Open Account (Ctrl+O)" -msgstr "Uus konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -#, fuzzy -msgid "No Recent Accounts" -msgstr "Kontod" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Save" -#~ msgstr "Salvesta" - -#~ msgid "Hide" -#~ msgstr "Peida" - -#, fuzzy -#~ msgid "Delete Transaction?" -#~ msgstr "Kustuta tehing" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Sätted" - -#~ msgid "Version: {0}" -#~ msgstr "Versioon: {0}" - -#~ msgid "About {0}" -#~ msgstr "Teave - {0}" - -#~ msgid "Changelog" -#~ msgstr "Muudatused" - -#~ msgid "Report a Bug" -#~ msgstr "Teata veast" - -#~ msgid "Discussions" -#~ msgstr "Vestlused" - -#~ msgid "Credits" -#~ msgstr "Tegijad" - -#~ msgid "Filters" -#~ msgstr "Filtrid" - -#~ msgid "Transactions ({0})" -#~ msgstr "Tehingud ({0})" - -#~ msgid "Sort" -#~ msgstr "Sorteeri" diff --git a/NickvisionMoney.Shared/Resources/po/fi.po b/NickvisionMoney.Shared/Resources/po/fi.po deleted file mode 100644 index bd8e4ac4b..000000000 --- a/NickvisionMoney.Shared/Resources/po/fi.po +++ /dev/null @@ -1,1770 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-08-24 20:09+0000\n" -"Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish \n" -"Language: fi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Kopio)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} tapahtuma" -msgstr[1] "{0} tapahtumaa" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Tilin nimi" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Tilin nimi (olemassa)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Tilin nimi (avattu)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Tilin asetukset" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tilin tyyppi" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Lisää" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Lisää uusi tapahtuma tai tuo tapahtumat tiedostosta." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Lisätäänkö salasana PDF:ään?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Kaikki tiedostot" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Määrä" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Määrä (virheellinen)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Toteuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Haluatko varmasti poistaa tämän ryhmän?\n" -"Tätä toimintoa ei voi perua." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Haluatko varmasti poistaa tämän tapahtuman?\n" -"Tätä toimintoa ei voi perua." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Yritys" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Ei pääsyä valittuun kansioon, tarkista Flatpak-oikeudet." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Peru" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Vaihda salasana" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Siirto" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Sulje" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Avustajat GitHubissa ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Valuutta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Valuuttakoodi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Valuuttakoodi (tyhjä)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Valuutan symboli" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Valuutan symboli (tyhjä)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Valuutan symboli (virheellinen)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Päivä" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Desimaalierotin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Desimaalierotin (tyhjä)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Desimaalierotin (virheellinen)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Poista olemassa oleva" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Poista ryhmä" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -#, fuzzy -msgid "Delete Only Source" -msgstr "Poista ryhmä" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Poista tapahtuma" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Kuvaus" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Kuvaus (tyhjä)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Kohdetili" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Kohdetili (virheellinen)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Kohdetilin salasana" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Kohdetilin salasana (virheellinen)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Kohdetilin salasana (pakollinen)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Meno" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Vie tiedostoon" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Tili viety tiedostoon onnistuneesti." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Luotu: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub-tietovarasto" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Hyvää iltapäivää!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Hyvää päivää!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Hyvää iltaa!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Ryhmä" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Ryhmän nimi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Ryhmäerotin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Ryhmäerotin (virheellinen)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Ryhmät" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Ohje" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Tunniste" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Tuo tililtä" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Tuo tiedostosta" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Tuotu {0} tapahtuma tiedostosta." -msgstr[1] "Tuotu {0} tapahtumaa tiedostosta." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Tulo" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Hallitse raha-asioitasi" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix-keskustelu" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "-" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nimi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nimi (tyhjä)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nimi (olemassa)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Ei koskaan" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro -tili" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Ei" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Ei loppupäivää" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Ei tapahtumia" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Tapahtumia ei löytynyt" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Suodattimia vastaavia tapahtumia ei löydy." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Ei mitään tuotavaa tiedostosta." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Yksi kuukausi tästä hetkestä" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Yksi viikko tästä hetkestä" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Avaa" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Avaa tili" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Yleisnäkymä" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Sivu {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF-salasana" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Kuitti" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Kuitit" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Toistumisen loppupäivä" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Toistumisen loppupäivä (virheellinen)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Toistumisväli" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -#, fuzzy -msgid "Repeat Interval Changed" -msgstr "Toistumisväli" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Säästöt" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Valitse tili" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Valitse varmuuskopiokansio" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Valitse kansio" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Järjestä summan mukaan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Järjestä päivän mukaan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Järjestä tunnisteen mukaan" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Tunnisteet" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Tilin salasana vaihdettiin." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Tilin salasana poistettiin." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Salasana poistetaan, kun tämä ikkuna suljetaan." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Salasanat eivät täsmää." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Tällä tilillä ei ole riittävästi rahaa siirtoa varten." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Tämä tili on jo avattu." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Huomenna" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Yhteensä" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Tapahtuma" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Tapahtumat" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Tapahtumat ilman ryhmää" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Siirrä kohteesta {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Siirrä kohteeseen {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Jiri Grönroos" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Kaksi kuukautta tästä hetkestä" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tyyppi" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Tiliä ei voitu viedä tiedostoon." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -#, fuzzy -msgid "Unable to import transactions from the file." -msgstr "Lisää uusi tapahtuma tai tuo tapahtumat tiedostosta." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Kirjautuminen tilille ei onnistu. Annettu salasana on virheellinen." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Olemassa olevan tilin korvaaminen ei onnistu." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Tiliä ei voitu viedä tiedostoon." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Ryhmittämätön" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -#, fuzzy -msgid "Upcoming transactions" -msgstr "Ei tapahtumia" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Päivitä vain lähde" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Päivitä tapahtuma" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Lähetä" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Näytä" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Haluatko suojata PDF-tiedoston salasanalla?\n" -"\n" -"Jos salasana katoaa, PDF-tiedosto ei ole käytettävissä." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Kyllä" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Järjestelmä ilmoitti, että käyttämäsi valuutta on" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Hyvää huomenta!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Hyvää huomenta!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Takaisin" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tapahtuman oletustyyppi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Hallitse tilillä käytettävää valuuttaa." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Aseta uusi salasana tai poista salasana." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Käytä mukautettua valuuttaa" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "Other" -msgstr "Muu" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "None" -msgstr "Ei mitään" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Kaksi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Kolme" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Neljä" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Viisi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Kuusi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Uusi salasana" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Vahvista salasana" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Salasanan vahvuus" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Jos salasana häviää, tiedostoa ei ole mahdollista palauttaa!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Poista" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Siirrä rahaa" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Vie kaikki tiedot" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Vie nykyinen näkymä" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Etsi kuvausta" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Päivän yleisnäkymä" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Muistutukset" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Toiminnot" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -#, fuzzy -msgid "Select All Overview Filters" -msgstr "Nollaa yleisnäkymän suodattimet" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Uusi ryhmä (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Uusi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Näytä/piilota ryhmät" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -#, fuzzy -msgid "Select All Groups Filters" -msgstr "Nollaa ryhmäsuodattimet" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -#, fuzzy -msgid "Unselect Groups Filters" -msgstr "Nollaa ryhmäsuodattimet" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "Näytä/piilota ryhmät" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -#, fuzzy -msgid "Select All Tags Filters" -msgstr "Nollaa ryhmäsuodattimet" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -#, fuzzy -msgid "Unselect Tags Filters" -msgstr "Nollaa ryhmäsuodattimet" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalenteri" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Valitse nykyinen kuukausi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Tänään" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Valitse aikaväli" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Alku" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Loppu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Seuraava" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Järjestä ensimmäisestä viimeiseen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Järjestä viimeisestä ensimmäiseen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Uusi tapahtuma (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Uusi" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Ehdotukset" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Tulos" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "Ei viimeisimpiä tilejä" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Kaikki tilit" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Väri" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Poista" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Muokkaa ryhmää" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Uusi tili" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Aloitetaan" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Tallennustilan sijainti" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Tilin salasana (valinnainen)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Kansio" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Korvaa olemassa olevat tilit" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Tilin valinnat" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Tämä on vain hyödyllinen selite, eikä se vaikuta sovelluksen toimintaan." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Tilin valuutta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Tuo olemassa olevat tiedot" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Tuo tiedosto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Valitse tiedosto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Tyhjennä tiedosto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Luo" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Kirjoita salasana kirjautuaksesi:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Salasana" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Avaa lukitus" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Asetukset" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Käyttöliittymä" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Teema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Vaalea" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Tumma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Järjestelmä" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Värit" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Mukauta Denaron käyttämiä värejä." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Tapahtuman oletusväri" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "Muutos tähän asetukseen toteutetaan vain uusiin tapahtumiin." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Siirron oletusväri" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Muutos tähän asetukseen toteutetaan vain uusiin siirtoihin." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Ryhmän oletusväri" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Muutos tähän asetukseen toteutetaan vain uusiin ryhmiin." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Siirtotilin väri" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Säästötilin väri" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Yritystilin väri" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Maa-asetusto" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Syötä desimaalierotin" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -#, fuzzy -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Pois" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Piste ja pilkku" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -#, fuzzy -msgid "Backup" -msgstr "Takaisin" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "CSV-varmuuskopion kansio" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Tyhjennä varmuuskopiokansio" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Tili" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Sulje tili" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Siirto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Uusi ryhmä" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Uusi tapahtuma" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Sovellus" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Pikanäppäimet" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Näytä/piilota sivupalkki" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Lopeta" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Tee kopio" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Tyhjennä loppupäivä" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Päivittäin" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Viikottain" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Joka toinen viikko" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Kuukausittain" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Neljännesvuosittain" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Vuosittain" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Joka toinen vuosi" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Käytä ryhmän väriä" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Käytä yksilöllistä väriä" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Kirjoita uuden tunnisteen nimi..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Lisää tunniste" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Lisäkentät" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Hallitse tapahtuman lisäkenttiä." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -#, fuzzy -msgid "Enter notes here" -msgstr "Kirjoita nimi tähän" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Muokkaa tapahtumaa" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Rahan siirtäminen luo menotapahtuman annetun määrän mukaisesti tälle " -"tilille, ja tulotapahtuman annetun määrän mukaisesti tilille, jolle rahat " -"siirretään." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Tiliä ei ole valittu" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Valitse kohdetili" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Viimeisimmät tilit" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Viimeisimmät" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Muunnos vaaditaan" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "Käytä mukautettua valuuttaa" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "Kirjoita muunnos tähän" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -#, fuzzy -msgctxt "Button" -msgid "Transfer" -msgstr "Siirto" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Valuuttakoodi" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Tietoja - Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Tilivalikko" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Uusi tili (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Uusi" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Avaa tili (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Ei viimeisimpiä tilejä" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Päävalikko" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Kojelauta" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Luo tai avaa tili, jotta pääset alkuun. Voit myös vetää tiedoston " -"tiedostonhallinnasta tähän sovellukseen." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Tulos" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "money;finance;wallet;cash;bank;GTK;Nickvision;raha;lompakko;käteinen;" -#~ "pankki;varallisuus;" - -#~ msgid "OK" -#~ msgstr "OK" - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Mukauta sovelluksen käyttöliittymää." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Mukauta miten Denaro käyttää maa-asetustoja." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Mukauta Denaro-tilien varmuuskopioiden sijainnit." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Muu" - -#~ msgid "Enter symbol here" -#~ msgstr "Kirjoita symboli tähän" - -#~ msgid "Enter code here" -#~ msgstr "Kirjoita koodi tähän" - -#~ msgid "Save" -#~ msgstr "Tallenna" - -#~ msgid "Hide" -#~ msgstr "Piilota" - -#~ msgid "Show" -#~ msgstr "Näytä" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Nollaa päiväsuodattimet" - -#~ msgid "Delete Group?" -#~ msgstr "Poistetaanko ryhmä?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Poistetaanko tapahtuma?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Tilin asetukset" - -#~ msgid "Version: {0}" -#~ msgstr "Versio: {0}" - -#~ msgid "About {0}" -#~ msgstr "Tietoja - {0}" - -#~ msgid "Changelog" -#~ msgstr "Muutosloki" - -#~ msgid "Report a Bug" -#~ msgstr "Ilmoita ongelmasta" - -#~ msgid "Discussions" -#~ msgstr "Keskustelut" - -#~ msgid "Credits" -#~ msgstr "Tekijät" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Avustajat GitHubissa ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Kääntäjät Weblatessa ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Etusivu" - -#~ msgid "Settings" -#~ msgstr "Asetukset" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Siirrä rahaa (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Tuo tiedostosta (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Suodattimet" - -#~ msgid "Hide Groups" -#~ msgstr "Piilota ryhmät" - -#~ msgid "Show Groups" -#~ msgstr "Näytä ryhmät" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Tuotu {0} tapahtumaa tiedostosta." - -#~ msgid "Enter description here" -#~ msgstr "Kirjoita kuvaus tähän" - -#~ msgid "Enter amount here" -#~ msgstr "Kirjoita määrä tähän" - -#~ msgid "Enter password here" -#~ msgstr "Kirjoita salasana tähän" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Hallitse raha-asioitasi" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Rahatili (*.nmoney)" - -#~ msgid "New Window" -#~ msgstr "Uusi ikkuna" - -#~ msgid "Accounts" -#~ msgstr "Tilit" - -#~ msgid "No Backup Folder" -#~ msgstr "Ei varmuuskopiokansiota" - -#~ msgid "Reset All Filters" -#~ msgstr "Nollaa kaikki suodattimet" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Tilin asetukset (Ctrl+.)" - -#~ msgid "Enter group separator" -#~ msgstr "Kirjoita ryhmäerotin" - -#~ msgid "Transactions ({0})" -#~ msgstr "Tapahtumat ({0})" - -#~ msgid "Transaction ({0})" -#~ msgstr "Tapahtuma ({0})" - -#~ msgid "Enter decimal separator" -#~ msgstr "Kirjoita desimaalierotin" diff --git a/NickvisionMoney.Shared/Resources/po/fr.po b/NickvisionMoney.Shared/Resources/po/fr.po deleted file mode 100644 index bd5fbf215..000000000 --- a/NickvisionMoney.Shared/Resources/po/fr.po +++ /dev/null @@ -1,1842 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-11-15 11:53+0000\n" -"Last-Translator: rene-coty \n" -"Language-Team: French \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.2-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copie)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} de {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} étiquette" -msgstr[1] "{0} étiquettes" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transaction" -msgstr[1] "{0} transactions" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nom du compte" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nom du compte (existe)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nom du compte (ouvert)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Paramètres du compte" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Type de compte" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Ajouter" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" -"Ajoutez une nouvelle transaction ou importez des transactions depuis un " -"fichier." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Ajouter un mot de passe au document PDF ?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Tous les fichiers" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Montant" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Montant (invalide)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Appliquer" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Êtes-vous sûr de vouloir supprimer ce groupe ?\n" -"Cette action est irréversible." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Êtes-vous sûr·e de vouloir supprimer cette transaction ?\n" -"Cette action est irréversible." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Affaires" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Impossible d’accéder au dossier sélectionné, vérifiez les permissions " -"Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Annuler" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Changer le mot de passe" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Chèques" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Fermer" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Contributeurs sur GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Devise monétaire" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Code monétaire" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Code devise (vide)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Symbole monétaire" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Symbole monétaire (vide)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Symbole monétaire (invalide)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Date" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Séparateur des décimales" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Séparateur de décimales (vide)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Séparateur de décimales (invalide)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Supprimer l’existant" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Supprimer le groupe" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Supprimer uniquement la source" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Supprimer la source et les transactions générées" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Supprimer la transaction" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Description" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Description (vide)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Compte destinataire" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Compte destinataire (invalide)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Mot de passe du compte de destination" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Mot de passe du compte de destination (invalide)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Mot de passe du compte de destination (obligatoire)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Dissocier l'existant" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Erreur" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Dépenses" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exporter vers un fichier" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Compte exporté dans le fichier avec succès." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Généré : {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Dépôt GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Bonjour !" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Bonjour !" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Bonsoir !" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Groupe" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nom de groupe" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Séparateur de groupes" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Séparateur de groupes (invalide)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Groupes" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Aide" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Identifiant" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importer à partir d’un compte" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importer à partir d’un fichier" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} transaction importée depuis le fichier." -msgstr[1] "{0} transactions importées depuis le fichier." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Revenus" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Gérez vos finances personnelles" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Discussion Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "Indispo." - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nom" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nom (vide)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nom (existe)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Jamais" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Compte Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Non" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Pas de date de fin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Aucune transaction" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Aucune transaction trouvée" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Aucune transaction ne correspond aux critères spécifiés." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Notes" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Rien à importer depuis le fichier." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Dans un mois" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Dans une semaine" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Ouvrir" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Ouvrir un compte" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Aperçu" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Page {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Mot de passe PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Reçu" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Reçu (fichier inaccessible)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Reçus" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Date de fin de répétition" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Date de fin de répétition (invalide)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Intervalle de répétition" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Intervalle de répétition modifié" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Le résultat a été copié vers le presse-papiers." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Épargne" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Sélectionner un compte" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Sélectionner un dossier de sauvegarde" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Sélectionner un dossier" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Trier par montant" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Trier par date" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Trier par identifiant" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Étiquettes" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Le mot de passe du compte a été modifié." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Le mot de passe du compte a été retiré." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Le mot de passe sera retiré à la fermeture de cette boîte de dialogue." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Les mots de passe ne correspondent pas." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"L’intervalle de répétition a été modifié.\n" -"Que souhaitez-vous faire avec les transactions générées existantes ?\n" -"\n" -"Les nouvelles transactions répétées seront générées sur la base du nouvel " -"intervalle." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Ce compte n’a pas d’argent disponible à transférer." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Ce compte est déjà ouvert." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Cette transaction est une transaction répétée à partir de la source.\n" -"Que voulez-vous faire avec les transactions répétées ?\n" -"\n" -"En supprimant uniquement la transaction source, les transactions\n" -"individuelles générées deviendront modifiables." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Cette transaction est une transaction répétée à partir de la source.\n" -"Que voulez-vous faire avec les transactions répétées ?\n" -"\n" -"En mettant à jour uniquement la transaction source,\n" -"les transactions générées en seront dissociées." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Demain" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transaction" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transactions" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transactions sans groupe" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transférer depuis {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transférer vers {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Irénée Thirion" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Dans deux mois" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Type" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Impossible d’exporter le compte dans un fichier." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Impossible d’importer les informations depuis le fichier. Assurez vous que " -"l’application a les permissions d’accès au fichier, et réessayez." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Impossible d’importer des transactions depuis le fichier." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Impossible de charger les données de la devise. Veuillez réessayer. Si " -"l’erreur persiste, signalez le bogue." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" -"Impossible de se connecter au compte. Le mot de passe fourni n'est pas " -"valide." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Impossible d’ouvrir le compte. Assurez-vous que l’application dispose des " -"permissions d’accès au fichier, et réessayez." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Impossible de remplacer un compte existant." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Impossible de remplacer un compte ouvert." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Sans groupe" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Sans étiquette" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Transactions à venir" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Mettre à jour la source uniquement" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Mettre à jour la source et les transactions générées" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Mettre à jour la transaction" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Téléverser" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Voir" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Souhaitez-vous protéger le fichier PDF par un mot de passe ?\n" -"\n" -"En cas de perte du mot de passe le document sera inaccessible." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Oui" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Votre système indique que votre devise monétaire est" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Bonjour !" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Bonjour !" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Retour" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Type de transaction par défaut" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Seuil de rappel des transactions" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Un jour avant" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Une semaine avant" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Un mois avant" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Deux mois avant" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Gérer la devise utilisée par le compte." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Définissez un nouveau mot de passe ou supprimez-en un." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Utiliser une devise personnalisée" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Style d’affichage du montant" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Autre" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Aucun" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Chiffres des décimales" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Deux" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Trois" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Quatre" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Cinq" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Six" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Illimités" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nouveau mot de passe" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Confirmer le mot de passe" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Robustesse du mot de passe" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" -"Si le mot de passe est perdu, il n’y a aucun moyen de restaurer le fichier !" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Retirer" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Virer de l’argent" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Exporter toutes les informations" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Exporter la vue actuelle" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Rechercher par description" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Vue d’aujourd’hui" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Rappels" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Actions" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Sélectionner tous les filtres de la vue d’ensemble" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Nouveau groupe (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nouveau" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Basculer la visibilité des groupes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Sélectionner tous les filtres de groupes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Désélectionner les filtres de groupes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Basculer la visibilité des étiquettes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Sélectionner tous les filtres d’étiquettes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Désélectionner les filtres d’étiquettes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Calendrier" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Sélectionner le mois actuel" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Réinitialiser à aujourd’hui" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Aujourd’hui" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Choisir l’intervalle" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Début" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Fin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Visualiser" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Suivant" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Trier du premier au dernier" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Trier du dernier au premier" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nouvelle transaction (Ctrl+Maj+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nouveau" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Suggestions" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Convertisseur" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Échanger les devises" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Échanger" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Chargement…" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Source" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Résultat" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Copier le résultat du montant" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Tous les comptes" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Couleur" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Supprimer" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Modifier le groupe" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nouveau compte" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Utilisez cet assistant pour tirer le meilleur parti de votre compte" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Commençons" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Emplacement de stockage" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Mot de passe du compte (optionnel)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Dossier" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Remplacer les comptes existants" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Options du compte" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Il s’agit seulement d’un indicateur utile, qui n’affecte pas le " -"fonctionnement de l’application." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Devise du compte" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importer des informations existantes" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Téléverser un fichier valide à utiliser pour importer les informations " -"existantes vers le nouveau compte." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Importer un fichier" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Sélectionner un fichier" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Effacer le fichier" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Créer" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Entrez le mot de passe pour vous connecter :" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Mot de passe" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Déverrouiller" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Préférences" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interface utilisateur" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Thème" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Clair" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Sombre" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Système" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Couleurs" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Personnaliser les couleurs utilisées par Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Couleur par défaut des transactions" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Un changement de ce paramètre ne sera uniquement appliqué qu’aux " -"transactions nouvellement ajoutées." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Couleur par défaut des transferts" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Un changement de ce paramètre ne sera uniquement appliqué qu’aux nouveaux " -"transferts." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Couleur de groupe par défaut" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" -"Un changement de ce paramètre ne sera appliqué qu’aux nouveaux groupes." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Couleur du compte de chèques" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Couleur du compte d’épargne" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Couleur du compte d’affaires" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Paramètres régionaux" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Utiliser des chiffres natifs" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Indique s’il faut utiliser des chiffres natifs de votre langue à la place de " -"chiffres latins." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Insérer un séparateur décimale" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Définit pour quelles touches pressées le séparateur décimal des paramètres " -"régionaux sera inséré dans un champ de montant." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Désactivé" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Point du pavé numérique uniquement" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Point et virgule" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Sauvegarde" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Dossier de sauvegarde CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Les comptes non cryptés seront automatiquement exportés en fichiers CSV dans " -"ce dossier lors d’une modification." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Vider le dossier de sauvegarde" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Aucun rappel" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Compte" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Fermer le compte" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Transférer" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Nouveau groupe" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nouvelle transaction" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Application" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Raccourcis clavier" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Afficher / masquer la barre latérale" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Quitter" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Faire une copie" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Effacer la date de fin" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Quotidien" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Hebdomadaire" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Bi-hebdomadaire" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Mensuel" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Trimestriel" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Annuel" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Bi-annuel" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Utiliser une couleur de groupe" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Utiliser une couleur unique" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Entrez un nouveau nom d’étiquette…" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Ajouter une étiquette" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extras" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Champs supplémentaires de la transaction." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Entrez vos notes ici" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Modifier la transaction" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Un transfert d’argent créera dans ce compte une transaction dépensière avec " -"le montant transféré, et une transaction de revenu dans le compte " -"récipiendaire avec le montant transféré." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Aucun compte sélectionné" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Sélectionnez une compte destinataire" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Comptes récents" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Récents" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Conversion nécessaire" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Utiliser des taux personnalisés" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Entrer les taux de conversion manuellement" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Transférer" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Convertisseur monétaire" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "À propos de Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menu des comptes" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nouveau compte (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Nouveau" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Ouvrir un compte (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Aucun compte récent" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Basculer les graphiques" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menu principal" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Tableau de bord" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Créez ou ouvrez un compte pour commencer. Vous pouvez également faire " -"glisser un fichier dans l’application depuis votre navigateur de fichiers." - -#~ msgid "result" -#~ msgstr "résultat" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "argent;finance;portefeuille;liquide;banque;Nickvision;cash;monnaie;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Gérez plusieurs comptes à la fois, avec une interface en onglets " -#~ "intuitive" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— Filtrez facilement les transactions par type, groupe, ou date" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Répétez facilement des transactions, comme des factures mensuelles" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Transférez de l’argent d’un compte à un autre" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Exportez un compte en fichier CSV et importez un fichier CSV, OFX ou " -#~ "QIF pour importer en masse des transactions dans un compte" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "Veuillez patienter pendant l’importation des transactions…" - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Impossible d’importer les informations depuis le fichier. Type de fichier " -#~ "non pris en charge." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Personnaliser l’interface utilisateur de l’application." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "" -#~ "Personnalisez la manière dont Denaro utilise les paramètres linguistiques." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Personnaliser l’emplacement de sauvegarde pour les comptes Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Autre" - -#~ msgid "Enter symbol here" -#~ msgstr "Entrez un symbole ici" - -#~ msgid "Enter code here" -#~ msgstr "Entrez un code ici" - -#~ msgid "Save" -#~ msgstr "Enregistrer" - -#~ msgid "Hide" -#~ msgstr "Masquer" - -#~ msgid "Show" -#~ msgstr "Montrer" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Réinitialiser les filtres de dates" - -#~ msgid "Delete Group?" -#~ msgstr "Supprimer le groupe ?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Supprimer la transaction ?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Paramètres du compte" - -#~ msgid "Version: {0}" -#~ msgstr "Version : {0}" - -#~ msgid "About {0}" -#~ msgstr "À propos de {0}" - -#~ msgid "Changelog" -#~ msgstr "Journal des modifications" - -#~ msgid "Report a Bug" -#~ msgstr "Signaler une erreur" - -#~ msgid "Discussions" -#~ msgstr "Discussions" - -#~ msgid "Credits" -#~ msgstr "Crédits" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributeurs sur GitHub ❤️ https://github.com/NickvisionApps/Denaro/" -#~ "graphs/contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Traducteurs sur Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Accueil" - -#~ msgid "Settings" -#~ msgstr "Paramètres" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Virer de l’argent (Ctrl+V)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importer à partir d’un fichier (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtres" - -#~ msgid "Hide Groups" -#~ msgstr "Masquer les groupes" - -#~ msgid "Show Groups" -#~ msgstr "Afficher les groupes" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "{0} transactions importées depuis le fichier." - -#~ msgid "Enter name here" -#~ msgstr "Entrez le nom ici" - -#~ msgid "Enter description here" -#~ msgstr "Entrez une description ici" - -#~ msgid "Enter amount here" -#~ msgstr "Entrez un montant ici" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Compte d’argent (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Gérez plusieurs comptes à la fois, avec une interface à onglets " -#~ "familière\n" -#~ "— Filtrez facilement les transactions par type, groupe, ou date\n" -#~ "— Répétez facilement des transactions mensuelles récurrentes, comme les " -#~ "factures\n" -#~ "— Transférez de l’argent d’un compte à un autre\n" -#~ "— Exportez vos comptes en fichiers de format CSV et importez des fichiers " -#~ "CSV, OFX ou QIF pour ajouter des transactions en masse dans un compte" - -#~ msgid "New Window" -#~ msgstr "Nouvelle fenêtre" - -#~ msgid "Enter password here" -#~ msgstr "Entrez le mot de passe ici" - -#~ msgid "Enter decimal separator" -#~ msgstr "Entrer un séparateur de décimales" - -#~ msgid "Enter group separator" -#~ msgstr "Entrer un séparateur de groupes" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transaction ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transactions ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Aucun dossier de sauvegarde" - -#~ msgid "Accounts" -#~ msgstr "Comptes" - -#~ msgid "Reset All Filters" -#~ msgstr "Réinitialiser tous les filtres" - -#~ msgid "Sort" -#~ msgstr "Trier" - -#~ msgid "Order By" -#~ msgstr "Ordre" - -#~ msgid "Increasing" -#~ msgstr "Croissant" - -#~ msgid "Decreasing" -#~ msgstr "Décroissant" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Paramètres du compte (Ctrl+.)" - -#~ msgid "Sort By" -#~ msgstr "Trier par" diff --git a/NickvisionMoney.Shared/Resources/po/gl.po b/NickvisionMoney.Shared/Resources/po/gl.po deleted file mode 100644 index ea1d48c49..000000000 --- a/NickvisionMoney.Shared/Resources/po/gl.po +++ /dev/null @@ -1,1547 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-10-20 04:03+0000\n" -"Last-Translator: Nicolás Vieites Sueiro \n" -"Language-Team: Galician \n" -"Language: gl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.1\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copia)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} de {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} etiqueta" -msgstr[1] "{0} etiquetas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transacción" -msgstr[1] "{0} transaccións" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nome da conta" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nome da conta (existente)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nome da conta (aberta)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Axustes da conta" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipo de conta" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Engadir" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" -"Engadir unha nova transacción ou importar transaccións dende un ficheiro." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Protexer o PDF con contrasinal?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Todos os ficheiros" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Importe" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Importe (non válido)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Aplicar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Estás seguro de que queres borrar este grupo?\n" -"Esta acción é irreversible." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Estás seguro de que queres borrar esta transacción?\n" -"Esta acción é irreversible." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Empresa" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Non foi posible acceder ao cartafol seleccionado, comprobe os permisos de " -"Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Cancelar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Cambiar contrasinal" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Corrente" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Pechar" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Colaboradores no GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Moeda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Código da moeda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Código da moeda (baleiro)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Símbolo da moeda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Símbolo da moeda (baleiro)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Símbolo da moeda (non válido)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separador de decimais" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separador de decimais (baleiro)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separador de decimais (non válido)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Borrar existentes" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Borrar grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Borrar só orixinal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Borrar orixinal e xerado" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Borrar transacción" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descrición" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descrición (baleiro)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Conta de destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Conta de destino (non válida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Contrasinal da conta de destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Contrasinal da conta de destino (non válida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Contrasinal da conta de destino (requirido)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Desvincular existentes" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Erro" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Gastos" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportar a ficheiro" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Conta exportada a ficheiro satisfactoriamente." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Xerado: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repositorio de GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Boa tarde!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Bo día pola mañan!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Boa noite!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupo" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nome do grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separador de grupos" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separador de grupos (non válido)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupos" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Axuda" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importar dende conta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importar dende ficheiro" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Importada {0} transacción dende o ficheiro." -msgstr[1] "Importadas {0} transaccións dende o ficheiro." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Ingresos" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Xestione os seus cartos" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Charla en Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nome" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nome (baleiro)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nome (existente)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nunca" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Conta Denaro de Nickvision" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Non" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Sen data final" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Sen transaccións" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Non se atoparon transaccións" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Ningunha transacción coincide cos filtro especificados." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Apuntamentos" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nada que importar do ficheiro." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Dentro dun mes" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Dentro dunha semana" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" diff --git a/NickvisionMoney.Shared/Resources/po/hi.po b/NickvisionMoney.Shared/Resources/po/hi.po deleted file mode 100644 index 5b7abc3bb..000000000 --- a/NickvisionMoney.Shared/Resources/po/hi.po +++ /dev/null @@ -1,1634 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2024-03-29 13:01+0000\n" -"Last-Translator: Scrambled777 \n" -"Language-Team: Hindi \n" -"Language: hi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(प्रतिलिपि)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} से {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} टैग" -msgstr[1] "{0} टैग्स" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} लेन-देन" -msgstr[1] "{0} लेनदेन" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "खाता नाम" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "खाता नाम (मौजूद)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "खाता नाम (खुला हुआ)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "खाता सेटिंग" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "खाते का प्रकार" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "जोड़ें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "एक नया लेनदेन जोड़ें या किसी फाइल से लेनदेन आयात करें।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "PDF में पासवर्ड जोड़ें?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "सभी फाइलें" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "राशि" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "धनराशि (अवैध)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "लागू करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"क्या आप वाकई इस समूह को हटाना चाहते हैं?\n" -"यह क्रिया अपरिवर्तनीय है।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"क्या आप वाकई इस लेनदेन को हटाना चाहते हैं?\n" -"यह क्रिया अपरिवर्तनीय है।" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "व्यवसाय" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "चयनित फोल्डर तक नहीं पहुँच सकते, Flatpak अनुमतियाँ जाँचें।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "रद्द" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "पासवर्ड बदलें" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "चेकिंग" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "बंद करें" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "GitHub पर योगदानकर्ता ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "मुद्रा" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "मुद्रा कोड" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "मुद्रा कोड (खाली)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "मुद्रा चिन्ह" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "मुद्रा चिह्न (खाली)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "मुद्रा चिह्न (अमान्य)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "तारीख" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "डेविड लैपशिन" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "दशमलव विभाजक" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "दशमलव विभाजक (खाली)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "दशमलव विभाजक (अमान्य)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "मौजूदा हटाएं" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "समूह हटाएँ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "केवल स्रोत हटाएँ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "स्रोत हटाएं और जेनरेट करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "लेन-देन हटाएँ" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "विवरण" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "विवरण (खाली)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "गंतव्य खाता" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "गंतव्य खाता (अमान्य)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "गंतव्य खाता पासवर्ड" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "गंतव्य खाता पासवर्ड (अमान्य)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "गंतव्य खाता पासवर्ड (आवश्यक)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "मौजूदा को अलग करना" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "त्रुटि" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "लागत/खर्च" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "फाइल में निर्यात करें" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "सफलतापूर्वक फाइल करने के लिए निर्यात किया गया खाता।" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "फ्योडोर सोबोलेव" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "उत्पन्न: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub रेपो" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "शुभ दोपहर!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "शुभ दिन!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "शुभ संध्या!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "समूह" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "समूह नाम" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "समूह विभाजक" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "समूह विभाजक (अमान्य)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "समूह" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "सहायता" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "खाते से आयात करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "फाइल से आयात करें" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "फाइल से आयातित {0} लेनदेन।" -msgstr[1] "फाइल से आयातित {0} लेनदेन।" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "आय" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "अपने व्यक्तिगत वित्त का प्रबंधन करें" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix Chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "नाम" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "नाम (खाली)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "नाम (मौजूद)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "कभी नहीं" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "निकोलस लोगोज़ो" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro खाता" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "नहीं" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "कोई अंतिम तिथि नहीं" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "कोई लेनदेन मौजूद नहीं" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "कोई लेनदेन मौजूद नहीं" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "कोई लेनदेन दिए गए फ़िल्टर से मेल नहीं खाता।" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "नोट्स" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "फाइल से आयात करने के लिए कुछ भी नहीं।" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "अब से एक महीना" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "अब से एक सप्ताह बाद" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "खोलें" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "खाता खोलें" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "अवलोकन" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "पृष्ठ {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF पासवर्ड" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "रसीद" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "रसीद (फाइल अप्राप्य)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "रसीदें" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "समाप्ति तिथि दोहराएँ" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "अंतिम तिथि दोहराएँ (अमान्य)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "अंतराल दोहराएँ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "दोहराव अंतराल बदला गया" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "परिणाम को क्लिपबोर्ड पर कॉपी किया गया।" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "जमा पूंजी" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "खाता चुनें" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "बैकअप फोल्डर का चयन करें" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "फोल्डर का चयन करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "राशि के अनुसार क्रमबद्ध करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "दिनांक के अनुसार क्रमबद्ध करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Id के अनुसार क्रमबद्ध करें" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "टैग्स" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "खाते का पासवर्ड बदल दिया गया था।" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "अकाउंट का पासवर्ड हटा दिया गया।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "इस संवाद को बंद करने पर पासवर्ड हटा दिया जाएगा।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "पासवर्ड्स मेल नहीं खा रहे।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"दोहराव अंतराल बदल दिया गया था.\n" -"आप मौजूदा जेनरेट किए गए लेनदेन के साथ क्या करना चाहेंगे?\n" -"\n" -"नए दोहराव वाले लेनदेन नए अंतराल के आधार पर उत्पन्न होंगे।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "इस खाते में ट्रांसफ़र करने के लिए कोई धनराशि उपलब्ध नहीं है।" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "यह खाता पहले ही खोला जा चुका है।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"यह लेन-देन एक स्रोत दोहराव लेन-देन है।\n" -"आप बार-बार होने वाले लेन-देन के साथ क्या करना चाहेंगे?\n" -"\n" -"केवल स्रोत लेनदेन को हटाने से व्यक्ति को अनुमति मिलेगी\n" -"उत्पन्न लेनदेन को संशोधित किया जाना चाहिए।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"यह लेन-देन एक स्रोत दोहराव लेन-देन है।\n" -"आप बार-बार होने वाले लेन-देन के साथ क्या करना चाहेंगे?\n" -"\n" -"केवल स्रोत लेनदेन को अद्यतन करने से असंबद्ध हो जाएगा\n" -"स्रोत से उत्पन्न लेनदेन।" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "टोबियास बर्नार्ड" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "कल" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "कुल" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "लेन-देन" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "लेन-देन" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "समूह के बिना लेन-देन" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "{0} से स्थानांतरण" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "{0} पर स्थानांतरण" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Scrambled777 " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "अब से दो महीने बाद" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "प्रकार" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "खाते को फाइल में निर्यात करने में असमर्थ।" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"फाइल से जानकारी आयात करने में असमर्थ. कृपया सुनिश्चित करें कि ऐप के पास फाइल " -"तक पहुंचने की अनुमति है और पुनः प्रयास करें।" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "फाइल से लेनदेन आयात करने में असमर्थ।" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"मुद्रा डेटा लोड करने में असमर्थ. कृपया पुन: प्रयास करें। यदि त्रुटि अभी भी " -"बनी रहती है, तो बग की रिपोर्ट करें।" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "खाते में लॉग इन करने में असमर्थ. प्रदान किया गया पासवर्ड अमान्य है।" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"खाता खोलने में असमर्थ. कृपया सुनिश्चित करें कि ऐप के पास फाइल तक पहुंचने की " -"अनुमति है और पुनः प्रयास करें।" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "किसी मौजूदा खाते को अधिलेखित करने में असमर्थ।" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "खोले गए खाते को अधिलेखित करने में असमर्थ।" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "असमूहीकृत" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "अनटैग किया गया" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "आगामी लेनदेन" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "केवल स्रोत अपडेट करें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "अपडेट स्रोत और जनरेट किया गया" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "लेन-देन अपडेट करें" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "अपलोड करें" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "देखें" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"क्या आप PDF फाइल को पासवर्ड से सुरक्षित करना चाहेंगे?\n" -"\n" -"यदि पासवर्ड खो गया है, तो PDF अप्राप्य हो जाएगा।" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "हाँ" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "आपके सिस्टम ने बताया कि आपकी मुद्रा है" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "शुभ प्रभात!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "शुभ प्रभात!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "पीछे" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "डिफ़ॉल्ट लेनदेन प्रकार" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "लेन-देन अनुस्मारक सीमा" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "एक दिन पहले" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "एक सप्ताह पहले" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "एक महीना पहले" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "दो महीने पहले" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "खाते द्वारा उपयोग की जाने वाली मुद्रा का प्रबंधन करें।" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "नया पासवर्ड सेट करें या एक हटा दें।" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "कस्टम मुद्रा का प्रयोग करें" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "राशि प्रदर्शन शैली" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "अन्य" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "कोई नहीं" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "दशमलव अंक" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "दो" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "तीन" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "चार" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "पाँच" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "छह" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "असीमित" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "नया पासवर्ड" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "पासवर्ड की पुष्टि कीजिये" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "पासवर्ड की मजबूती" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" -"यदि पासवर्ड खो गया है, तो फाइल को पुनर्स्थापित करने का कोई तरीका नहीं है!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "हटाएँ" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "धनराशि ट्रांसफ़र करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "सभी जानकारी निर्यात करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "वर्तमान दृश्य निर्यात करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "विवरण के आधार पर खोजें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "आज का अवलोकन" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "अनुस्मारक" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "कार्रवाई" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "सभी अवलोकन फ़िल्टर चुनें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "नया समूह (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "नया" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "समूह दृश्यता टॉगल करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "सभी समूह फ़िल्टर चुनें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "समूह फ़िल्टर अचयनित करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "टैग दृश्यता टॉगल करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "सभी टैग फ़िल्टर चुनें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "टैग फ़िल्टर अचयनित करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "कैलेंडर" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "चालू माह का चयन करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "आज पर रीसेट करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "आज" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "दायरे का चयन करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "प्रारंभ" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "समाप्त" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "कल्पना" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "अगला" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "प्रथम से अंतिम तक क्रमबद्ध करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "अंतिम से प्रथम तक क्रमबद्ध करें" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "नया लेनदेन (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "नया" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "सुझाव" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "परिवर्तक" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "मुद्राएँ बदलें" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "स्विच" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "लोड हो रहा है…" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "स्रोत" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "परिणाम" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "परिणाम राशि कॉपी करें" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "सभी खाते" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "रंग" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "हटाएँ" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "समूह में परिवर्तन करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "नया खाता" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "अपने खाते से अधिकतम लाभ प्राप्त करने के लिए इस विज़ार्ड का उपयोग करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "आइए शुरू करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "स्टोरेज स्थान" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "खाता पासवर्ड (वैकल्पिक)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "फोल्डर" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "मौजूदा खातों को अधिलेखित करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "खाता विकल्प" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"यह केवल एक उपयोगी लेबल है जो ऐप के काम करने के तरीके को प्रभावित नहीं करता " -"है।" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "खाते का पैसा" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "मौजूदा जानकारी आयात करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"मौजूदा जानकारी को नए खाते में आयात करने के लिए उपयोग करने के लिए एक वैध फाइल " -"अपलोड करें।" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "फाइल आयात करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "फाइल का चयन करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "फाइल साफ़ करें" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "बनाएं" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "लॉगिन करने के लिए पासवर्ड दर्ज करें:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "पासवर्ड" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "अनलॉक" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "प्राथमिकताएं" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "उपयोगकर्ता इंटरफ़ेस" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "थीम" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "हल्का" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "गहरा" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "सिस्टम" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "रंग" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Denaro द्वारा उपयोग किए गए रंगों को अनुकूलित करें।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "लेन-देन डिफ़ॉल्ट रंग" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "इस सेटिंग में बदलाव केवल नए जोड़े गए लेनदेन पर लागू किया जाएगा।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "डिफ़ॉल्ट रंग स्थानांतरित करें" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "इस सेटिंग में बदलाव केवल नए स्थानांतरणों पर लागू किया जाएगा।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "समूह डिफ़ॉल्ट रंग" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "इस सेटिंग में बदलाव केवल नए समूहों पर लागू किया जाएगा।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "खाते का रंग जांचा जा रहा है" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "बचत खाते का रंग" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "बिजनेस अकाउंट का रंग" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "स्थानीय" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "मूल अंकों का प्रयोग करें" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"क्या लैटिन अंकों के बजाय उन अंकों का उपयोग करना है जो आपके स्थान के लिए मूल " -"हैं।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "दशमलव विभाजक डालें" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"सेट करें कि कौन सी कुंजी दबाने पर स्थान का दशमलव विभाजक राशि फ़ील्ड में डाला " -"जाएगा।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "बंद" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "केवल नमपाद अवधि" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "अवधि और अल्पविराम" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "बैकअप" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "CSV बैकअप फोल्डर" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"परिवर्तन किए जाने पर अनएन्क्रिप्टेड खाते स्वचालित रूप से इस फोल्डर में CSV " -"फाइलों के रूप में निर्यात हो जाएंगे।" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "बैकअप फोल्डर साफ़ करें" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "कोई अनुस्मारक नहीं" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "खाता" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "खाता बंद करें" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "स्थानांतरण" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "नया समूह" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "नई लेनदेन" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "एप्लिकेशन" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "कीबोर्ड शॉर्टकट" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "बाजू पट्टी को बंद करें/खोलें" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "छोड़ें" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "एक प्रति बनाएँ" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "अंतिम तिथि साफ़ करें" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "दैनिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "साप्ताहिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "द्विसाप्ताहिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "मासिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "त्रैमासिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "वार्षिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "द्विवार्षिक" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "समूह रंग का प्रयोग करें" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "अनोखे रंग का प्रयोग करें" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "नया टैग नाम दर्ज करें…" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "टैग जोड़ें" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "अतिरिक्त" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "लेन-देन के अतिरिक्त फ़ील्ड प्रबंधित करें।" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "यहां नोट्स दर्ज करें" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "लेनदेन में परिवर्तन करें" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"धनराशि ट्रांसफ़र करने से इस खाते में बताई गई राशि का खर्च लेनदेन दिखाया जाएगा और जिस " -"खाते में ट्रांसफ़र करने के लिए कहा गया है उस में दी गई राशि का एक आय लेनदेन दिखाया जाएगा।" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "कोई खाता नहीं चुना गया है" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "एक गंतव्य खाता चुनें" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "हाल ही में उपयोग किए गए खाते" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "हाल ही के" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "रूपांतरण की आवश्यकता" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "कस्टम दरों का प्रयोग करें" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "रूपांतरण दरें मैन्युअल रूप से दर्ज करें" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "स्थानांतरण" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "मुद्रा परिवर्तक" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Denaro के बारे में" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "खाता मेन्यू" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "नया खाता (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "नया" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "खाता खोलें (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "कोई हालिया खाता नहीं" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "ग्राफ़ टॉगल करें" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "मुख्य मेन्यू" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "डैशबोर्ड" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"आरंभ करने के लिए एक खाता बनाएं या खोलें। आप अपने फाइल ब्राउज़र से किसी फाइल " -"को ऐप में खींच भी सकते हैं।" - -#, fuzzy -#~ msgid "result" -#~ msgstr "Result" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "money;finance;wallet;cash;bank;GTK;Nickvision;" - -#~ msgid "OK" -#~ msgstr "ठीक (OK)" - -#~ msgid "Customize the application's user interface." -#~ msgstr "एप्लिकेशन के इंटरफ़ेस को अनुकूलित करें।" - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Customize how Denaro uses locale settings." - -#, fuzzy -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "एप्लिकेशन के इंटरफ़ेस को अनुकूलित करें।" - -#~ msgid "Enter symbol here" -#~ msgstr "Enter symbol here" - -#~ msgid "Enter code here" -#~ msgstr "Enter code here" - -#~ msgid "Show" -#~ msgstr "Show" - -#~ msgid "Reset Dates Filters" -#~ msgstr "तिथि फ़िल्टर रीसेट करें" - -#~ msgid "Delete Group?" -#~ msgstr "समूह हटाएँ?" - -#~ msgid "Delete Transaction?" -#~ msgstr "लेनदेन हटाएँ?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Account Settings" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "मनी खाता (*.nmoney)" - -#~ msgid "Enter password here" -#~ msgstr "Enter password here" - -#~ msgid "New Window" -#~ msgstr "New Window" diff --git a/NickvisionMoney.Shared/Resources/po/hr.po b/NickvisionMoney.Shared/Resources/po/hr.po deleted file mode 100644 index f4d2970be..000000000 --- a/NickvisionMoney.Shared/Resources/po/hr.po +++ /dev/null @@ -1,1790 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-09-26 13:22+0000\n" -"Last-Translator: Milo Ivir \n" -"Language-Team: Croatian \n" -"Language: hr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.1-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(kopija)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} od {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} oznaka" -msgstr[1] "{0} oznake" -msgstr[2] "{0} oznaka" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transakcija" -msgstr[1] "{0} transakcije" -msgstr[2] "{0} transakcija" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Ime računa" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Ime računa (postoji)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Ime računa (otvoren)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Postavke računa" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Vrsta računa" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Add" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Dodaj novu transakciju ili uvezi transakciju iz datoteke." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "PDF-u dodati lozinku?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Sve datoteke" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Iznos" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Iznos (neispravno)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Primijeni" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Stvarno želiš izbrisati ovu grupu?\n" -"Ovo je nepovratna radnja." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Stvarno želiš izbrisati ovu transakciju?\n" -"Ovo je nepovratna radnja." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Poslovni" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Nije moguće pristupiti odabranoj mapi, provjeri dozvole za Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Odustani" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Promijeni lozinku" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Žiro račun" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Zatvori" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Doprinositelji na GitHub-u ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Valuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Kôd valute" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Kôd valute (prazno)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Znak valute" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Znak valute (prazno)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Znak valute (neispravno)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Datum" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Decimalni znak" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Decimalni znak (prazno)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Decimalni znak (neispravno)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Izbriši potojeće" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Izbriši grupu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Izbriši samo izvor" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Izbriši izvor i generirane" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Izbriši transakciju" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Opis" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Opis (prazan)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Odredišni račun" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Odredišni račun (neispravno)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Lozinka za odredišni račun" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Lozinka za odredišni račun (neispravno)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Lozinka za odredišni račun (obavezno)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Odspoji postojeće" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Greška" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Rashod" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Izvezi u datoteku" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Račun je uspješno izvezen u datoteku." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Stvoreno: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub repozitorij" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Dobar dan!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Dobar dan!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Dobra večer!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupa" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Ime grupe" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Znak za odvajanja grupa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Znak za odvajanja grupa (neispravno)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupe" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Pomoć" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Uvezi iz računa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Uvezi iz datoteke" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Uvezena je {0} transakcija iz datoteke." -msgstr[1] "Uvezene su {0} transakcije iz datoteke." -msgstr[2] "Uvezeno je {0} transakcija iz datoteke." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Prihod" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Upravljaj osobnim financijama" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Chat na Matrixu" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "--" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Ime" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Ime (prazno)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Ime (postoji)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nikada" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro račun" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Ne" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Bez krajnjeg datuma" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Nema transakcija" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nije pronađena nijedna transakcija" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Nijedna transakcija ne odgovora zadanim filtrima." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Bilješke" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nema ničega što bi se moglo uvesti iz datoteke." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Za mjesec dana" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Za tjedan dana" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Otvori" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Otvori račun" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Pregled" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "{0}. stranica" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF lozinka" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Priznanica" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Priznanica (datoteka nedostupna)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Priznanice" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Krajnji datum ponavljanja" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Krajnji datum ponavljanja (neispravno)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Interval ponavljanja" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Interval ponavljanja promijenjen" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Rezultat je kopiran u međuspremnik." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Štedni račun" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Odaberi račun" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Odaberi mapu sigurnosne kopije" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Odaberi mapu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Razvrstaj po iznosu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Razvrstaj po datumu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Razvrstaj po ID-u" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Oznake" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Lozinka računa je promijenjena." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Lozinka računa je uklonjena." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Lozinka će se ukloniti nakon zatvaranja dijaloga." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Lozinke se ne poklapaju." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Interval ponavljanje je promijenjen.\n" -"Što želiš učiniti s postojećim generiranim transakcijama?\n" -"\n" -"Nove ponovljajuće transakcije generirat će se na temelju novog intervala." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Na ovom računu nema novca za transferiranje." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Ovaj je račun već otvoren." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Ova transakcija je izvorna ponavljajuća transakcija.\n" -"Što želiš učiniti s ponovljajućim transakcijama?\n" -"\n" -"Brisanje samo izvorne transakcije omogućit će mijenjanje\n" -"pojedinačno generiranih transakcija." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Ova transakcija je izvorna ponavljajuća transakcija.\n" -"Što želiš učiniti s ponovljajućim transakcijama?\n" -"\n" -"Aktualiziranje samo izvorne transakcije će odspojiti\n" -"iz izvora generirane transakcije." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Sutra" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Ukupno" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transakcija" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transakcije" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transakcije bez grupe" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transferiraj sa {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transferiraj na {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Milo Ivir " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Za dva mjeseca" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Vrsta" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Nije moguće izvesti račun u datoteku." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Nije moguće uvesti podatke iz datoteke. Provjeri ima li aplikacija dozvole " -"za pristup datoteci i pokušaj ponono." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Nije moguće uvesti transakcije iz datoteke." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Nije moguće učitati podatke o valuti. Pokušaj ponovo. Ako to ne pomogne " -"prijavi grešku." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Prijava na račun nije moguća. Navedena lozinka je neispravna." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Nije moguće otvoriti račun. Provjeri ima li aplikacija dozvole za pristup " -"datoteci i pokušaj ponono." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Nije moguće prepisati postojeći račun." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Nije moguće prepisati otvoreni račun." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Negrupirano" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Neoznačeno" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Nadolazeće transakcije" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Aktualiziraj samo izvornu transakciju" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Aktualiziraj izvor i generirane" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Aktualiziraj transakciju" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Prenesi" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Prikaz" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Želiš li PDF datoteku zaštititi lozinkom?\n" -"\n" -"Ako se lozinka izgubi, PDF neće biti dostupan." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Da" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Tvoj sustav je prijavio da je tvoja valuta" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Dobro jutro!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Dobro jutro!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Natrag" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Standardna vrsta transakcije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Prag podsjetnika za transakcije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Jedan dan prije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Jedan tjedan prije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Jedan mjesec prije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Dva mjeseca prije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Upravljaj valutom računa." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Postavi novu ili ukloni jednu lozinku." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Koristi prilagođenu valutu" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Stil prikaza iznosa" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Drugi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Nijedan" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Broj decimala" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Dvije" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Tri" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Četiri" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Pet" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Šest" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Neograničeno" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nova lozinka" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Potvrdi lozinku" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Kvaliteta lozinke" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Ako izgubiš lozinku, datoteka se ne može obnoviti!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Ukloni" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Transferiraj novac" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Izvezi sve informacije" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Izvezi trenutačni prikaz" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Pretraži po opisu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Pregled za danas" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Podsjetnici" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Radnje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Odaberi sve filtre pregleda" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Nova grupa (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nova" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Uključi/isključi vidljivost grupa" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Odaberi sve filtre grupa" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Odznači sve filtre grupa" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Uključi/isključi vidljivost oznaka" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Odabri sve filtre oznaka" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Odznači filtre grupa" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalendar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Odaberi trenutačni mjesec" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Obnovi na danas" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Danas" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Odaberi raspon" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Početak" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Kraj" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Vizualiziraj" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Dalje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Razvrstaj od prve prema zadnjoj" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Razvrstaj od zadnje prema prvoj" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nova transakcija (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nova" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Prijedlozi" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Konverter" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Zamijeni valutu" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Zamijeni" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Učitavanje …" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Izvor" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Rezultat" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Kopiraj iznos rezultata" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Svi računi" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Boja" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Izbriši" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Uredi grupu" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Novi račun" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Koristi ovog čarobnjaka za maksimalno iskorištavanje tvog računa" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Započnimo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Mjesto spremišta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Lozinka za račun (opcionalno)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Mapa" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Prepiši postojeće račune" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Opcije računa" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "Ovo je samo korisna oznaka koja ne utječe na rad programa." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Valuta računa" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Uvazi postojeće informacije" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "Prenesi ispravnu datoteku za uvoz postojećih informacija u novi račun." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Uvezi datoteku" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Odaberi datoteku" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Izbriši datoteku" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Stvori" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Za prijavu upiši lozinku:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Lozinka" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Otključaj" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Osobitosti" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Korisničko sučelje" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Svijetla" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Tamna" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Sustav" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Boje" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Prilagodi boje za Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Standardna boja transakcija" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Promjena ove postavke primijenit će se samo na novo dodane transakcije." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Standardna boja transfera" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Promjena ove postavke primijenit će se samo na nove transfere." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Standardna boja grupa" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Promjena u ovoj postavki će se primijeniti samo na nove grupe." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Boja žiro računa" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Boja štednog računa" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Boja poslovnog računa" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Jezično područje" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Koristi brojke jezika" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "Da li umjesto arapskih brojki koristiti brojke tvog jezičnog područja." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Umetni decimalni znak" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Isključeno" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Samo točka numeričke tipkovnice" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Točka i zarez" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Sigurnosna kopija" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Mapa sigurnosnih kopija u CSV formatu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Nešifrirani računi će se automatski izvesti kao CSV datoteke u ovu mapu kada " -"se napravi promjena." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Izbriši mapu sigurnosne kopije" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Bez podsjetnika" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Račun" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Zatvori račun" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Transfer" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Nova grupa" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nova transakcija" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Program" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Tipkovni prečaci" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Uključi/Isključi bočnu traku" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Zatvori program" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Izradi kopiju" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Izbriši krajnji datum" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Dnevno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Tjedno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Dvotjedno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Mjesečno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Kvartalno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Godišnje" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Dvogodišnje" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Koristi boju grupe" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Koristi jedinstvenu boju" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Dodaj novo ime oznake …" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Dodaj oznaku" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Dodatno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Upravljaj dodatnim poljima transakcije." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Upiši bilješke ovdje" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Uredi transakciju" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Transferiranje novca stvorit će transakciju rashoda sa zadanim iznosom u " -"ovom računu i transakciju prihoda sa zadanim iznosom u računu na koji se " -"prenosi." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Nijedan račun nije odabran" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Odaberi odredišni račun" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Nedavno korišteni računi" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Nedavno korišteni" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Potrebna je konverzija" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Koristi prilagođene tečajeve" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Upiši tečajeve ručno" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Transferiraj" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Konverter valuta" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Denaro informacije" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Izbornik računa" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Novi račun (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Novi" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Otvori račun (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Nema nedavno korištenih računa" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Uključi/Isključi dijagrame" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Glavni izbornik" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Pregledna ploča" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Započni stvaranjem ili otvarenjem računa. Također možeš povući datoteku u " -"program iz preglednika datoteka." - -#~ msgid "result" -#~ msgstr "rezultat" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "novac;financije;novčanik;gotovina;banka;GTK;Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "– Upravljaj računima istovremeno, s poznatim sučeljem kartica" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "– Filtriraj transakcije prema vrsti, grupi ili datumu" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "– Ponavljaj transakcije kao što su računi koji se mjesečno plaćaju" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "– Transferiraj novac s jednog računa na drugi" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "– Izvezi račun kao CSV datoteku i uvezi CSV, OFX ili QIF datoteku za " -#~ "skupno dodavanje transakcija računu" - -#~ msgid "OK" -#~ msgstr "U redu" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Prilagodi korisničko sučelje programa." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Prilagodi postavke jezičnog područja za Denaro." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Prilagodi lokacije sigurnosne kopije za Denaro račune." - -#, fuzzy -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Drugi" - -#~ msgid "Enter symbol here" -#~ msgstr "Ovdje upiši znak" - -#~ msgid "Enter code here" -#~ msgstr "Ovdje upiši kôd" - -#~ msgid "Save" -#~ msgstr "Spremi" - -#~ msgid "Hide" -#~ msgstr "Sakrij" - -#~ msgid "Show" -#~ msgstr "Prikaži" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Resetiraj filtre datuma" - -#~ msgid "Delete Group?" -#~ msgstr "Izbrisati grupu?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Izbrisati transakciju?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Postavke računa" - -#~ msgid "Version: {0}" -#~ msgstr "Verzija: {0}" - -#~ msgid "About {0}" -#~ msgstr "{0} informacije" - -#~ msgid "Changelog" -#~ msgstr "Dnevnik promjena" - -#~ msgid "Report a Bug" -#~ msgstr "Prijavi grešku" - -#~ msgid "Discussions" -#~ msgstr "Rasprave" - -#~ msgid "Credits" -#~ msgstr "Zasluge" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Doprinositelji na GitHubu ❤️ https://github.com/NickvisionApps/Denaro/" -#~ "graphs/contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Prevodioci na Weblateu ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Početna stranica" - -#~ msgid "Settings" -#~ msgstr "Postavke" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Transferiraj novac (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Uvezi iz datoteke (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtri" - -#~ msgid "Hide Groups" -#~ msgstr "Sakrij grupe" - -#~ msgid "Show Groups" -#~ msgstr "Prikaži grupe" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Uvezene su {0} transakcije iz datoteke." - -#~ msgid "Enter name here" -#~ msgstr "Ovdje upiši ime" - -#~ msgid "Enter description here" -#~ msgstr "Ovdje upiši opis" - -#~ msgid "Enter amount here" -#~ msgstr "Ovdje upiši iznos" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Money račun (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Upravljaj osobnim financijama" - -#~ msgid "New Window" -#~ msgstr "Novi prozor" - -#~ msgid "Enter password here" -#~ msgstr "Ovdje upiši lozinku" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transakcija ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transakcije ({0})" - -#~ msgid "Enter decimal separator" -#~ msgstr "Upiši decimalni znak" - -#~ msgid "Enter group separator" -#~ msgstr "Upiši znak odvajanja grupe" - -#~ msgid "No Backup Folder" -#~ msgstr "Nema mape sigurnosne kopije" - -#~ msgid "Accounts" -#~ msgstr "Računi" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Postavke računa (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Razvrstaj" - -#~ msgid "Order By" -#~ msgstr "Redoslijed" - -#~ msgid "Increasing" -#~ msgstr "Uzlazno" - -#~ msgid "Sort By" -#~ msgstr "Razvrstaj po" - -#~ msgid "Reset All Filters" -#~ msgstr "Resetiraj sve filtre" - -#~ msgid "Decreasing" -#~ msgstr "Silazno" diff --git a/NickvisionMoney.Shared/Resources/po/id.po b/NickvisionMoney.Shared/Resources/po/id.po deleted file mode 100644 index 32b2892e4..000000000 --- a/NickvisionMoney.Shared/Resources/po/id.po +++ /dev/null @@ -1,1828 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-06-07 19:40+0000\n" -"Last-Translator: Krindog7337 \n" -"Language-Team: Indonesian \n" -"Language: id\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.18-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Salin)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} dari {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transaksi" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nama Rekening" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -#, fuzzy -msgid "Account Name (Exists)" -msgstr "Nama (Telah digunakan)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -#, fuzzy -msgid "Account Name (Opened)" -msgstr "Tidak Ada Rekening yang Terbuka" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Pengaturan Rekening" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipe Rekening" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Add" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Tambahkan transaksi baru atau impor transaksi dari berkas." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Tambahkan kata sandi ke PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Semua Berkas" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Jumlah" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Jumlah (Tidak Sah)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Terapkan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Apakah anda yakin ingin menghapus grup ini?\n" -"Tindakan ini tidak dapat diurungkan." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Apakah anda yakin ingin menghapus transaksi ini?\n" -"Tindakan ini tidak dapat diurungkan." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Bisnis" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Tidak dapat mengakses folder yang dipilih, periksa perizinan Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Batal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Ubah Kata Sandi" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Giro" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Tutup" - -#: ../../../Controllers/MainWindowController.cs:97 -#, fuzzy -msgid "Contributors on GitHub ❤️" -msgstr "" -"Nicholas Logozzo {0}\n" -"Kontributor di GitHub ❤️ {1}" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Mata Uang" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Kode Mata Uang" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Kode mata uang (kosong)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Simbol Mata Uang" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Simbol Mata Uang (kosong)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Simbol Mata Uang (Tidak sah)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Tanggal" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Pemisah desimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "pemisah Desimal (kosong)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Pemisah Desimal (Tidak sah)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Hapus yang Ada" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Hapus Grup" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Hapus Hanya Sumber" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Hapus Sumber dan yang Dihasilkan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Hapus Transaksi" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Deskripsi" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Deskripsi (Kosong)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Rekening Tujuan" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Rekening Tujuan (Tidak Sah)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Kata Sandi Rekening Tujuan" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Kata Sandi Rekening Tujuan (Tidak Valid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Kata Sandi Rekening Tujuan (Diperlukan)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Pisahkan yang Ada" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Pengeluaran" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Ekspor ke Berkas\t" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Ekspor rekening ke berkas berhasil." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Dihasilkan: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repo Github" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Selamat Siang!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Halo!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Selamat Malam!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grup" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nama Grup" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Pemisah Grup" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Pemisah Grup (tidak sah)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grup" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Bantuan" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -#, fuzzy -msgid "Import from Account" -msgstr "Impor dari Berkas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Impor dari Berkas" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Mengimpor {0} transaksi dari berkas." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Pemasukan" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Kelola keuangan pribadi anda" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Obrolan Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nama" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nama (Kosong)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nama (Telah digunakan)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Tidak Pernah" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Rekening Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Tidak" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Tidak Ada Tanggal Akhir" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Tidak Ada Transaksi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Tidak Ada Transaksi yang Ditemukan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Tidak ada transaksi yang sesuai dengan filter." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Catatan" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Buka" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Buka Rekening" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Gambaran" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Halaman" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Kata Sandi PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Kuitansi" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Kwitansi (Berkas tidak dapat diakses)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Kuitansi" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Batas Akhir Pengulangan" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Batas Akhir Pengulangan (Tidak Sah)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Interval Pengulangan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Interval Pengulangan diubah" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Tabungan" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Pilih Rekening" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Pilih Folder Cadangan" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Pilih Folder" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Urutkan Berdasarkan Jumlah" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Urutkan Berdasarkan Tanggal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Urutkan Berdasarkan Id" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Kata sandi pada rekening ini telah diubah." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Kata sandi pada rekening ini telah dihapus." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Kata sandi akan dihapus setelah menutup dialog ini." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Kata sandi tidak cocok." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Interval pengulangan telah diubah.\n" -"Apa yang anda ingin lakukan untuk transaksi yang telah dihasilkan?\n" -"\n" -"Transaksi berulang yang baru akan dihasilkan berdasarkan interval " -"pengulangan yang baru." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Rekening ini tidak mempunyai uang untuk ditransfer." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Rekening ini sudah dibuka." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#, fuzzy -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Transaksi ini adalah sumber transaksi berulang.\n" -"Apa yang anda ingin lakukan untuk transaksi berulang?\n" -"\n" -"Hanya menghapus transaksi sumber akan membuat transaksi yang telah " -"dihasilkan untuk dimodifikasi." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Transaksi ini adalah sumber transaksi berulang.\n" -"Apa yang anda ingin lakukan untuk transaksi berulang?\n" -"\n" -"Hanya memperbarui transaksi sumber akan memisahkan \n" -"transaksi yang telah dihasilkan dari sumber." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transaksi" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transaksi" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transaksi Tanpa Grup" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transfer dari {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transfer ke {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tipe" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Tidak dapat mengekspor rekening ke berkas." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Tidak dapat mengimpor informasi dari berkas. Pastikan aplikasi memiliki izin " -"untuk mengakses file dan coba lagi." - -#: ../../../Controllers/AccountViewController.cs:973 -#, fuzzy -msgid "Unable to import transactions from the file." -msgstr "Tambahkan transaksi baru atau impor transaksi dari berkas." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Tidak dapat masuk ke rekening. Sandi yang diberikan tidak valid." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Tidak dapat membuka rekening. Pastikan aplikasi memiliki izin untuk " -"mengakses file dan coba lagi." - -#: ../../../Controllers/MainWindowController.cs:280 -#, fuzzy -msgid "Unable to overwrite an existing account." -msgstr "Tidak dapat mengesampingkan rekening yang terbuka." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Tidak dapat mengesampingkan rekening yang terbuka." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Tidak digrup" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -#, fuzzy -msgid "Upcoming transactions" -msgstr "Tidak Ada Transaksi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Perbarui Hanya Sumber" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Perbarui Sumber dan yang Dihasilkan" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Perbarui Transaksi" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Unggah" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Lihat" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Apakah Anda ingin melindungi file PDF dengan kata sandi?\n" -"\n" -"Jika kata sandi hilang, file PDF tidak akan bisa diakses." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Ya" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Sistem anda melaporkan bahwa mata uang anda adalah" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Selamat Pagi!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Selamat Pagi!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Kembali" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tipe Transaksi Bawaan" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Atur mata uang yang digunakan rekening." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Buat kata sandi baru atau hapus." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Gunakan Mata Uang Kustom" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "Other" -msgstr "Lainnya" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "None" -msgstr "Tidak ada" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Digit desimal" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Tak terbatas" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Kata Sandi Baru" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Konfirmasi Kata Sandi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -#, fuzzy -msgid "Password Strength" -msgstr "Kata Sandi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Jika kata sandi hilang, tidak ada cara untuk mengembalikan berkas ini!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Hapus" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Transfer Uang" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Ekspor Semua Informasi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Ekspor Tampilan Saat Ini" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Cari berdasarkan Deskripsi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Gambaran Hari Ini" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Aksi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -#, fuzzy -msgid "Select All Overview Filters" -msgstr "Atur Ulang Filter Gambaran" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Grup Baru (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Baru" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Jungkitkan Tampilnya Grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -#, fuzzy -msgid "Select All Groups Filters" -msgstr "Atur Ulang Filter Grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -#, fuzzy -msgid "Unselect Groups Filters" -msgstr "Atur Ulang Filter Grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "Jungkitkan Tampilnya Grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -#, fuzzy -msgid "Select All Tags Filters" -msgstr "Atur Ulang Filter Grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -#, fuzzy -msgid "Unselect Tags Filters" -msgstr "Atur Ulang Filter Grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalender" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Pilih Rentang" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Mulai" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Akhir" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Selanjutnya" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Urutkan dari awal ke akhir" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Urutkan dari akhir ke awal" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Transaksi Baru (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Baru" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Saran" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Hasil" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "Tidak Ada Rekening Baru-baru Ini" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Semua Rekening" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Warna" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Hapus" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Edit Grup" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Rekening Baru" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Gunakan wizard ini untuk mendapatkan hasil maksimal dari rekening Anda" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Ayo Mulai" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Lokasi Penyimpanan" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Kata Sandi Rekening (Opsional)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Folder" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -#, fuzzy -msgid "Overwrite Existing Accounts" -msgstr "Rekening Tujuan" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Opsi Rekening" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Ini hanyalah label yang tidak akan memengaruhi bagaimana aplikasi ini " -"bekerja." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Mata Uang Rekening" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -#, fuzzy -msgid "Import Existing Information" -msgstr "Ekspor Semua Informasi" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -#, fuzzy -msgid "Import File" -msgstr "Impor dari Berkas" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -#, fuzzy -msgid "Select File" -msgstr "Pilih Folder" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -#, fuzzy -msgid "Clear File" -msgstr "Bersihkan Folder Cadangan" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Buat" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Masukkan Kata Sandi untuk Masuk:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Kata Sandi" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Unlock" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Preferensi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Tampilan Pengguna" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Terang" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Gelap" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Sistem" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Warna" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Kustomisasi warna yang digunakan Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Warna Bawaan Transaksi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Perubahan pada pengaturan ini hanya akan diterapkan pada transaksi baru." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Warna Bawaan Transfer" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Perubahan pada pengaturan ini hanya akan diterapkan pada transfer baru." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Warna Bawaan Grup" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Perubahan dalam setelan ini hanya akan diterapkan ke grup baru." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Warna Rekening Giro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Warna Rekening Tabungan" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Warna Rekening Bisnis" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Lokal" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Gunakan Digit Bawaan" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Masukkan Pemisah Desimal" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Atur tombol mana yang akan ditekan oleh pemisah desimal lokal yang akan " -"dimasukkan ke dalam kolom jumlah." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Mati" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Titik numpad saja" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Titik dan Koma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Cadangan" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Cadangan folder CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Rekening tidak terenkripsi akan secara otomatis mengekspor sebagai file CSV " -"ke folder ini jika ada perubahan." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Bersihkan Folder Cadangan" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Rekening" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Tutup Rekening" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Transfer" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Grup Baru" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Transaksi Baru" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplikasi" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Pintasan Papan Tik" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Jungkitkan Bilah Samping" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Keluar" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Buat Salinan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Hapus Batas Akhir" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Harian" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Mingguan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Dua Mingguan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Bulanan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Triwulanan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Tahunan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Dua Tahunan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Gunakan warna grup" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Gunakan warna unik" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Tambahan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Kelola menu tambahan transaksi." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Masukkan catatan disini" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Edit Transaksi" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Mentransfer uang akan membuat transaksi pengeluaran dengan jumlah yang " -"diberikan di rekening ini dan transaksi pemasukan dengan jumlah yang " -"diberikan di rekening tujuan." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Tidak Ada Rekening yang Dipilih" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Pilih rekening tujuan" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Rekening Baru-baru Ini" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Baru-baru Ini" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Konversi diperlukan" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "Gunakan Mata Uang Kustom" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "Masukkan konversi disini" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Transfer" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Kode Mata Uang" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Tentang Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menu Rekening" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Rekening Baru (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Baru" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Buka Rekening (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Tidak Ada Rekening Baru-baru Ini" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menu Utama" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Dasbor" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Buat atau buka rekening untuk memulai. Anda juga bisa menyeret berkas ke " -"aplikasi dari penjelajah file." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Hasil" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "money;finance;wallet;cash;bank;GTK;Nickvision;uang;finansial;dompet;tunai;" -#~ "bank;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Kelola beberapa rekening bersamaan, dengan antarmuka tab yang familiar" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "" -#~ "— Filter transaksi berdasarkan tipe, grup, atau tanggal dengan mudah" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Lakukan transaksi berulang dengan mudah, seperti tagihan yang terjadi " -#~ "setiap bulan" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Transfer uang dari rekening ke rekening lain" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Ekspor rekening sebagai berkas CSV dan impor berkas CSV, OFX, atau QIF " -#~ "untuk menambahkan transaksi secara massal ke akun" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Tidak dapat mengimpor informasi dari berkas. Tipe berkas tidak didukung." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Kustomisasi tampilan pengguna pada aplikasi." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Kustomisasi bagaimana Denaro menggunakan pengaturan lokal." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Sesuaikan lokasi cadangan untuk rekening Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Lainnya" - -#~ msgid "Enter symbol here" -#~ msgstr "Masukkan simbol disini" - -#~ msgid "Enter code here" -#~ msgstr "Masukkan kode disini" - -#~ msgid "Save" -#~ msgstr "Simpan" - -#~ msgid "Hide" -#~ msgstr "Sembunyikan" - -#~ msgid "Show" -#~ msgstr "Tunjukkan" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Atur Ulang Filter Tanggal" - -#~ msgid "Delete Group?" -#~ msgstr "Hapus Grup?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Hapus Transaksi?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Pengaturan Rekening" - -#~ msgid "Version: {0}" -#~ msgstr "Versi: {0}" - -#~ msgid "About {0}" -#~ msgstr "Tentang {0}" - -#~ msgid "Changelog" -#~ msgstr "Perubahan" - -#~ msgid "Report a Bug" -#~ msgstr "Laporkan Masalah" - -#~ msgid "Discussions" -#~ msgstr "Diskusi" - -#~ msgid "Credits" -#~ msgstr "Kredit" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Kontributor di GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Penerjemah di Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Beranda" - -#~ msgid "Settings" -#~ msgstr "Pengaturan" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Transfer Uang (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Impor dari Berkas (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filter" - -#~ msgid "Hide Groups" -#~ msgstr "Sembunyikan Grup" - -#~ msgid "Show Groups" -#~ msgstr "Tampilkan Grup" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Mengimpor {0} transactions from file." - -#~ msgid "Enter description here" -#~ msgstr "Masukkan deskripsi disini" - -#~ msgid "Enter amount here" -#~ msgstr "Masukan jumlah disini" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Rekening Money (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Kelola keuangan pribadi anda" - -#~ msgid "New Window" -#~ msgstr "Jendela Baru" - -#~ msgid "Enter password here" -#~ msgstr "Masukkan kata sandi disini" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transaksi ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transaksi ({0})" - -#~ msgid "Enter decimal separator" -#~ msgstr "Masukka pemisah desimal" - -#~ msgid "Enter group separator" -#~ msgstr "Masukkan lemisah grup" - -#~ msgid "No Backup Folder" -#~ msgstr "Tidak Ada Folder Cadangan" - -#~ msgid "Reset All Filters" -#~ msgstr "Atur Ulang Semua Filter" - -#~ msgid "Accounts" -#~ msgstr "Rekening" - -#~ msgid "Sort" -#~ msgstr "Urutkan" - -#~ msgid "Increasing" -#~ msgstr "Meningkat" - -#~ msgid "Decreasing" -#~ msgstr "Menurun" - -#~ msgid "Sort By" -#~ msgstr "Urutkan Berdasarkan" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Pengaturan Rekening(Ctrl+.)" diff --git a/NickvisionMoney.Shared/Resources/po/it.po b/NickvisionMoney.Shared/Resources/po/it.po deleted file mode 100644 index 9f4445ec6..000000000 --- a/NickvisionMoney.Shared/Resources/po/it.po +++ /dev/null @@ -1,1864 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-09-16 10:15+0000\n" -"Last-Translator: Davide \n" -"Language-Team: Italian \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0.2\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copia)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} da {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} etichetta" -msgstr[1] "{0} etichette" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transazione" -msgstr[1] "{0} transazioni" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nome del conto" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nome del conto (esistente)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nome del conto (aperto)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Impostazioni account" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipo di conto" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Aggiungi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Creare una nuova transazione o importare le transazioni da un file." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Aggiungere una password al PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Tutti i file" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Importo" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Importo (non valido)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Applica" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Eliminare il gruppo?\n" -"L'azione è irreversibile." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Eliminare la transazione?\n" -"L'azione è irreversibile." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Aziendale" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Impossibile accedere alla cartella selezionata, controllare i permessi di " -"Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Annulla" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Modifica password" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Conto corrente" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Chiudi" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "I collaboratori di GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Valuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Codice della valuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Codice della valuta (vuoto)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Simbolo della valuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Simbolo della valuta (vuoto)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Simbolo della valuta (non valido)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separatore decimale" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separatore decimale (vuoto)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separatore decimale (non valido)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Elimina esistenti" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Elimina gruppo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Elimina solo l'originale" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Elimina l'originale e quelle generate" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Elimina transazione" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descrizione" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descrizione (vuota)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Conto di destinazione" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Conto di destinazione (non valido)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Password del conto di destinazione" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Password del conto di destinazione (non valida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Password del conto di destinazione (richiesta)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Scollega esistenti" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Errore" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Uscita" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Esporta su file" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "L'account è stato esportato su file." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Generate: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repository GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Buon pomeriggio!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Buongiorno!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Buona sera!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Gruppo" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nome gruppo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separatore dei gruppi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separatore dei gruppi (non valido)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Gruppi" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Aiuto" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importa da un conto" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importa da file" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} transazione importata dal file." -msgstr[1] "{0} transazioni importate dal file." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Entrata" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Gestisci le tue finanze" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Chat di Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nome" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nome (vuoto)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nome (esistente)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Mai" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Conto di Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "No" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Per sempre" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Nessuna transazione" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nessuna transazione trovata" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" -"Non è stata trovata alcuna transazione che corrisponda ai filtri selezionati." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Annotazioni" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nulla da importare dal file." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Tra un mese" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Tra una settimana" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Apri" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Apre un conto" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Panoramica" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Pagina {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Password del PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Ricevuta" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Ricevuta (File inaccessibile)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Ricevute" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Fine ripetizione" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Fine ripetizione (non valida)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Frequenza" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "La frequenza è stata modificata" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Il risultato è stato copiato negli appunti." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Conto deposito" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Seleziona conto" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Seleziona cartella di backup" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Seleziona cartella" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Ordina per importo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Ordina per data" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Ordina per ID" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Etichette" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "La password del conto è stata modificata." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "La password del conto è stata eliminata." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "La password sarà eliminata alla chiusura di questa finestra." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Le password non combaciano." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"La frequenza della ripetizione è stata modificata.\n" -"Cosa fare con le transazioni collegate?\n" -"\n" -"Verranno generate nuove transazioni ripetute in base alla nuova frequenza." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Questo conto non ha sufficiente denaro per il trasferimento." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Questo account è già aperto." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Questa è una transazione ricorrente.\n" -"Cosa fare con le transazioni collegate?\n" -"\n" -"Eliminare solo la transazione ricorrente permetterà di modificare " -"singolarmente le transazioni ad essa collegate." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Questa transazione è ricorrente.\n" -"Cosa fare con le transazioni collegate?\n" -"\n" -"Aggiornare solo la transazione ricorrente scollegherà\n" -"le transazioni ad essa collegate." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Domani" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Totale" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transazione" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transazioni" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transazioni senza gruppo" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Trasferimento da {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Trasferimento a {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" -"Mattia Borda\n" -"Davide Ferracin " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Tra due mesi" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tipo" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Esportazione su file del conto non riuscita." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Importazione delle informazioni dal file non riuscita. Assicurarsi che " -"l'applicazione abbia i permessi di accedere al file e riprovare." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Importazione delle transazioni dal file non riuscita." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Impossibile caricare i dati sulla valuta. Per favore riprova. Se l'errore " -"persiste ancora, segnala un bug." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Accesso al conto non riuscito. La password non è corretta." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Apertura del conto non riuscita. Assicurarsi che l'applicazione abbia i " -"permessi di accedere al file e riprovare." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Non è possibile sovrascrivere un conto aperto." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Non è possibile sovrascrivere un conto aperto." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Senza gruppo" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Senza etichetta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Prossime transazioni" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Aggiorna solo l'originale" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Aggiorna originale e collegate" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Aggiorna transazione" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Carica" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Visualizza" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Proteggere il file PDF con una password?\n" -"\n" -"Se la password viene dimenticata, non sarà possibile aprire il PDF." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Sì" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Il sistema riferisce che la valuta di sistema è" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Buongiorno!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Buongiorno!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Indietro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tipo di transazione predefinito" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Soglia per i promemoria delle transazioni" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Un giorno prima" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Una settimana prima" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Un mese prima" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Due mesi prima" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Gestisce la valuta del conto." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Imposta una nuova password o cancella l'attuale." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Usa valuta personalizzata" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Stile visualizzazione importo" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Altro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Nessuno" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Cifre decimali" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Due" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Tre" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Quattro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Cinque" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Sei" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Illimitata" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nuova password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Conferma password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Robustezza della password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" -"Se la password viene dimenticata, non sarà possibile ripristinare il file!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Rimuovi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Trasferisci denaro" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Esporta tutte le informazioni" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Esporta vista corrente" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Cerca per descrizione" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Panoramica di oggi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Promemoria" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Azioni" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Seleziona tutti i filtri dell'anteprima" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Nuovo gruppo (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nuovo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Mostra/nascondi gruppi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Seleziona tutti i filtri dei gruppi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Deseleziona filtri dei gruppi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Mostra/nascondi etichette" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Seleziona tutti i filtri delle etichette" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Deseleziona filtri delle etichette" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Calendario" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Seleziona il mese corrente" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Reimposta ad oggi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Oggi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Seleziona periodo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Inizio" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Fine" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Visualizza" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Successivo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Ordina dalla meno recente" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Ordina dalla più recente" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nuova transazione (Ctrl+Maiusc+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nuova" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Suggerimenti" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Convertitore" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Cambia valuta" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Cambia" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Caricamento..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Sorgente" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Risultato" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Copia importo risultato" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Tutti gli account" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Colore" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Elimina" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Modifica gruppo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nuovo conto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Usare questo assistente per sfruttare al meglio il proprio conto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Iniziamo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Posizione di archiviazione" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Password del conto (facoltativa)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Cartella" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Sovrascrivi conti esistenti" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Impostazioni conto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Questa è solamente un'etichetta, che non influenzerà il funzionamento " -"dell’applicazione." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Valuta del conto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importa informazioni esistenti" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Caricare un file valido da cui importare le informazioni esistenti nel nuovo " -"conto." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Importa file" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Selezionare un file" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Rimuovi file" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Crea" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Inserire la password per accedere:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Password" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Sblocca" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Preferenze" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interfaccia utente" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Stile" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Chiaro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Scuro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Sistema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Colori" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Personalizza i colori usati da Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Colore predefinito delle transazioni" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "Le modifiche saranno applicate solo alle nuove transazioni." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Colore predefinito dei trasferimenti" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Le modifiche saranno applicate solo ai nuovi trasferimenti." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Colore dei gruppi predefinito" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Le modifiche saranno applicate solo ai nuovi gruppi." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Colore dei conti correnti" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Colore dei conti deposito" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Colore dei conti aziendali" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Impostazioni regionali" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Usa cifre native" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Se utilizzare i numeri nativi della propria regione anziché cifre latine." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Inserimento separatore decimale" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Imposta per quali tasti verrà inserito il separatore decimale predefinito " -"per la lingua." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Spento" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Punto del tastierino numerico" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Punto o virgola" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Backup" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Cartella di backup in CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"I conti non criptati saranno esportati automaticamente come file CSV in " -"questa cartella quando viene applicata una modifica." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Rimuovi cartella di backup" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Nessun promemoria" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Conti" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Chiude il conto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Trasferimento" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Nuovo gruppo" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nuova transazione" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Applicazione" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Scorciatoie da tastiera" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Mostra/nasconde la barra laterale" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Esce" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Duplica" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Rimuovi fine ripetizione" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Ogni giorno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Ogni settimana" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Ogni due settimane" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Ogni mese" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Ogni tre mesi" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Ogni anno" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Ogni due anni" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Usa colore del gruppo" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Usa colore speciale" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Inserire il nome per una nuova etichetta…" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Aggiungi etichetta" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extra" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Gestisce i campi extra della transazione." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Inserire le note qui" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Modifica transazione" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Un trasferimento di denaro creerà un'uscita in questo conto e un'entrata nel " -"conto selezionato per il trasferimento." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Nessun conto selezionato" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Selezionare un conto di destinazione" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Conti recenti" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Recenti" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Conversione necessaria" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Utilizza tassi personalizzate" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Inserisci manualmente i tassi di conversione" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Trasferisci" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Convertitore di valuta" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Informazioni su Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menù conti" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nuovo conto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Nuovo" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Apri conto (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Nessun account recente" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Mostra/nascondi grafico" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menù principale" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Cruscotto" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Creare o aprire un conto per iniziare. Si può anche trascinare un file " -"all'interno dell'applicazione." - -#~ msgid "result" -#~ msgstr "risultato" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "denaro;soldi;finanza;portafoglio;contante;banca;Nickvision;money;finance;" -#~ "wallet;cash;bank;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Gestire più conti contemporaneamente, con un'interfaccia a schede " -#~ "familiare" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— Filtrare con facilità le transazioni per tipo, gruppo e data" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "— Ripetere facilmente le transazioni, come le bollette mensili" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Trasferire denaro da un conto all'altro" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Esportare un conto come file CSV e importare file CSV, OFX e QIF per " -#~ "aggiungere a un conto tante transazioni in una sola volta" - -#~ msgid "OK" -#~ msgstr "Ok" - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Importazione delle informazioni dal file non riuscita. Il tipo di file " -#~ "non è supportato." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Personalizza l'interfaccia dell'applicazione." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Personalizza il modo in cui Denaro usa le impostazioni regionali." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Personalizza le posizioni di backup per i conti di Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Altro" - -#~ msgid "Enter symbol here" -#~ msgstr "Inserire il simbolo" - -#~ msgid "Enter code here" -#~ msgstr "Inserire il codice" - -#~ msgid "Save" -#~ msgstr "Salva" - -#~ msgid "Hide" -#~ msgstr "Nascondi" - -#~ msgid "Show" -#~ msgstr "Mostra" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Ripristina filtri delle date" - -#~ msgid "Delete Group?" -#~ msgstr "Eliminare il gruppo?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Eliminare la transazione?" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "— Corretto un errore per cui Denaro andava in crash su sistemi con " -#~ "impostazioni regionali non configurate" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "" -#~ "— Corretto un errore che non rendeva possibile esportare in PDF conti con " -#~ "tante ricevute" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "" -#~ "— Corretto un errore per cui il filtro dei gruppi veniva riattivato " -#~ "quando si aggiungeva una transizione al gruppo" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "— Invece di andare in crash, Denaro mostrerà un messaggio di errore se si " -#~ "tenta di accedere a file inaccessibili" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "— Aggiornamento delle traduzioni (Grazie a tutti su Weblate)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Impostazioni account" - -#~ msgid "Version: {0}" -#~ msgstr "Versione {0}" - -#~ msgid "About {0}" -#~ msgstr "Informazioni su {0}" - -#~ msgid "Changelog" -#~ msgstr "Novità" - -#~ msgid "Report a Bug" -#~ msgstr "Segnala un problema" - -#~ msgid "Discussions" -#~ msgstr "Discussioni" - -#~ msgid "Credits" -#~ msgstr "Riconoscimenti" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Collaboratori su GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Traduttori su Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Home" - -#~ msgid "Settings" -#~ msgstr "Impostazioni" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Trasferisci denaro (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importa da file (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtri" - -#~ msgid "Hide Groups" -#~ msgstr "Nascondi gruppi" - -#~ msgid "Show Groups" -#~ msgstr "Mostra gruppi" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "{0} transazioni sono state importate dal file." - -#~ msgid "Enter name here" -#~ msgstr "Inserire il nome" - -#~ msgid "Enter description here" -#~ msgstr "Inserire la descrizione" - -#~ msgid "Enter amount here" -#~ msgstr "Inserire l'ammontare" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Account Money (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Gestisci più account contemporaneamente, con un'interfaccia a schede " -#~ "familiare\n" -#~ "— Filtra facilmente le transazioni per tipo, gruppo o data\n" -#~ "— Ripeti facilmente le transazioni, come le fatture che si verificano " -#~ "ogni mese\n" -#~ "— Trasferire denaro da un conto all'altro\n" -#~ "— Esporta un account come file CSV e importa un file CSV, OFX o QIF per " -#~ "aggiungere transazioni in blocco a un account" - -#~ msgid "New Window" -#~ msgstr "Nuova finestra" - -#~ msgid "Enter password here" -#~ msgstr "Inserire la password" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transazione ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transazioni ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Nessuna cartella backup" - -#~ msgid "Accounts" -#~ msgstr "Account" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Impostazioni account (Ctrl+.)" - -#~ msgid "Order By" -#~ msgstr "Ordina per" - -#~ msgid "Increasing" -#~ msgstr "Ascendente" - -#~ msgid "Decreasing" -#~ msgstr "Discendente" - -#~ msgid "Sort By" -#~ msgstr "Ordina per" - -#~ msgid "Enter decimal separator" -#~ msgstr "Inserire il separatore decimale" - -#~ msgid "Sort" -#~ msgstr "Ordina" - -#~ msgid "Reset All Filters" -#~ msgstr "Reimposta tutti i filtri" - -#~ msgid "Enter group separator" -#~ msgstr "Inserire il separatore dei gruppi" diff --git a/NickvisionMoney.Shared/Resources/po/ja.po b/NickvisionMoney.Shared/Resources/po/ja.po deleted file mode 100644 index 942b73dd4..000000000 --- a/NickvisionMoney.Shared/Resources/po/ja.po +++ /dev/null @@ -1,1547 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-07-09 22:27+0000\n" -"Last-Translator: Luci Draws \n" -"Language-Team: Japanese \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.0-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(コピー)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "キャンセル" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "デーツ" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "デナロ" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "" -msgstr[1] "" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix チャット" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "いいえ" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "はい" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "テーマ" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "システム" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "オフ" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" diff --git a/NickvisionMoney.Shared/Resources/po/metainfo.its b/NickvisionMoney.Shared/Resources/po/metainfo.its deleted file mode 100644 index 37649bff3..000000000 --- a/NickvisionMoney.Shared/Resources/po/metainfo.its +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/NickvisionMoney.Shared/Resources/po/nl.po b/NickvisionMoney.Shared/Resources/po/nl.po deleted file mode 100644 index bb4cc7a49..000000000 --- a/NickvisionMoney.Shared/Resources/po/nl.po +++ /dev/null @@ -1,1798 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2024-03-01 15:00+0000\n" -"Last-Translator: Philip Goto \n" -"Language-Team: Dutch \n" -"Language: nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(kopie)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} van {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} tag" -msgstr[1] "{0} tags" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transactie" -msgstr[1] "{0} transacties" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Accountnaam" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Accountnaam (bestaat)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Accountnaam (geopend)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Rekeninginstellingen" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Soort rekening" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Toevoegen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Voeg een transactie toe of importeer deze uit een bestand" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Wachtwoord toevoegen aan PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Alle bestanden" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Bedrag" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Bedrag (ongeldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Toepassen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Weet u zeker dat u deze groep wilt verwijderen?\n" -"Deze actie is onomkeerbaar." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Weet u zeker dat u deze transactie wilt verwijderen?\n" -"Deze actie is onomkeerbaar." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Zakelijk" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Geen toegang tot de geselecteerde map, controleer Flatpak-rechten." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Annuleren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Wachtwoord wijzigen" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Cheques" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Sluiten" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Bijdragers op GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Valuta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Valutacode" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Valutacode (leeg)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Valutasymbool" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Valutasymbool (blanco)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Valutasymbool (ongeldig)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Datum" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Decimaal scheidingsteken" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Decimaal scheidingsteken (leeg)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Decimaal scheidingsteken (ongeldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Bestaande verwijderen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Groep verwijderen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Alleen eerste verwijderen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Ook alle opeenvolgende verwijderen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Transactie verwijderen" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Beschrijving" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Beschrijving (blanco)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Bestemmingsrekening" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Bestemmingsrekening (ongeldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Wachtwoord van bestemmingsaccount" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Wachtwoord van bestemmingsaccount (ongeldig)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Wachtwoord van bestemmingsaccount (vereist)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Huidige loskoppelen" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Fout" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Uitgave" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exporteren naar bestand" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "De rekening is geëxporteerd naar een bestand." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Gegenereerd: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub-repo" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Goedemiddag!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Goedendag!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Goedenavond!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Groep" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Groepsnaam" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Groepsscheidingsteken" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Groepsscheidingsteken (ongeldig)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Groepen" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Hulp" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importeren uit account" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importeren uit bestand" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} transactie uit bestand geïmporteerd" -msgstr[1] "{0} transacties uit bestand geïmporteerd" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Inkomst" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Beheer uw persoonlijke financiën" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix-kamer" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "n/b" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Naam" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Naam (blanco)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Naam (bestaat)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nooit" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro-account" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Nee" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Geen einddatum" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Geen transacties" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Geen transacties gevonden" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" -"Er zijn geen transacties gevonden die voldoen aan de opgegeven filters." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Aantekeningen" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Niets om uit het bestand te importeren." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Over een maand" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Over een week" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Openen" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Account openen" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Overzicht" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Pagina {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF-wachtwoord" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Factuur" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Factuur (bestand niet toegankelijk)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Facturen" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Einddatum herhalen" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Einddatum herhaling (ongeldig)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Herhalingsinterval" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "De herhaalperiode is gewijzigd" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Resultaat is gekopieerd naar klem­bord." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Spaarrekeningen" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Account selecteren" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Back-up-map selecteren" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Map selecteren" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Sorteren op hoeveelheid" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Sorteren op datum" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Sorteren op id" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Tags" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Het wachtwoord van het account is gewijzigd" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Het wachtwoord van het account is verwijderd" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Het wachtwoord zal worden verwijderd bij het sluiten van deze dialoog" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Wachtwoorden komen niet overeen" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"De herhaalperiode is gewijzigd.\n" -"Welke actie wilt u ondernemen op de huidige opeenvolgende transacties?\n" -"\n" -"Nieuwe opeenvolgende transacties worden op basis van de nieuwe periode " -"ingepland." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Er staat geen geld op deze rekening." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Dit account is al geopend" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#, fuzzy -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Bij deze transactie is een herhaalperiode ingesteld.\n" -"Welke actie wilt u ondernemen op de opeenvolgende transacties?\n" -"\n" -"Als u alleen de eerste transactie verwijdert, blijven\n" -"de opeenvolgende aanpasbaar." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Bij deze transactie is een herhaalperiode ingesteld.\n" -"Welke actie wilt u ondernemen op de opeenvolgende transacties?\n" -"\n" -"Als u alleen de eerste transactie bijwerkt, worden\n" -"de opeenvolgende losgekoppeld.." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Morgen" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Totaal" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transactie" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transacties" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transacties die geen deel uitmaken van een groep" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Overmaken van {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Overmaken naar {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Philip Goto https://philipgoto.nl/" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Over twee maanden" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Type" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "De rekening kan niet worden geëxporteerd." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Kan trans­acties niet uit bestand importeren." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Kan niet inloggen met dit account. Opgegeven wachtwoord is ongeldig." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Kan bestaand account niet over­schrijven." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Kan geopend account niet over­schrijven." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Ongegroepeerd" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Ongetagd" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Aankomende transacties" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Alleen eerste bijwerken" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Ook alle opeenvolgende transacties bijwerken" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Transactie bijwerken" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Uploaden" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Bekijken" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Wilt u het PDF-bestand met een wachtwoord beschermen?\n" -"\n" -"Als het wachtwoord verloren is zal het PDF-bestand niet meer toegankelijk " -"zijn." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Ja" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Volgens uw besturingssysteem is uw valuta" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Goedemorgen!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Goedenacht!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Terug" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Standaardtransactietype" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Drempelwaarde voor transactie­herinneringen" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Eén dag van tevoren" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Eén week van tevoren" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Eén maand van tevoren" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Twee maanden van tevoren" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Beheer de valuta die door de rekening wordt gebruikt." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Stel een nieuw wachtwoord in of verwijder een wachtwoord" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Aangepaste valuta gebruiken" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Weergave­stijl van hoeveel­heid" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Andere" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Geen" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Decimale cijfers" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Twee" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Drie" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Vier" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Vijf" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Zes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Ongelimiteerd" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nieuw wachtwoord" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Bevestiging wachtwoord" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Wachtwoord­sterkte" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" -"Als het wachtwoord verloren is is er geen manier om het bestand te " -"herstellen!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Verwijderen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Geld overmaken" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Alle informatie exporteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Huidige weergave exporteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Zoeken op beschrijving" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Dagoverzicht" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Herinneringen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Acties" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Alle overzichtfilters selecteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Nieuwe groep (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nieuw" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Groepen tonen/verbergen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Alle groepsfilters selecteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Groepfilters deselecteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Tags tonen/verbergen" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Alle tag-filters selecteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Tag-filters deselecteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Agenda" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Huidige maand selecteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Terugzetten naar vandaag" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Vandaag" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Kies een datumbereik" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Begin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Eind" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Visualiseren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Volgende" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Oplopend sorteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Aflopend sorteren" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nieuwe overboeking (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nieuw" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Suggesties" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Conversie" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Valuta wisselen" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Wisselen" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Laden…" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Bron" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Resultaat" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Resultaat­hoeveelheid kopiëren" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Alle accounts" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Kleur" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Verwijderen" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Groep bewerken" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nieuw account" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Gebruik deze wizard om het meeste uit uw account te halen" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Laten we beginnen" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Opslaglocatie" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Accountwachtwoord (optioneel)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Map" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Bestaande accounts overschrijven" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Accountopties" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Dit is slechts een handig label dat de werking van het programma niet " -"beïnvloedt" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Accountvaluta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Bestaande informatie importeren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Bestand importeren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Bestand selecteren" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Bestand wissen" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Aanmaken" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Voer wachtwoord in om in te loggen:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Wachtwoord" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Ontgrendelen" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Voorkeuren" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Vormgeving" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Thema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Licht" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Donker" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Systeemthema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Kleuren" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Pas de door Denaro gebruikte kleuren aan" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Standaardkleur van transacties" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "Let op: wijzigingen worden alléén toegepast op nieuwe overboekingen." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Standaardkleur van overdrachten" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Let op: wijzigingen worden alléén toegepast op nieuwe overboekingen." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Standaardgroepskleur" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" -"Een wijziging in deze instelling wordt alleen toegepast op nieuwe groepen." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Kleur van betaal­rekening" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Kleur van spaar­rekening" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Kleur van bedrijfs­rekening" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Regio" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Lokale decimale notatie gebruiken" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Of cijfertekens van uw taal moeten worden gebruikt in plaats van latijnse " -"cijfers." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Decimaal scheidings­teken invoegen" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Stelt in voor welke toetsen het decimale scheidingsteken zal worden ingevoerd" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Uitgeschakeld" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Alleen numpad-punt" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Punt en komma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Back-up" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "CSV-back-up­map" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Onversleutelde acounts worden automatisch als CSV-bestanden naar deze map " -"geëxporteerd wanneer een wijziging wordt aangebracht." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Back-up-map wissen" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Geen herinneringen" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Account" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Rekening sluiten" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Overboeken" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Nieuwe groep" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nieuwe overboeking" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "App" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Sneltoetsen" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Zijbalk tonen/verbergen" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Sluiten" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Kopie maken" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Einddatum wissen" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Iedere dag" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Iedere week" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Iedere twee weken" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Iedere maand" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Ieder kwartaal" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Ieder jaar" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Iedere twee jaar" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Groepskleur gebruiken" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Unieke kleur gebruiken" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Voer nieuwe tag-naam in…" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Tag toevoegen" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extra's" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Beheer extra velden van de transactie" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Voer aantekeningen hier in" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Transactie bewerken" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Door geld over te maken wordt het bedrag in kwestie als uitgave op de " -"oorspronkelijke rekening genoteerd en als inkomst op de andere." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Er is geen rekening gekozen" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Kies een bestemmingsrekening" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Recente accounts" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Onlangs gebruikt" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Conversie benodigd" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Aangepaste wissel­koersen gebruiken" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Voer wisselkoersen handmatig in" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Overboeken" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Valuta­conversie" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Over Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Rekeningmenu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nieuw account (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Nieuw" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Account openen (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Geen recente accounts" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Grafieken omschakelen" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Hoofdmenu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Dashboard" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Maak een account aan of voeg er een toe om aan de slag te gaan. U kunt ook " -"een bestand naar de app slepen." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Resultaat" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "money;finance;wallet;cash;bank;Nickvision;geld;financie;portemonnee;" -#~ "contant;pin;" - -#~ msgid "OK" -#~ msgstr "Oké" - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Pas de vormgeving aan" - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Pas aan hoe Denaro regio-instellingen gebruikt" - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Pas back-up-locaties aan voor Denaro-accounts" - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Andere" - -#~ msgid "Enter symbol here" -#~ msgstr "Voer een symbool in" - -#~ msgid "Enter code here" -#~ msgstr "Voer een code in" - -#~ msgid "Save" -#~ msgstr "Opslaan" - -#~ msgid "Hide" -#~ msgstr "Verbergen" - -#~ msgid "Show" -#~ msgstr "Tonen" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Datumfilters resetten" - -#~ msgid "Delete Group?" -#~ msgstr "Groep verwijderen?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Transactie verwijderen?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Rekeninginstellingen" - -#~ msgid "Version: {0}" -#~ msgstr "Versie: {0}" - -#~ msgid "About {0}" -#~ msgstr "Over {0}" - -#~ msgid "Changelog" -#~ msgstr "Wijzigingslog" - -#~ msgid "Report a Bug" -#~ msgstr "Bug melden" - -#~ msgid "Discussions" -#~ msgstr "Discussies" - -#~ msgid "Credits" -#~ msgstr "Met dank aan" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors op GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "De vertalers op Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Overzicht" - -#~ msgid "Settings" -#~ msgstr "Instellingen" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Geld overmaken (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importeren uit bestand (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filters" - -#~ msgid "Hide Groups" -#~ msgstr "Groepen verbergen" - -#~ msgid "Show Groups" -#~ msgstr "Groepen tonen" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Er zijn {0} transacties geïmporteerd." - -#~ msgid "Enter name here" -#~ msgstr "Voer een naam in" - -#~ msgid "Enter description here" -#~ msgstr "Voer een beschrijving in" - -#~ msgid "Enter amount here" -#~ msgstr "Voer een bedrag in" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Money-rekening (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Beheer meerdere accounts tegelijk, met een vertrouwde tabblad-" -#~ "interface\n" -#~ "— Filter eenvoudig transacties op type, groep of datum\n" -#~ "— Herhaal eenvoudig transacties, zoals maandelijkse facturen\n" -#~ "— Maak geld over van de ene rekening naar de andere\n" -#~ "— Exporteer een account als een CSV-bestand of importeer een CSV-, OFX- " -#~ "of QIF-bestand om meerdere transacties in één keer aan een account toe te " -#~ "voegen" - -#~ msgid "New Window" -#~ msgstr "Nieuw venster" - -#~ msgid "Enter password here" -#~ msgstr "Voer wachtwoord hier in" - -#~ msgid "Enter decimal separator" -#~ msgstr "Voer decimaal scheidingsteken in" - -#~ msgid "Enter group separator" -#~ msgstr "Voer groepsscheidingsteken in" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transacties ({0})" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transactie ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Geen back-up-map" - -#~ msgid "Accounts" -#~ msgstr "Accounts" - -#~ msgid "Reset All Filters" -#~ msgstr "Alle filters resetten" - -#~ msgid "Sort" -#~ msgstr "Sorteren" - -#~ msgid "Increasing" -#~ msgstr "Oplopend" - -#~ msgid "Order By" -#~ msgstr "Volgorde" - -#~ msgid "Sort By" -#~ msgstr "Sorteren op" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Accountinstellingen (Ctrl+.)" - -#~ msgid "Decreasing" -#~ msgstr "Aflopend" diff --git a/NickvisionMoney.Shared/Resources/po/oc.po b/NickvisionMoney.Shared/Resources/po/oc.po deleted file mode 100644 index 4e95f66fe..000000000 --- a/NickvisionMoney.Shared/Resources/po/oc.po +++ /dev/null @@ -1,1787 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: oc\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copiar)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} de {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, fuzzy, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "Transaccion" -msgstr[1] "Transaccion" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -#, fuzzy -msgid "Account Name" -msgstr "Tipe de compte" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -#, fuzzy -msgid "Account Name (Exists)" -msgstr "Nom (existís)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -#, fuzzy -msgid "Account Name (Opened)" -msgstr "Cap de compte pas dobèrt" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Paramètres del compte" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipe de compte" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Ajustar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" -"Ajustatz una transaccion novèla o importatz de transaccions a partir d’un " -"fichièr." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Ajustar un senhal al document PDF ?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Totes los fichièrs" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Soma" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Soma (invalida)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Aplicar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Volètz vertadièrament suprimir aqueste grop ?\n" -"Aquesta accion se pòt pas anullar." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Volètz vertadièrament suprimir aquesta transaccion ?\n" -"Aquesta accion se pòt pas anullar." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Afars" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Anullar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Cambiar lo senhal" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Chècs" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Tampar" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Devisa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Currency Code" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Currency Code (Empty)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Currency Symbol" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Currency Symbol (Empty)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -#, fuzzy -msgid "Currency Symbol (Invalid)" -msgstr "Currency Symbol (Empty)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -#, fuzzy -msgid "Decimal Separator" -msgstr "Inserir un separador decimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -#, fuzzy -msgid "Decimal Separator (Empty)" -msgstr "Inserir un separador decimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -#, fuzzy -msgid "Decimal Separator (Invalid)" -msgstr "Inserir un separador decimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -#, fuzzy -msgid "Delete Existing" -msgstr "Suprimir l’existent" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Suprimir lo grop" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Suprimir sonque la font" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Suprimir la font e las transaccions generadas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Suprimir la transaccion" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descripcion" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descripcion (voida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Compte de destinacion" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Compte de destinacion (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Senhal del compte de destinacion" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Senhal del compte de destinacion (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Senhal del compte de destinacion (obligatòri)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Dissociar l’existent" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Despensa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportar cap a un fichièr" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Compte corrèctament exportat dins un fichièr." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Generat : {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Depaus GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Bon aprèp-miègjorn" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Bona jornada" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Bonser" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grop" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nom del grop" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -#, fuzzy -msgid "Group Separator (Invalid)" -msgstr "Soma (invalida)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grops" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Ajuda" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Identificant" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -#, fuzzy -msgid "Import from Account" -msgstr "Importar d’un fichièr estant" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importar d’un fichièr estant" - -#: ../../../Controllers/AccountViewController.cs:969 -#, fuzzy, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} transaccion importada del fichièr estant." -msgstr[1] "{0} transaccion importada del fichièr estant." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Revengut" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Gerissètz vòstras finanças personalas" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Chat Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/D" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nom" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nom (void)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nom (existís)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Pas jamai" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Compte Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Non" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Cap de data de fin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Cap de transaccion" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Cap de transaccion pas trobada" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Cap de transaccion correspondenta als filtres especificats." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Nòtas" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Dobrir" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Dobrir compte" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Vista d'ensemble" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Pagina {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Senhal PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Recebut" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Recebuts" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Repetir la data de fin" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Repetir la data de fin (invalida)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Interval de repeticion" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Interval de repeticion modificat" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Estalvis" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -#, fuzzy -msgid "Select Account" -msgstr "Comptes recents" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -#, fuzzy -msgid "Select Folder" -msgstr "Seleccionar l’interval" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Triar per soma" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Triar per data" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Triar per identificant" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Lo senhal del compte es estat modificat." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Lo senhal del compte es estat tirat." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Serà tirat lo senhal a la tampadura de la bóstia de dialòg." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -#, fuzzy -msgid "The passwords do not match." -msgstr "Lo senhal del compte es estat modificat." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Aqueste compte a pas cap d’argent disponible per transferir." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Aqueste compte es ja dobèrt." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transaccion" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transaccions" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transaccion sens grop" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transferir a partir de {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transferir cap a {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tipe" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Exportacion dins un fichièr del compte impossible." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -#, fuzzy -msgid "Unable to import transactions from the file." -msgstr "" -"Ajustatz una transaccion novèla o importatz de transaccions a partir d’un " -"fichièr." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Connexion al compte impossibla. Lo senhal fornit es invalid." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -#, fuzzy -msgid "Unable to overwrite an existing account." -msgstr "Impossible de subrecargar un compte dobèrt." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Impossible de subrecargar un compte dobèrt." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Pas gropada" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -#, fuzzy -msgid "Upcoming transactions" -msgstr "Cap de transaccion" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Actualizar sonque la font" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Actualizar la font e las transaccions generadas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Actualizar la transaccion" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Enviar" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Afichatge" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Volètz protegir aqueste fichièr PDF amb un senhal ?\n" -"\n" -"En cas de pèrda del senhal lo document serà inaccessible." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Òc" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Segon vòstre sistèma vòstra devisa es" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Bonjorn" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Bonjorn" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Tornar" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tipe de transaccion per defaut" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Causissètz un senhal novèl o suprimissètz-ne un." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Utilizar una devisa personalizada" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Senhal novèl" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Confirmar lo senhal" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -#, fuzzy -msgid "Password Strength" -msgstr "Senhal" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Se lo senhal es perdut, i a pas cap de biais de restaurar lo compte !" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Levar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Transferir d’argent" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -#, fuzzy -msgid "Export Current View" -msgstr "Exportar cap a un fichièr" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Recercar per descripcion" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Vista d’ensemble per uèi" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Accions" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -#, fuzzy -msgid "Select All Overview Filters" -msgstr "Reïnicializar los filtres de la vista d’ensemble" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Grop novèl (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "Novèla" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Bascular la visibilitat dels grops" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -#, fuzzy -msgid "Select All Groups Filters" -msgstr "Reïnicializar los filtres de grops" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -#, fuzzy -msgid "Unselect Groups Filters" -msgstr "Reïnicializar los filtres de grops" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "Bascular la visibilitat dels grops" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -#, fuzzy -msgid "Select All Tags Filters" -msgstr "Reïnicializar los filtres de grops" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -#, fuzzy -msgid "Unselect Tags Filters" -msgstr "Reïnicializar los filtres de grops" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Calendièr" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Seleccionar l’interval" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -#, fuzzy -msgctxt "DateRange" -msgid "Start" -msgstr "Debuta" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -#, fuzzy -msgctxt "DateRange" -msgid "End" -msgstr "Fin" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Triar del primièr al darnièr" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Triar del darnièr al primièr" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Transaccion novèla (Ctrl+Maj+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "Novèla" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Resultat" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "Cap de compte recent" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Totes los comptes" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Color" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Suprimir" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Modificar lo grop" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Compte novèl" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -#, fuzzy -msgid "Let's Start" -msgstr "Debuta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -#, fuzzy -msgid "Account Password (Optional)" -msgstr "Senhal del compte de destinacion (invalid)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -#, fuzzy -msgid "Overwrite Existing Accounts" -msgstr "Compte de destinacion" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "Paramètres del compte" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Es sonque una etiqueta utila qu’afècta pas lo foncionament de l’aplicacion." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -#, fuzzy -msgid "Account Currency" -msgstr "Menú del compte" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -#, fuzzy -msgid "Import File" -msgstr "Importar d’un fichièr estant" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -#, fuzzy -msgid "Select File" -msgstr "Seleccionar l’interval" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Picatz lo senhal per vos connectar :" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Senhal" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Unlock" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Preferéncias" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interfàcia utilizaire" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tèma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Light" -msgstr "Clar" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Dark" -msgstr "Escur" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "System" -msgstr "Sistèma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Colors" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Personalizar las colors utilizadas per Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Color per defaut de las transaccions" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Una modificacion d’aqueste paramètre s’aplicarà sonque a las transaccions " -"apondudas recentament." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Color per defaut dels transferiments" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -#, fuzzy -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Una modificacion d’aqueste paramètre s’aplicarà sonque a las transaccions " -"apondudas recentament." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -#, fuzzy -msgid "Group Default Color" -msgstr "Color per defaut dels transferiments" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -#, fuzzy -msgid "A change in this setting will only be applied to new groups." -msgstr "" -"Una modificacion d’aqueste paramètre s’aplicarà sonque a las transaccions " -"apondudas recentament." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Color del compte chèc" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Color del compte d’estalvis" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Color del compte d’afars" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Paramètres regionals" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Inserir un separador decimal" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -#, fuzzy -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Desactivat" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Ponch final" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Ponch e virgula" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -#, fuzzy -msgid "Backup" -msgstr "Tornar" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Compte" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Tampar lo compte" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -#, fuzzy -msgctxt "Title" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Grop novèl" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Transaccion novèla" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplicacion" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Acorchis de clavièr" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Afichar o amagar lo panèl lateral" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Quitar" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Realizar una còpia" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Escafar la data de fin" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Jornalièr" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Setmanièr" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Bisetmanièr" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Mesadièr" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Trimestral" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Annadièr" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Biannal" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extras" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -#, fuzzy -msgid "Enter notes here" -msgstr "Dintratz lo nom aicí" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Modificar la transaccion" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Lo transferiment d'argent debitarà del montant donat aquel compte e " -"creditarà d’aqueste montant lo compte causit." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Cap de compte pas seleccionat" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Seleccionatz un compte de destinacion" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Comptes recents" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Recents" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Conversion requerida" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "Utilizar una devisa personalizada" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "Picatz la conversion aicí" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -#, fuzzy -msgctxt "Button" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Currency Code" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menú del compte" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Compte novèl (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "Novèla" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Dobrir compte (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Cap de compte recent" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menú principal" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Tablèu de bòrd" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Creatz o dobrissètz un compte per començar. Podètz tanben far lissar un " -"fichièr dins l’aplicacion a partir de l’explorator de fichièrs." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Resultat" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "argent;finança;pòrtafuèlha;cash;GTK;Nickvision;" - -#~ msgid "OK" -#~ msgstr "D'acòrdi" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Personalizatz l’interfàcia utilizaire." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Personalizar coma Denaro utiliza los paramètres regionals." - -#, fuzzy -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Personalizatz l’interfàcia utilizaire." - -#~ msgid "Enter symbol here" -#~ msgstr "Enter symbol here" - -#~ msgid "Enter code here" -#~ msgstr "Picatz un còdi aquí" - -#~ msgid "Save" -#~ msgstr "Enregistrar" - -#~ msgid "Hide" -#~ msgstr "Amagar" - -#~ msgid "Show" -#~ msgstr "Mostrar" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Reïnicializar los filtres de datas" - -#~ msgid "Delete Group?" -#~ msgstr "Suprimir lo grop ?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Suprimir la transaccion ?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Paramètres del compte" - -#~ msgid "Version: {0}" -#~ msgstr "Version : {0}" - -#~ msgid "About {0}" -#~ msgstr "A prepaus de {0}" - -#~ msgid "Changelog" -#~ msgstr "Jornal de modificacions" - -#~ msgid "Report a Bug" -#~ msgstr "Senhalar una anomalia" - -#~ msgid "Discussions" -#~ msgstr "Discussions" - -#~ msgid "Credits" -#~ msgstr "Crèdits" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors de GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Traductors sus Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Acuèlh" - -#~ msgid "Settings" -#~ msgstr "Paramètres" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Transferir d’argent (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importar d’un fichièr estant (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtres" - -#~ msgid "Hide Groups" -#~ msgstr "Amagar los grops" - -#~ msgid "Show Groups" -#~ msgstr "Mostrar los grops" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "{0} transaccions importadas del fichièr estant." - -#~ msgid "Enter description here" -#~ msgstr "Dintratz la descripcion aicí" - -#~ msgid "Enter amount here" -#~ msgstr "Dintratz la soma aicí" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Compte bancari (*.nmoney)" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Gerissètz vòstras finanças personalas" - -#~ msgid "New Window" -#~ msgstr "Fenèstra novèla" - -#~ msgid "Enter password here" -#~ msgstr "Picatz lo senhal aquí" - -#~ msgid "Transactions ({0})" -#~ msgstr "{0} transaccions" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transaccion ({0})" - -#~ msgid "Accounts" -#~ msgstr "Comptes" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Configuracion del compte (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Triar" - -#~ msgid "Order By" -#~ msgstr "Triar per" - -#~ msgid "Increasing" -#~ msgstr "Ascendent" - -#~ msgid "Decreasing" -#~ msgstr "Descendent" - -#~ msgid "Sort By" -#~ msgstr "Triar per" diff --git a/NickvisionMoney.Shared/Resources/po/pl.po b/NickvisionMoney.Shared/Resources/po/pl.po deleted file mode 100644 index 547fbdca5..000000000 --- a/NickvisionMoney.Shared/Resources/po/pl.po +++ /dev/null @@ -1,1861 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-11-15 07:06+0000\n" -"Last-Translator: Michał Dominik \n" -"Language-Team: Polish \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.2-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Kopia)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} z {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} tag" -msgstr[1] "{0} tagi" -msgstr[2] "{0} tagów" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "transakcja" -msgstr[1] "transakcje" -msgstr[2] "transakcji" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nazwa konta" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nazwa konta (już istnieje)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nazwa konta (otwarte)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Ustawienia konta" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Rodzaj konta" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Dodaj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Dodaj nową transakcję lub zaimportuj transakcje z pliku." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Dodać hasło do pliku PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Wszystkie pliki" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Kwota" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Kwota (niepoprawna)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Zastosuj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Czy na pewno chcesz usunąć tę grupę?\n" -"Tej czynności nie można cofnąć." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Czy na pewno chcesz usunąć tę transakcję?\n" -"Tej czynności nie można cofnąć." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Firmowe" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Brak dostępu do wybranego folderu, sprawdź uprawnienia Flatpaka." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Anuluj" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Zmień hasło" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Bieżące" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Zamknij" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Współautorzy z GitHuba ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Waluta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Kod waluty" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Kod waluty (pusty)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Symbol waluty" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Symbol waluty (pusty)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Symbol waluty (niepoprawny)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separator dziesiętny" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separator dziesiętny (pusty)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separator dziesiętny (niepoprawny)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Usuń istniejące" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Usuń grupę" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Usuń tylko źródłową" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Usuń źródłową i wygenerowane" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Usuń transakcję" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Opis" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Opis (pusty)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Konto docelowe" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Konto docelowe (niepoprawne)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Hasło konta docelowego" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Hasło konta docelowego (niepoprawne)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Hasło konta docelowego (wymagane)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Rozdziel istniejące" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Błąd" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Wydatek" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Eksport do pliku" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Poprawnie wyeksportowano konto do pliku." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Stworzono: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repozytorium na GitHubie" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Dzień dobry!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Dobrego dnia!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Dobry wieczór!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupa" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nazwa grupy" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separator grup" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separator grup (niepoprawny)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupy" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Pomoc" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Identyfikator (ID)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Import z konta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Import z pliku" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Zaimportowano {0} transakcję z pliku." -msgstr[1] "Zaimportowano {0} transakcje z pliku." -msgstr[2] "Zaimportowano {0} transakcji z pliku." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Dochód" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Zarządzaj swoimi finansami" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Czat na Matriksie" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "nd." - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nazwa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nazwa (pusta)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nazwa (już istnieje)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nigdy" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Konto Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Nie" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Bez daty końca" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Brak transakcji" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nie znaleziono transakcji" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Żadna transakcja nie odpowiada zastosowanym filtrom." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Uwagi" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "W pliku nie ma nic do zaimportowania." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Miesiąc od dziś" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Tydzień od dziś" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Otwórz" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Otwórz konto" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Przegląd" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Strona {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Hasło do pliku PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Potwierdzenie" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Potwierdzenie (plik niedostępny)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Potwierdzenia" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Data końca powtarzania" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Data końca powtarzania (niepoprawna)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Interwał powtarzania" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Zmieniono interwał powtarzania" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Wynik skopiowany do schowka." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Oszczędnościowe" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Wybierz konto" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Wybierz folder do kopii zapasowej" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Wybierz folder" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Sortuj po kwocie" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Sortuj po dacie" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Sortuj po ID" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Tagi" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Zmieniono hasło do konta." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Usunięto hasło do konta." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Hasło zostanie usunięte po zamknięciu tego monitu." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Hasła nie są jednakowe." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Zmieniono interwał powtarzania.\n" -"Co chcesz zrobić z istniejącymi wygenerowanymi transakcjami?\n" -"\n" -"Nowe transakcje powtarzane będą generowane zgodnie z nowym interwałem." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "To konto nie ma dostępnych środków do przelewu." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "To konto jest już otwarte." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"To jest źródłowa transakcja powtarzalna.\n" -"Co chcesz zrobić z wygenerowanymi przez nią transakcjami?\n" -"\n" -"Usunięcie tylko transakcji źródłowej pozwoli na to,\n" -"aby poszczególne wygenerowane transakcje były edytowalne." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"To jest źródłowa transakcja powtarzalna.\n" -"Co chcesz zrobić z wygenerowanymi przez nią transakcjami?\n" -"\n" -"Zaktualizowanie tylko transakcji źródłowej \n" -"rozdzieli od niej wygenerowane transakcje." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Jutro" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Łącznie" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transakcja" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transakcje" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transakcje bez grupy" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Przelej z {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Przelej do {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Dominik Gęgotek , 2023" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Dwa miesiące od dziś" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Rodzaj" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Nie można eksportować konta do pliku." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Nie można zaimportować informacji z pliku. Upewnij się, że aplikacja ma " -"uprawnienia dostępu do pliku i spróbuj ponownie." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Nie można zaimportować transakcji z pliku." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Nie można załadować danych o walucie. Spróbuj ponownie. Jeśli to nie pomoże, " -"zgłoś błąd." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Nie można zalogować się na konto. Podane hasło jest nieprawidłowe." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Nie można utworzyć konta. Upewnij się, że aplikacja ma uprawnienia dostępu " -"do pliku i spróbuj ponownie." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Nie można nadpisać istniejącego konta." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Nie można nadpisać otwartego konta." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Bez grupy" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Nieotagowane" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Nadchodzące transakcje" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Zaktualizuj tylko źródłową" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Zaktualizuj źródłową i wygenerowane" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Zaktualizuj transakcję" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Wgraj" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Pokaż" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Czy chcesz zabezpieczyć plik PDF hasłem?\n" -"\n" -"Jeśli utracisz hasło, PDF będzie niedostępny." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Tak" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Twój system zgłasza, że twoją walutą jest" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Dzień dobry!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Dzień dobry!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Cofnij" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Rodzaj domyślnej transakcji" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Częstotliwość przypomnień o transakcji" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Dzień przed" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Tydzień przed" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Miesiąc przed" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Dwa miesiące przed" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Zarządzaj walutą używaną przez konto." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Ustaw nowe hasło lub usuń stare." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Użyj własnej waluty" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Styl wyświetlania kwoty" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Inny" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Brak" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Cyfry dziesiętne" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Dwa" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Trzy" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Cztery" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Pięć" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Sześć" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Bez limitu" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nowe hasło" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Potwierdź hasło" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Siła hasła" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Jeśli zapomnisz hasła nie ma możliwości przywrócenia pliku!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Usuń" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Przelew środków" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Eksportuj wszystkie informacje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Eksportuj obecny widok" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Szukaj po opisie" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Przegląd za dziś" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Przypomnienia" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Działania" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Wybierz wszystkie filtry przeglądu" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Nowa grupa (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Nowa" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Ustaw widoczność grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Wybierz wszystkie filtry grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Odznacz filtry grup" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Ustaw widoczność tagów" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Wybierz wszystkie filtry tagów" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Odznacz filtry tagów" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Kalendarz" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Wybierz obecny miesiąc" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Zresetuj do dzisiaj" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Dziś" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Wybierz zakres" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Początek" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Koniec" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Wizualizuj" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Dalej" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Sortuj od najnowszych" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Sortuj od najstarszych" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nowa transakcja (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Nowa" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Sugestie" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Przelicznik" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Zmień waluty" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Zmień" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Ładowanie..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Źródło" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Wynik" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Kopiuj wynik kwoty" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Wszystkie konta" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Kolor" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Usuń" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Edytuj grupę" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nowe konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Użyj kreatora, aby w pełni wykorzystać swoje konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Zacznijmy" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Lokalizacja pamięci" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Hasło konta (opcjonalne)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Folder" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Nadpisuj istniejące konta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Opcje konta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "To tylko przydatna etykieta, nie ma wpływu na działanie aplikacji." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Waluta konta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importuj istniejące informacje" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Prześlij odpowiedni plik, aby zaimportować istniejące informacje do nowego " -"konta." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Import pliku" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Wybierz plik" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Wyczyść plik" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Stwórz" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Wpisz hasło, aby się zalogować:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Hasło" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Odblokuj" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Opcje" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interfejs użytkownika" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Motyw" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Jasny" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Ciemny" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Systemowy" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Kolory" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Dostosuj kolory używane przez Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Domyślny kolor transakcji" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "Zmiana tej opcji zostanie zastosowana wyłącznie do nowych transakcji." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Domyślny kolor przelewu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Zmiana tej opcji zostanie zastosowana wyłącznie do nowych przelewów." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Domyślny kolor grupy" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Zmiana tej opcji zostanie zastosowana tylko do nowych grup." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Kolor konta bieżącego" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Kolor konta oszczędnościowego" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Kolor konta firmowego" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Opcje regionalne" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Używaj cyfr rodzimych" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "Zamiast cyfr łacińskich używaj cyfr rodzimych dla danego regionu." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Wstawianie separatora dziesiętnego" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Ustaw klawisze, które będą wstawiać regionalny separator dziesiętny w polu " -"kwoty." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Wyłączone" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Tylko kropka klaw. num." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Kropka i przecinek" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Kopia zapasowa" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Folder kopii zapasowych CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Nieszyfrowane konta będą automatycznie eksportowane jako pliki CSV do tego " -"folderu po wprowadzeniu zmiany." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Wyczyść folder kopii zapasowej" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Brak przypomnień" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Zamknij konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Przelew" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Nowa grupa" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nowa transakcja" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplikacja" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Skróty klawiszowe" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Pokaż/ukryj panel boczny" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Wyjdź" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Stwórz kopię" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Usuń datę końca" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Codziennie" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Co tydzień" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Co dwa tygodnie" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Co miesiąc" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Co kwartał" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Co rok" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Co dwa lata" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Użyj koloru grupy" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Użyj unikalnego koloru" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Wpisz nową nazwę tagu..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Dodaj tag" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Dodatkowe" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Zarządzaj dodatkowymi polami transakcji." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Wpisz tu uwagi" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Edytuj transakcję" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Przelew środków stworzy wydatek o kwocie przelewu na tym koncie oraz dochód " -"o kwocie przelewu na koncie, na które wykonywany jest przelew." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Nie wybrano konta" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Wybierz konto docelowe" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Ostatnie konta" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Ostatnie" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Wymiana jest wymagana" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Użyj własnych przeliczników wymiany" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Wpisz ręcznie przelicznik wymiany" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Przelew" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Przelicznik walut" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "O Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menu konta" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nowe konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Nowe" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Otwórz konto (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Brak ostatnich kont" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Włącz wykresy" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Główne menu" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Panel" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Stwórz lub otwórz istniejące konto, aby zacząć. Możesz też przeciągnąć tu " -"plik z komputera." - -#~ msgid "result" -#~ msgstr "wynik" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "pieniądze;finanse;portfel;gotówka;bank;Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Zarządzaj wieloma kontami jednocześnie, korzystając ze znajomego " -#~ "interfejsu zakładek" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— Łatwo filtruj transakcje według typu, grupy lub daty" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Łatwo powtarzaj transakcje, takie jak rachunki, które występują co " -#~ "miesiąc" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Przelewaj pieniądze z jednego konta na drugie" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Eksportuj konto do pliku CSV i importuj pliki CSV, OFX lub QIF, aby " -#~ "zbiorczo dodawać transakcje do konta" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "Transakcje są importowane, proszę czekać..." - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Nie można zaimportować informacji z pliku. Nieobsługiwany typ pliku." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Dostosuj wygląd interfejsu użytkownika aplikacji." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Dosotsuj jak Denaro korzysta z ustawień regionalnych." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Dostosuje lokalizację kopii zapasowych kont Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Inny" - -#~ msgid "Enter symbol here" -#~ msgstr "Wpisz tutaj symbol" - -#~ msgid "Enter code here" -#~ msgstr "Wpisz tutaj kod" - -#~ msgid "Save" -#~ msgstr "Zapisz" - -#~ msgid "Hide" -#~ msgstr "Ukryj" - -#~ msgid "Show" -#~ msgstr "Pokaż" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Usuń filtry dat" - -#~ msgid "Delete Group?" -#~ msgstr "Usunąć grupę?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Usunąć transakcję?" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "- Naprawiono błąd, w wyniku którego Denaro zawieszało się na systemach z " -#~ "nieskonfigurowanymi ustawieniami lokalnymi" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "" -#~ "- Naprawiono błąd, w wyniku którego eksportowanie plików PDF nie powiodło " -#~ "się w przypadku kont z wieloma potwierdzeniami" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "" -#~ "- Naprawiono błąd, w wyniku którego filtr grupy był ponownie aktywowany " -#~ "po dodaniu transakcji do danej grupy" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "- Denaro będzie wyświetlać komunikaty o błędach przy próbie dostępu do " -#~ "niedostępnego pliku, zamiast zawieszać się" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "- Zaktualizowane tłumaczenia (Dzięki wszystkim z Weblate'a)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Ustawienia konta" - -#~ msgid "Version: {0}" -#~ msgstr "Wersja: {0}" - -#~ msgid "About {0}" -#~ msgstr "O {0}" - -#~ msgid "Changelog" -#~ msgstr "Lista zmian" - -#~ msgid "Report a Bug" -#~ msgstr "Zgłoś błąd" - -#~ msgid "Discussions" -#~ msgstr "Discussions" - -#~ msgid "Credits" -#~ msgstr "Zasługi" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Współautorzy z GitHuba ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Tłumacze z Weblate'a ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Strona domowa" - -#~ msgid "Settings" -#~ msgstr "Ustawienia" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Przelew środków (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Import z pliku (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtry" - -#~ msgid "Hide Groups" -#~ msgstr "Ukryj grupy" - -#~ msgid "Show Groups" -#~ msgstr "Pokaż grupy" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Liczba zaimportowanych transakcji z pliku: {0}." - -#~ msgid "Enter name here" -#~ msgstr "Wpisz tutaj nazwę" - -#~ msgid "Enter description here" -#~ msgstr "Wpisz tutaj opis" - -#~ msgid "Enter amount here" -#~ msgstr "Wpisz tutaj kwotę" - -#~ msgid "Enter password here" -#~ msgstr "Wpisz tutaj hasło" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Zarządzaj wieloma kontami jednocześnie, korzystając ze znajomego " -#~ "interfejsu zakładek\n" -#~ "— Łatwo filtruj transakcje według typu, grupy lub daty\n" -#~ "— Łatwo powtarzaj transakcje, takie jak rachunki, które pojawiają się co " -#~ "miesiąc\n" -#~ "— Przelewaj pieniądze z jednego konta na drugie\n" -#~ "— Eksportuj konto jako plik CSV i importuj pliki CSV, OFX lub QIF, aby " -#~ "zbiorczo dodawać transakcje do konta" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Konto Money (*.nmoney)" - -#~ msgid "New Window" -#~ msgstr "Nowe okno" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transakcja ({0})" - -#~ msgid "Enter decimal separator" -#~ msgstr "Wprowadź separator dziesiętny" - -#~ msgid "Enter group separator" -#~ msgstr "Wprowadź separator grup" - -#~ msgid "No Backup Folder" -#~ msgstr "Brak folderu kopii zapasowej" - -#~ msgid "Accounts" -#~ msgstr "Konta" - -#~ msgid "Reset All Filters" -#~ msgstr "Usuń wszystkie filtry" - -#~ msgid "Order By" -#~ msgstr "Ułóż" - -#~ msgid "Decreasing" -#~ msgstr "Malejąco" - -#~ msgid "Sort" -#~ msgstr "Sortuj" - -#~ msgid "Sort By" -#~ msgstr "Sortuj po" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Ustawienia konta (Ctrl+.)" - -#~ msgid "Increasing" -#~ msgstr "Rosnąco" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transakcje ({0})" diff --git a/NickvisionMoney.Shared/Resources/po/pt.po b/NickvisionMoney.Shared/Resources/po/pt.po deleted file mode 100644 index 1bd4de7a4..000000000 --- a/NickvisionMoney.Shared/Resources/po/pt.po +++ /dev/null @@ -1,1807 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2024-03-24 18:44+0000\n" -"Last-Translator: ssantos \n" -"Language-Team: Portuguese \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.5-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copiar)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} de {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} tag" -msgstr[1] "{0} tags" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transação" -msgstr[1] "{0} transações" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nome da Conta" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nome da Conta (Existe)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nome da Conta (Aberta)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Configurações da Conta" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Account Type" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Adicionar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Criar uma nova transação ou importar transações de um ficheiro." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Adicionar palavra-passe ao PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Todos os ficheiros" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Valor" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Valor (inválido)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Salvar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Tem certeza de que deseja excluir este grupo?\n" -"Esta ação não pode ser desfeita." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Tem certeza de que deseja excluir esta transação?\n" -"Esta ação não pode ser desfeita." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Negócio" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Não é possível acessar a pasta selecionada. Verifique as permissões do " -"Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Cancelar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Alterar Senha" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Verificando" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Fechar" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Currency" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Currency Code" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Código da Moeda (Vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Currency Symbol" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Símbolo da Moeda (Vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Símbolo da moeda (inválido)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separador decimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separador decimal (vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separador decimal (inválido)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Apagar as Existentes" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Remover Grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Apagar Apenas Origem" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Apagar Origem e Gerado" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Apagar Transação" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descrição" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descrição (vazia)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Conta de destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Conta de destino (inválida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Destination Account Password" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Senha da Conta de Destino (Inválida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Senha da Conta de Destino (Obrigatório)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Desassociar Existentes" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Erro" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Despesas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportar para Arquivo" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Conta exportada para ficheiro com sucesso." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Gerados: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repositório do GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Boa Tarde!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Bom Dia!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Boa Noite!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupo" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nome do Grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separador de grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separador de grupo (inválido)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupos" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Ajuda" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importar de uma Conta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importar de um Arquivo" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} transação importada do ficheiro." -msgstr[1] "{0} transações importadas do ficheiro." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Rendimentos" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Gerencie suas finanças pessoais" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Chat Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nome" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nome (vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nome (existe)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nunca" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Conta Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Não" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Sem Data Final" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Nenhuma Transação" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nenhuma Transação Encontrada" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Nenhuma transação corresponde aos filtros especificados." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Notas" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nada para importar do ficheiro." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Daqui um mês" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Daqui uma semana" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Abrir" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Abrir Conta" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Visão Geral" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Page {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Palavra-passe do PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Recibo" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Rebico (Ficheiro Inacessível)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Recibos" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Data final da recorrência" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Data final da recorrência (inválida)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Intervalo de recorrência" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Intervalo de Repetição Alterado" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Resultado copiado para a área de transferência." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Economias" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Selecionar conta" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Selecione a Pasta de Backup" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Selecionar Pasta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Organizar por Quantidade" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Organizar por Data" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Organizar por Id" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Tags" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "A senha da conta foi alterada." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "A senha da conta foi removida." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "A senha será removida ao fechar esta caixa de diálogo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "As palavras-passe não coincidem." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"O intervalo de repetição foi alterado.\n" -"O que você gostaria de fazer com as transações geradas existentes?\n" -"\n" -"Novas transações recorrentes irão se basear no novo intervalo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Esta conta não possui dinheiro disponível para transferência." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Esta conta já está aberta." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#, fuzzy -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Esta transação é a origem de transações repetidas.\n" -"O que você gostaria de fazer com as transações repetidas?\n" -"\n" -"Excluir somente a transação de origem permitirá\n" -"modificar as transações geradas." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Esta transação é a origem de transações repetidas.\n" -"O que você gostaria de fazer com as transações repetidas?\n" -"\n" -"Atualizar somente a transação de origem desassociará\n" -"as transações geradas da de origem." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Amanhã" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transação" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transações" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transações sem grupo" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transferir De {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transferir Para {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Cassio Pereira " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Daqui a dois meses" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tipo" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Não foi possível exportar conta para o ficheiro." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Não é possível importar informações do ficheiro. Por favor, certifique de " -"que a app tem permissão para aceder o ficheiro e tente novamente." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Não foi possível importar transações do ficheiro." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Não foi possível carregar dados de moeda. Por favor, tente novamente. Se o " -"erro ainda persistir, relate um bug." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Não foi possível conectar em sua conta. Senha inserida está incorreta." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Não foi possível abrir a conta. Por favor, certifique-se de que a app tem " -"permissão para aceder o ficheiro e tente novamente." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Não é possível substituir uma conta existente." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Não é possível substituir uma conta aberta." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Sem Grupo" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Sem Tag" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Próximas transações" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Atualizar Apenas Origem" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Atualizar as de origem e as geradas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Atualizar Transação" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Upload" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Visualizar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Gostaria de proteger o ficheiro PDF com palavra-passe?\n" -"\n" -"Se a palavra-passe for perdida, o PDF ficará inacessível." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Sim" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Seu sistema relatou que sua moeda é" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Bom Dia!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Bom Dia!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Voltar" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tipo de Transação Padrão" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Limite de Lembretes de Transação" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Um dia antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Uma semana antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Um Mês Antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Dois Meses Antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Gerir a moeda usada pela conta." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Definir uma nova senha ou remover uma." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Usar Moeda Personalizada" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Estilo de Exibição do Valor" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "Other" -msgstr "Outro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "None" -msgstr "Nenhum" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Dígitos decimais" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Dois" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Três" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Quatro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Cinco" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Seis" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Ilimitado" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nova Senha" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Confirmar Senha" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -#, fuzzy -msgid "Password Strength" -msgstr "Password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" -"Se a palavra-passe for perdida, não será possível restaurar o ficheiro!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Remover" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Transferir Dinheiro" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Exportar Todas as Informações" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Exportar Visualização Atual" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Pesquisar por descrição" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Resumo de Hoje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Lembretes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Ações" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -#, fuzzy -msgid "Select All Overview Filters" -msgstr "Redefinir filtros da Visão Geral" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Novo Grupo (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "Novo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Alternar Visibilidade de Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Selecionar Todos os Filtros de Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -#, fuzzy -msgid "Unselect Groups Filters" -msgstr "Redefinir filtros dos Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "Alternar Visibilidade de Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Selecionar Todos os Filtros de Tags" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Limpar Filtros de Tags" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Calendário" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Selecionar Mês Atual" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Redefinir para hoje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Hoje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Selecionar Intervalo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -#, fuzzy -msgctxt "DateRange" -msgid "Start" -msgstr "Início" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -#, fuzzy -msgctxt "DateRange" -msgid "End" -msgstr "Fim" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Visualizar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Próximo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Classificar do Primeiro ao Último" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Classificar do Último ao Primeiro" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nova Transação (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "Novo" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Sugestões" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Conversor" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Trocar moedas" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Trocar" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "A carregar..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Origem" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Resultado" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Copiar Resultado" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Todas as Contas" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Cor" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Remover" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Editar Grupo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nova Conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Use este assistente para aproveitar a sua conta ao máximo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Vamos Começar" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Local de Armazenamento" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Palavra-passe da Conta (Opcional)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Pasta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Sobrescrever Contas Existentes" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "Configurações da Conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Esta é apenas uma etiqueta útil que não afeta o funcionamento do aplicativo." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Moeda da Conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importar Todas as Informações" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Envie um ficheiro válido para importar informações existentes na nova conta." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -#, fuzzy -msgid "Import File" -msgstr "Importar de um Arquivo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -#, fuzzy -msgid "Select File" -msgstr "Selecione a Pasta de Backup" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -#, fuzzy -msgid "Clear File" -msgstr "Limpar a Pasta de Backup" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Criar" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Enter Password To Login:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Password" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Desbloquear" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Configurações" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interface de usuário" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Light" -msgstr "Claro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Dark" -msgstr "Escuro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "System" -msgstr "Sistema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Cores" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Customize as cores usadas no Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Cor padrão de transações" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Alterações nessa configuração serão aplicadas somente em novas transações." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Cor padrão de transferências" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Alterações nessa configuração serão aplicadas somente em novas " -"transferências." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Cor Padrão do Grupo" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Mudanças nesta configuração apenas serão aplicadas em novos grupos." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Cor da Conta Corrente" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Cor da Conta de Poupança" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Cor da Conta Empresarial" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Localidade" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Usar Dígitos Nativos" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Caso deseja usar numerais que são nativos para sua localidade em vez de " -"dígitos latinos." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Inserir Separador Decimal" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Definir para quais teclas pressionadas o separador decimal da localidade " -"será inserido em um campo de valor." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -#, fuzzy -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Desligado" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Apenas ponto do teclado numérico" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Ponto Final e Vírgula" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Backup" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Pasta de Backup para os CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Contas não criptografadas serão exportadas automaticamente como arquivos CSV " -"para esta pasta quando uma alteração for feita." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Limpar a Pasta de Backup" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Sem Lembretes" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Conta" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Fechar conta" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -#, fuzzy -msgctxt "Title" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Novo Grupo" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nova Transação" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplicação" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Atalhos do Teclado" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Alternar barra lateral" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Sair" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Criar uma Cópia" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Limpar data final" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Diariamente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Semanalmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "A cada duas semanas" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Mensalmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "A cada três meses" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Anualmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "A cada dois anos" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Usar cor do grupo" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Usar cor específica" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Insira um novo nome de tag..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Adicionar tag" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extras" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Gerenciar campos extras da transação." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Insira notas aqui" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Editar Transação" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Transferir dinheiro criará uma transação de gasto com o valor fornecido " -"nessa conta e uma transação de renda com o valor fornecido na conta para a " -"qual transferir." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Nenhuma conta selecionada" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Selecione uma conta de destino" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Contas Recentes" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Recente" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Conversão Necessária" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "Usar Moeda Personalizada" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "Insira a conversão aqui" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -#, fuzzy -msgctxt "Button" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Currency Code" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -#, fuzzy -msgid "About Denaro" -msgstr "Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menu de contas" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nova Conta (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "Novo" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Abrir Conta (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Nenhuma Conta Recente" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Alternar gráficos" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menu principal" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Painel" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Crie ou abra uma conta para iniciar. Você também pode arrastar um ficheiro " -"do seu explorador de ficheiros para o aplicativo." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Resultado" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "dinheiro;finanças;carteira;dinheiro em espécie;banco;GTK;Nickvision;" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Customizar a interface da aplicação." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Personalizar como o Denaro utiliza as configurações de localidade." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Personalize os locais de backup para as contas Denaro." - -#, fuzzy -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Outro" - -#~ msgid "Enter symbol here" -#~ msgstr "Insira o símbolo aqui" - -#~ msgid "Enter code here" -#~ msgstr "Insira o código aqui" - -#~ msgid "Save" -#~ msgstr "Salvar" - -#~ msgid "Hide" -#~ msgstr "Ocultar" - -#~ msgid "Show" -#~ msgstr "Exibir" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Redefinir filtros de Datas" - -#~ msgid "Delete Group?" -#~ msgstr "Apagar Grupo?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Apagar Transação?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Configurações da Conta" - -#~ msgid "Version: {0}" -#~ msgstr "Versão: {0}" - -#~ msgid "About {0}" -#~ msgstr "Sobre {0}" - -#~ msgid "Changelog" -#~ msgstr "Registro de mudanças" - -#~ msgid "Report a Bug" -#~ msgstr "Relatar um Erro" - -#~ msgid "Discussions" -#~ msgstr "Discussões" - -#~ msgid "Credits" -#~ msgstr "Créditos" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Colaboradores no GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Tradutores no Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Página Inicial" - -#~ msgid "Settings" -#~ msgstr "Configurações" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Transferir Dinheiro (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importar de um Arquivo (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtros" - -#~ msgid "Hide Groups" -#~ msgstr "Ocultar Grupos" - -#~ msgid "Show Groups" -#~ msgstr "Mostrar Grupos" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Importadas {0} transações do ficheiro." - -#~ msgid "Enter name here" -#~ msgstr "Insira o nome aqui" - -#~ msgid "Enter description here" -#~ msgstr "Insira a descrição aqui" - -#~ msgid "Enter amount here" -#~ msgstr "Insira o valor aqui" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Conta Denaro (*.nmoney)" - -#~ msgid "Enter password here" -#~ msgstr "Insira a senha aqui" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Manage your personal finances" - -#~ msgid "New Window" -#~ msgstr "Nova Janela" - -#~ msgid "Enter decimal separator" -#~ msgstr "Insira o separador decimal" - -#~ msgid "Enter group separator" -#~ msgstr "Insira o separador de grupo" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transação ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transações ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Nenhuma Pasta de Backup" - -#~ msgid "Accounts" -#~ msgstr "Contas" - -#~ msgid "Reset All Filters" -#~ msgstr "Redefinir Todos os Filtros" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Configurações de Conta (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Ordenar" - -#~ msgid "Order By" -#~ msgstr "Ordenar por" - -#~ msgid "Increasing" -#~ msgstr "Ordem Crescente" - -#~ msgid "Decreasing" -#~ msgstr "Ordem Decrescente" - -#~ msgid "Sort By" -#~ msgstr "Ordenar por" diff --git a/NickvisionMoney.Shared/Resources/po/pt_BR.po b/NickvisionMoney.Shared/Resources/po/pt_BR.po deleted file mode 100644 index f4961fa15..000000000 --- a/NickvisionMoney.Shared/Resources/po/pt_BR.po +++ /dev/null @@ -1,1805 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2024-01-08 06:00+0000\n" -"Last-Translator: Cassio Gomes Pereira \n" -"Language-Team: Portuguese (Brazil) \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.4-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Cópia)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} de {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} tag" -msgstr[1] "{0} tags" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} transação" -msgstr[1] "{0} transações" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Nome da Conta" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Nome da Conta (Existe)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Nome da Conta (Aberta)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Configurações da Conta" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipo de Conta" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Adicionar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Crie uma nova transação ou importe transações de um arquivo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Adicionar senha ao PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Todos os arquivos" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Valor" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Valor (Inválido)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Aplicar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Tem certeza de que quer excluir este grupo?\n" -"Esta ação é irreversível." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Tem certeza de que quer excluir esta transação?\n" -"Esta ação é irreversível." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Comercial" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" -"Não é possível acessar a pasta selecionada. Verifique as permissões do " -"Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Cancelar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Alterar Senha" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Corrente" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Fechar" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" -"Cassio Pereira {0}\n" -"Contribuidor do GitHub ❤️ {1}" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Moeda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Código da Moeda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Código da Moeda (Vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Símbolo da Moeda" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Símbolo da Moeda (Vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Símbolo da moeda (inválido)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separador decimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separador decimal (vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separador decimal (inválido)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Excluir as Existentes" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Excluir Grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Excluir Somente a de Origem" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Deletar a de Origem e as Geradas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Excluir Transação" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descrição" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descrição (Vazia)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Conta de Destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Conta de Destino (Inválida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Senha da Conta de Destino" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Senha da Conta de Destino (Inválida)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Senha da Conta de Destino (Obrigatória)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Desassociar as Existentes" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Erro" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Despesas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportar para um Arquivo" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Conta exportada para o arquivo com sucesso." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Gerado: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repositório do GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Boa Tarde!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Olá!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Boa Noite!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupo" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Nome do Grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separador de grupo" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separador de grupo (inválido)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupos" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Ajuda" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importar de uma Conta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importar de um Arquivo" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Importada {0} transação do arquivo." -msgstr[1] "Importadas {0} transações do arquivo." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Renda" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Gerencie suas finanças pessoais" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Chat Matrix" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nome" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nome (Vazio)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nome (Existe)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Nunca" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Conta Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Não" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Sem Data Final" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Não Há Transações" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nenhuma Transação Encontrada" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Nenhuma transação corresponde aos filtros especificados." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Notas" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nada para importar do arquivo." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Daqui um mês" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Daqui uma semana" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Abrir" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Abrir Conta" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Resumo" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Página {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Senha do PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Recibo" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Rebico (Arquivo Inacessível)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Recibos" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Data Final da Repetição" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Data Final da Repetição (Inválida)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Intervalo de Repetição" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Intervalo de Repetição Alterado" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Resultado copiado para a área de transferência." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Poupança" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Selecionar conta" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Selecione a Pasta de Backup" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Selecionar Pasta" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Ordenar por Valor" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Ordenar por Data" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Ordenar por Id" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Tags" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "A senha da conta foi alterada." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "A senha da conta foi removida." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "A senha será removida ao fechar esta caixa de diálogo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "As senhas não coincidem." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"O intervalo de repetição foi alterado.\n" -"O que você gostaria de fazer com as transações geradas existentes?\n" -"\n" -"Novas transações repetidas serão geradas baseadas no novo intervalo." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Esta conta não tem dinheiro disponível para transferir." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Esta conta já está aberta." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#, fuzzy -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Esta transação é a origem de transações repetidas.\n" -"O que você gostaria de fazer com as transações geradas?\n" -"\n" -"Excluir apenas a transação de origem permitirá modificar\n" -"as transações geradas." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Esta transação é a origem de transações repetidas.\n" -"O que você gostaria de fazer com as transações geradas?\n" -"\n" -"Atualizar apenas a transação de origem desassociará\n" -"as transações geradas dela." - -#: ../../../Controllers/MainWindowController.cs:102 -#, fuzzy -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Amanhã" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Transação" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transações" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Transações sem um grupo" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transferir de {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transferir para {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Cassio Pereira " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Daqui a dois meses" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tipo" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Não é possível exportar a conta para um arquivo." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Não é possível importar informações do arquivo. Por favor, certifique-se de " -"que o aplicativo tem permissão para acessar o arquivo e tente novamente." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Não foi possível importar transações do arquivo." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Não foi possível carregar dados de moeda. Por favor, tente novamente. Se o " -"erro ainda persistir, relate um bug." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Não é possível entrar na conta. A senha fornecida é inválida." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Não foi possível abrir a conta. Por favor, certifique-se de que o aplicativo " -"tem permissão para acessar o arquivo e tente novamente." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Não é possível substituir uma conta existente." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Não é possível substituir uma conta aberta." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Sem grupo" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Sem Tag" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Próximas transações" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Atualizar Somente a de Origem" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Atualizar a de Origem e as Geradas" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Atualizar Transação" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Carregar" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Abrir" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Gostaria de proteger o arquivo PDF com senha?\n" -"\n" -"Se a senha for perdida, o PDF ficará inacessível." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Sim" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Seu sistema informou que sua moeda é" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Bom Dia!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Boa Noite!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Voltar" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Tipo Padrão das Transações" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Limite de Lembretes de Transação" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Um dia antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Uma semana antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Um Mês Antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "Dois Meses Antes" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Gerenciar a moeda usada pela conta." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Defina uma nova senha ou remova uma." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Usar Moeda Personalizada" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Estilo de Exibição do Valor" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "Other" -msgstr "Outro" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -#, fuzzy -msgid "None" -msgstr "Nenhum" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Dígitos decimais" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Ilimitado" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Nova Senha" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Confirmar Senha" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -#, fuzzy -msgid "Password Strength" -msgstr "Senha" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Se a senha for perdida, não será possível restaurar a sua conta!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Remover" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Transferir Dinheiro" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Exportar Todas as Informações" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Exportar Visualização Atual" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Pesquisar por descrição" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Resumo de Hoje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Lembretes" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Ações" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -#, fuzzy -msgid "Select All Overview Filters" -msgstr "Selecione Todos os Filtros do Overview" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Novo Grupo (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "Novo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Alternar Visibilidade dos Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Selecionar Todos os Filtros de Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -#, fuzzy -msgid "Unselect Groups Filters" -msgstr "Limpar Filtros de Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -#, fuzzy -msgid "Toggle Tags Visibility" -msgstr "Alternar Visibilidade dos Grupos" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Selecionar Todos os Filtros de Tags" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Limpar Filtros de Tags" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Calendário" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Selecionar Mês Atual" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Redefinir para hoje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Hoje" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Selecionar Intervalo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -#, fuzzy -msgctxt "DateRange" -msgid "Start" -msgstr "Início" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -#, fuzzy -msgctxt "DateRange" -msgid "End" -msgstr "Final" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Visualizar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Próximo" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Ordenar do Primeiro ao Último" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Ordenar do Último ao Primeiro" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Nova Transação (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "Novo" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Sugestões" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Conversor" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Trocar moedas" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Trocar" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Carregando..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Origem" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Resultado" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Copiar Resultado" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Todas as Contas" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Cor" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Excluir" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Editar Grupo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nova Conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Use este assistente para aproveitar ao máximo sua conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Vamos Começar" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Local de Armazenamento" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Senha da Conta (Opcional)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Pasta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Sobrescrever Contas Existentes" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "Configurações da Conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "Este é só um rótulo útil que não afeta o funcionamento do aplicativo." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Moeda da Conta" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Importar Todas as Informações" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -#, fuzzy -msgid "Import File" -msgstr "Importar de um Arquivo" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -#, fuzzy -msgid "Select File" -msgstr "Selecione a Pasta de Backup" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -#, fuzzy -msgid "Clear File" -msgstr "Limpar a Pasta de Backup" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Insira a Senha para Entrar:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Senha" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Desbloquear" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Configurações" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Interface de Usuário" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Light" -msgstr "Claro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "Dark" -msgstr "Escuro" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -#, fuzzy -msgctxt "Theme" -msgid "System" -msgstr "Sistema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Cores" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Personalize as cores usadas no Denaro." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Cor Padrão das Transações" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Mudanças nessa configuração serão aplicadas somente às transações recém-" -"adicionadas." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Cor Padrão das Transferências" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" -"Mudanças nessa configuração serão aplicadas somente a novas transferências." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Cor Padrão do Grupo" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Mudanças nesta configuração apenas serão aplicadas em novos grupos." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Cor de Contas Corrente" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Cor de Contas Poupança" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Cor de Contas Comerciais" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Configurações Regionais" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Usar Dígitos Nativos" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Caso deseja usar numerais que são nativos para sua localidade em vez de " -"dígitos latinos." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Inserir Separador de Decimais" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Defina para quais teclas pressionadas o separador decimal regional será " -"inserido em um campo de valor." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -#, fuzzy -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Nenhuma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Somente o ponto do teclado numérico" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Ponto e Vírgula" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Backup" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Pasta de Backup para os CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Contas não criptografadas serão exportadas automaticamente como arquivos CSV " -"para esta pasta quando uma alteração for feita." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Limpar a Pasta de Backup" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Conta" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Fechar Conta" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -#, fuzzy -msgctxt "Title" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Novo Grupo" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Nova Transação" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Aplicativo" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Atalhos do Teclado" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Alternar Barra Lateral" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Sair" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Criar Cópia" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Limpar Data Final" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Diariamente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Semanalmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Quinzenalmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Mensalmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Trimestralmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Anualmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Bienalmente" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Usar cor do grupo" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Usar cor específica" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Extras" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Gerenciar campos extras da transação." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Insira notas aqui" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Editar Transação" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Transferir dinheiro criará uma transação de despesa nesta conta com o valor " -"fornecido e uma transação de renda na conta de destino com o valor fornecido." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Nenhuma Conta Selecionada" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Selecione uma conta de destino" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Contas Recentes" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Recentes" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Conversão Necessária" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -#, fuzzy -msgid "Use Custom Rates" -msgstr "Usar Moeda Personalizada" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -#, fuzzy -msgid "Enter the conversion rates manually" -msgstr "Insira a conversão aqui" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -#, fuzzy -msgctxt "Button" -msgid "Transfer" -msgstr "Transferir" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Código da Moeda" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -#, fuzzy -msgid "About Denaro" -msgstr "Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Menu de Contas" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nova Conta (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "Novo" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Abrir Conta (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Nenhuma Conta Recente" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Menu Principal" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Painel" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Crie ou abra uma conta para começar. Você também pode arrastar um arquivo do " -"seu gerenciador de arquivos para o aplicativo." - -#, fuzzy -#~ msgid "result" -#~ msgstr "Resultado" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "dinheiro;finanças;carteira;moeda;banco;GTK;Nickvision;" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Personalize a interface do aplicativo." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Personalize como o Denaro usa as configurações regionais." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Personalize os locais de backup para as contas Denaro." - -#, fuzzy -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Outro" - -#~ msgid "Enter symbol here" -#~ msgstr "Insira o símbolo aqui" - -#~ msgid "Enter code here" -#~ msgstr "Insira o código aqui" - -#~ msgid "Save" -#~ msgstr "Salvar" - -#~ msgid "Hide" -#~ msgstr "Ocultar" - -#~ msgid "Show" -#~ msgstr "Mostrar" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Limpar Filtros de Datas" - -#~ msgid "Delete Group?" -#~ msgstr "Excluir Grupo?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Excluir Transação?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Configurações da Conta" - -#~ msgid "Version: {0}" -#~ msgstr "Versão: {0}" - -#~ msgid "About {0}" -#~ msgstr "Sobre {0}" - -#~ msgid "Changelog" -#~ msgstr "Registro de alterações" - -#~ msgid "Report a Bug" -#~ msgstr "Reportar um erro" - -#~ msgid "Discussions" -#~ msgstr "Discussões" - -#~ msgid "Credits" -#~ msgstr "Créditos" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Colaboradores no GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Tradutores no Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Página Inicial" - -#~ msgid "Settings" -#~ msgstr "Configurações" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Transferir Dinheiro (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importar de um Arquivo (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Filtros" - -#~ msgid "Hide Groups" -#~ msgstr "Ocultar Grupos" - -#~ msgid "Show Groups" -#~ msgstr "Mostrar Grupos" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Importadas {0} transações do arquivo." - -#~ msgid "Enter name here" -#~ msgstr "Insira o nome aqui" - -#~ msgid "Enter description here" -#~ msgstr "Insira a descrição aqui" - -#~ msgid "Enter amount here" -#~ msgstr "Insira o valor aqui" - -#~ msgid "Enter password here" -#~ msgstr "Insira a senha aqui" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Gerencie suas finanças pessoais" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Conta Denaro (*.nmoney)" - -#~ msgid "New Window" -#~ msgstr "Nova Janela" - -#~ msgid "Enter decimal separator" -#~ msgstr "Insira o separador decimal" - -#~ msgid "Enter group separator" -#~ msgstr "Insira o separador de grupo" - -#~ msgid "Transaction ({0})" -#~ msgstr "Transação ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "Transações ({0})" - -#~ msgid "No Backup Folder" -#~ msgstr "Nenhuma Pasta de Backup" - -#~ msgid "Accounts" -#~ msgstr "Contas" - -#~ msgid "Reset All Filters" -#~ msgstr "Redefinir Todos os Filtros" - -#~ msgid "Sort By" -#~ msgstr "Ordenar por" - -#~ msgid "Order By" -#~ msgstr "Ordenar por" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Configurações de Conta (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Ordenar" - -#~ msgid "Increasing" -#~ msgstr "Ordem Crescente" - -#~ msgid "Decreasing" -#~ msgstr "Ordem Decrescente" diff --git a/NickvisionMoney.Shared/Resources/po/ro.po b/NickvisionMoney.Shared/Resources/po/ro.po deleted file mode 100644 index 81d8c36fd..000000000 --- a/NickvisionMoney.Shared/Resources/po/ro.po +++ /dev/null @@ -1,1561 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-08-27 17:36+0000\n" -"Last-Translator: Victor Mihalache \n" -"Language-Team: Romanian \n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copie)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} din {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} etichetă" -msgstr[1] "{0} etichete" -msgstr[2] "{0} de etichete" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} tranzacție" -msgstr[1] "{0} tranzacții" -msgstr[2] "{0} de tranzacții" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Numele contului" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Numele contului (existent)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Numele contului (deschis)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Setările contului" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Tipul contului" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Adaugă" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Adaugă o tranzacție nouă sau importă tranzacții dintr-un fișier." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Adaugă parola la PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Toate fișierele" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Sumă" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Sumă (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Aplică" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Sunteți sigur că doriți să ștergeți acest grup?\n" -"Această acțiune este ireversibilă." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Sunteți sigur că doriți să ștergeți această tranzacție?\n" -"Această acțiune este ireversibilă." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Afacere" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Nu se poate accesa folderul selectat, verificați permisiunile Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Anulează" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Schimbă parola" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Cont curent" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Contribuitorii de pe GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Monedă" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Codul monedei" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Codul monedei (gol)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Simbolul monedei" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Simbolul monedei (gol)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Simbolul monedei (invalid)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Data" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Separator zecimal" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Separator zecimal (gol)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Separator zecimal (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Șterge existente" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Șterge grupul" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Șterge doar originalul" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Șterge originalul și cele generate" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Șterge tranzacția" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Descriere" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Descriere (goală)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Cont de destinație" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Cont de destinație (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Parola contului de destinație" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Parola contului de destinație (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Parola contului de destinație (obligatorie)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -#, fuzzy -msgid "Disassociate Existing" -msgstr "Disociați existent" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Cheltuieli" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportați în fișier" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Contul a fost exportat în fișier cu succes." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Fișier creat: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Repertoriu GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Bună după-amiaza!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Bună ziua!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Bună seara!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grupă" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Numele grupei" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Separator de grupe" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Separator de grupe (invalid)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupe" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Ajutor" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Importați din cont" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Import din fișier" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Importat {0} tranzacție din fișier." -msgstr[1] "Importat {0} tranzacții din fișier." -msgstr[2] "Importat {0} de tranzacții din fișier." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Venituri" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Gestionați-vă finanțele personale" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Nume" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Nume (gol)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Nume (existent)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Niciodată" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Cont de Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Nu" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Nicio dată limită" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Nicio tranzacție" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Nicio tranzacție găsită" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" -"Nu a fost găsită nicio tranzacție care să corespundă filtrelor selectate." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Note" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Nimic de importat din fișier." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Peste o lună" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Peste o săptămână" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Deschide" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Deschideți un cont" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Panoramică" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Pagina {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Parola PDF-ului" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Chitanță" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Chitanță (fișier inaccesibil)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Chitanțe" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Data sfârșitul repetiției" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Data sfârșitul repetiției (invalid)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Interval de repetare" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Interval de repetare modificat" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Cont de depozit" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Selectați contul" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Selectați dosarul de backup" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Selectați folderul" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Sortează după sumă" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Sortează după dată" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Sortează după ID" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Etichete" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Parola contului a fost schimbată." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Parola contului a fost scoasă." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Parola va fi eliminată la închiderea acestei ferestre de dialog." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Parolele nu se potrivesc." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Intervalul de repetare a fost modificat.\n" -"Ce ați dori să faceți cu tranzacțiile generate existente?\n" -"\n" -"Noi tranzacții repetate vor fi generate pe baza noului interval." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Acest cont nu are bani necesari pentru transfer." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Acest cont este deja deschis." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Această tranzacție este o tranzacție de repetare.\n" -"Ce ați dori să faceți cu tranzacțiile repetate?\n" -"\n" -"Ștergerea doar a tranzacției de sursă va permite ca tranzacțiile " -"individuale\n" -"generate să poată fi modificate." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Mâine" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Tranzacție" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Tranzacții" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Tranzacții fără grup" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Transferă din {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Transferă către {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Victor Mihalache " - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Peste două luni" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Gen" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Exportul în fișierul de cont a eșuat." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -#, fuzzy -msgid "Currency Converter" -msgstr "Codul monedei" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" diff --git a/NickvisionMoney.Shared/Resources/po/ru.po b/NickvisionMoney.Shared/Resources/po/ru.po deleted file mode 100644 index ebf48c4ae..000000000 --- a/NickvisionMoney.Shared/Resources/po/ru.po +++ /dev/null @@ -1,1834 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-09-08 14:21+0000\n" -"Last-Translator: Fyodor Sobolev \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Копия)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} в {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} метка" -msgstr[1] "{0} метки" -msgstr[2] "{0} меток" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} транзакция" -msgstr[1] "{0} транзакции" -msgstr[2] "{0} транзакций" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Имя счёта" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Имя счёта (Занято)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Имя счёта (Открыт)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Настройки счёта" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Тип счёта" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Добавить" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Добавьте транзакцию или импортируйте транзакции из файла." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "Зашифровать PDF паролем?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Все файлы" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Сумма" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Сумма (Некорректная)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Применить" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Вы уверены, что хотите удалить эту группу?\n" -"Это действие необратимо." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Вы уверены, что хотите удалить эту транзакцию?\n" -"Это действие необратимо." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Бизнес" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Невозможно получить доступ к папке, проверьте разрешения Flatpak." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Отмена" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Изменить пароль" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Расчётный" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Закрыть" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Соавторы на GitHub ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Валюта" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Код валюты" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Код валюты (Пусто)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Символ валюты" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Символ валюты (Пустой)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Символ валюты (Некорректный)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Дата" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "Давид Лапшин" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Десятичный разделитель" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Десятичный разделитель (Пустой)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Десятичный разделитель (Некорректный)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Удалить существующие" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Удалить группу" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Удалить только источник" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Удалить всё" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "Удалить транзакцию" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Описание" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Описание (Пусто)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Целевой счёт" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Целевой счёт (Некорректный)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Пароль целевого счёта" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Пароль целевого счёта (Некорректный)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Пароль целевого счёта (Требуется)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Отвязать существующие" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Ошибка" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Расходы" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Экспорт в файл" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Счёт успешно экспортирован в файл." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Фёдор Соболев" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Файл создан: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "Репозиторий GitHub" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Добрый день!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "Здравствуйте!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Добрый вечер!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Группа" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Имя группы" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Разделитель групп разрядов" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Разделитель групп разрядов (Некорректный)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Группы" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Справка" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Номер" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Импорт из счёта" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Импорт из файла" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "Импортировано {0} транзакция из файла." -msgstr[1] "Импортировано {0} транзакции из файла." -msgstr[2] "Импортировано {0} транзакций из файла." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Доходы" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Управляйте своими личными финансами" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix Чат" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "Н/Д" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Имя" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Имя (Пусто)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Имя (Занято)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Никогда" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Счёт Nickvision Denaro" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Нет" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Без даты окончания" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Нет транзакций" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Не найдено транзакций" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Нет транзакций, соответствующих заданным фильтрам." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Заметки" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Нечего импортировать из файла." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Через месяц" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Через неделю" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Открыть" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Открыть счёт" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Обзор" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Страница {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "Пароль PDF" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Чек" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Чек (Файл недоступен)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Чеки" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Дата окончания повтора" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Дата окончания повтора (Некорректная)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Интервал повтора" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Изменение интервала повтора" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Результат скопирован в буфер обмена." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Сберегательный" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Выбрать счёт" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Выбрать папку для резервных копий" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Выбрать папку" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Сортировать по сумме" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Сортировать по дате" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Сортировать по номеру" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Метки" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Пароль счёта был изменён." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Пароль счёта был удалён." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Пароль будет удалён после закрытия этого диалога." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Пароли не совпадают." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Интервал повтора был изменён.\n" -"Что вы хотите сделать с существующими повторяющимися тразакциями?\n" -"\n" -"Новые повторяющиеся транзакции будут сгенерированы с использованием нового " -"интервала." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "На этом счёте нет средств для перевода." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Этот счёт уже открыт." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Эта транзакция является источником повторяющихся транзакций.\n" -"Что вы хотите сделать с повторяющимися тразакциями?\n" -"\n" -"Удаление только источника позволит изменять\n" -"сгенерированные транзакции индивидуально." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Эта транзакция является источником повторяющихся транзакций.\n" -"Что вы хотите сделать с повторяющимися тразакциями?\n" -"\n" -"Применение изменений только к источнику отвяжет\n" -"от него сгенерированные транзакции." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Завтра" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Сумма" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "Транзакция" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Транзакции" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Транзакции без группы" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Перевод из {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Перевод на {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "Фёдор Соболев https://github.com/fsobolev" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Через два месяца" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Тип" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Невозможно экспортировать счёт в файл." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Невозможно импортировать данные из файла. Убедитесь, что у приложения есть " -"необходимые разрешения и попробуйте снова." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "Невозможно импортировать транзакции из файла." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Невозможно загрузить данные о валютах. Пожалуйста, попробуйте снова. Если " -"ошибка не проходит, сообщите о ней." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Невозможно открыть счёт. Неправильный пароль." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Невозможно открыть счёт. Убедитесь, что у приложения есть необходимые " -"разрешения и попробуйте снова." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Невозможно перезаписать существующий счёт." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Невозможно перезаписать открытый счёт." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Несгруппированные" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Без меток" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Грядущие транзакции" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Применить только к источнику" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Применить ко всем" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "Изменение транзакции" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Загрузить" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Просмотр" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"Хотите ли вы защитить PDF-файл с помощью пароля?\n" -"\n" -"Если пароль будет утерян, содержимое файла будет недоступно." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Да" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Ваша система сообщила, что ваша валюта" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Доброе утро!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Доброй ночи!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Назад" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Тип транзакций по умолчанию" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "Порог напоминаний для транзакций" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "За день" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "За неделю" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "За месяц" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "За два месяца" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Управляйте валютой, используемой для этого счёта." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Установите новый пароль или удалите существующий." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Использовать свою валюту" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Стиль отображения сумм" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Другой" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Отсутствует" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Цифры в дробной части" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "Две" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Три" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Четыре" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Пять" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Шесть" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Неограниченно" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Новый пароль" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Повторите новый пароль" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Надёжность пароля" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Если вы забудете пароль, данные будет невозможно восстановить!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Удалить" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Перевод средств" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Экспортировать всю информацию" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Экспортировать текущий вид" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Поиск по описанию" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Обзор на сегодня" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Напоминания" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Действия" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Выбрать все фильтры обзора" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Новая группа (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Новая" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Переключить отображение групп" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Выбрать все фильтры групп" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Снять выделение фильтров групп" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Переключить отображение меток" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Выбрать все фильтры меток" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Снять выделение фильтров меток" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Календарь" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Выбрать текущий месяц" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Сбросить на сегодняшний день" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Сегодня" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Выбрать период" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Начало" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Конец" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Визуализация" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Далее" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Сортировать от первой к последней" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Сортировать от последней к первой" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Новая транзакция (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Новая" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Предложения" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Конвертер" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Поменять валюты местами" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Поменять местами" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Загрузка..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Исходная валюта" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Результат" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Скопировать результат" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Все счета" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Цвет" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Удалить" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Редактировать группу" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Новый счёт" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" -"Используйте этот мастер настройки, чтобы извлечь максимум пользы из вашего " -"счёта" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Давайте начнём" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Место сохранения" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Пароль счёта (Необязательно)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Папка" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Перезаписывать существующие счета" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Настройки счёта" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Это лишь вспомогательная метка, которая не влияет на работу приложения." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Валюта счёта" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Импорт существующей информации" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "Загрузите файл для импорта существующей информации в новый счёт." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Импортируемый файл" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Выбрать файл" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Сбросить файл" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Создать" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Введите пароль, чтобы открыть счёт:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Пароль" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Разблокировать" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Параметры" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Интерфейс" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Тема" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Светлая" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Тёмная" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Системная" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Цвета" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Настройте цвета, используемые приложением." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Цвет транзакции по умолчанию" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "Изменение этой настройки затронет только новые транзакции." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Цвет перевода средств по умолчанию" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Изменение этой настройки затронет только новые переводы." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Цвет группы по умолчанию" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Изменение этой настройки затронет только новые группы." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Цвет расчётного счёта" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Цвет сберегательного счёта" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Цвет бизнес счёта" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Региональные настройки" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Использовать местные цифры" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Должно ли приложение использовать цифры, родные для вашего региона, вместо " -"арабских цифр." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Вставка десятичного разделителя" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Установите, нажатия каких кнопок будут вставлять десятичный разделитель в " -"поля сумм." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Выключено" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Только точка на Numpad" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Точка и запятая" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Резервные копии" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "Папка резервных копий CSV" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Счета, не зашифрованные паролем, будут автоматически экспортироваться в CSV " -"в указанную папку после каждого изменения." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Сбросить папку для резервных копий" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Нет напоминаний" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Счёт" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Закрыть счёт" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Перевод средств" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Новая группа" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Новая транзакция" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Приложение" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Комбинации клавиш" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Переключить отображение боковой панели" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Выход" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Создать копию" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Очистить дату окончания" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Ежедневно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Еженедельно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "Раз в две недели" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Ежемесячно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Ежеквартально" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Ежегодно" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "Раз в два года" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Использовать цвет группы" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Использовать собственный цвет" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Введите новое имя метки..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Добавить метку" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Прочее" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "Управление дополнительными данными транзакции." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Введите здесь ваши заметки" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "Редактировать транзакцию" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Перевод средств создаст расходную транзакцию на указанную сумму на этом " -"счёте и доходную транзакцию на указанную сумму на целевом счёте." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Счёт не выбран" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Выберите целевой счёт" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Недавние счета" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Недавние" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Требуется конвертация" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Указать свой курс валют" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Введите курс валют для конвертации" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Перевести" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Конвертер валют" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "О приложении" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Меню счёта" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Новый счёт (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Новый" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Открыть счёт (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Нет недавних счетов" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Переключить отображение графиков" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Главное меню" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Обзор" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Создайте или откройте счёт, чтобы начать. Вы также можете перетащить файл " -"счёта из файлового менеджера." - -#~ msgid "result" -#~ msgstr "результат" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "деньги;финансы;кошелёк;наличные;банк;Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Управляйте несколькими счетами одновременно, используя знакомый " -#~ "интерфейс с вкладками" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— С лёгкостью фильтруйте транзакции по типу, группе или дате" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "" -#~ "— Создавайте повторяющиеся транзакции, например для счетов, которые " -#~ "приходят каждый месяц" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Переводите средства с одного счёта на другой" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Экспортируйте данные в CSV и импортируйте из CSV, OFX или QIF файла для " -#~ "массового добавления транзакций" - -#~ msgid "OK" -#~ msgstr "ОК" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "Пожалуйста, подождите окончания импорта транзакций..." - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "" -#~ "Невозможно импортировать данные из файла. Неподдерживаемый тип файла." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Фёдор Соболев {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Настройте интерфейс приложения." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Выберите, как Denaro будет использовать региональные настройки." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Настройте создание резервных копий для счетов Denaro." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Другой" - -#~ msgid "Enter symbol here" -#~ msgstr "Введите символ здесь" - -#~ msgid "Enter code here" -#~ msgstr "Введите код здесь" - -#~ msgid "Save" -#~ msgstr "Сохранить" - -#~ msgid "Hide" -#~ msgstr "Скрыть" - -#~ msgid "Show" -#~ msgstr "Показать" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Сбросить фильтры дат" - -#~ msgid "Delete Group?" -#~ msgstr "Удалить группу?" - -#~ msgid "Delete Transaction?" -#~ msgstr "Удалить транзакцию?" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Настройки счёта" - -#~ msgid "Version: {0}" -#~ msgstr "Версия: {0}" - -#~ msgid "About {0}" -#~ msgstr "О приложении" - -#~ msgid "Changelog" -#~ msgstr "Список изменений" - -#~ msgid "Credits" -#~ msgstr "Авторы" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Соавторы на GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Фёдор Соболев https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Переводчики на Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/\n" -#~ "Фёдор Соболев https://hosted.weblate.org/user/fsobolev/" - -#~ msgid "Home" -#~ msgstr "Домашняя страница" - -#~ msgid "Settings" -#~ msgstr "Настройки" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Перевод средств (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Импорт из файла (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Фильтры" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "Импортировано транзакций из файла: {0}." - -#~ msgid "Enter name here" -#~ msgstr "Введите имя" - -#~ msgid "Enter description here" -#~ msgstr "Введите описание" - -#~ msgid "Enter amount here" -#~ msgstr "Введите сумму" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Управляйте несколькими счетами одновременно, используя привычный " -#~ "интерфейс с вкладками\n" -#~ "— Легко сортируйте транзакции по типу, группе или дате\n" -#~ "— Создавайте повторяющиеся транзакции, например, по ежемесячным платежам\n" -#~ "— Переводите деньги с одного счёта на другой\n" -#~ "— Экспортируйте данные в файл CSV и импортируйте из CSV, OFX или QIF " -#~ "файла для массового добавления транзакций на счёт" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Счёт Money (*.nmoney)" - -#~ msgid "Report a Bug" -#~ msgstr "Сообщить об ошибке" - -#~ msgid "Discussions" -#~ msgstr "Обсуждения" - -#~ msgid "Hide Groups" -#~ msgstr "Скрыть группы" - -#~ msgid "Show Groups" -#~ msgstr "Показать группы" - -#~ msgid "New Window" -#~ msgstr "Новое окно" - -#~ msgid "Enter password here" -#~ msgstr "Введите пароль" - -#~ msgid "Accounts" -#~ msgstr "Счета" - -#~ msgid "Transaction ({0})" -#~ msgstr "Транзакция ({0})" - -#~ msgid "Reset All Filters" -#~ msgstr "Сбросить все фильтры" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Настройки счёта (Ctrl+.)" - -#~ msgid "Sort" -#~ msgstr "Сортировать" - -#~ msgid "Sort By" -#~ msgstr "Свойство" - -#~ msgid "Enter group separator" -#~ msgstr "Введите разделитель групп разрядов" - -#~ msgid "No Backup Folder" -#~ msgstr "Папка не указана" - -#~ msgid "Enter decimal separator" -#~ msgstr "Введите десятичный разделитель" - -#~ msgid "Transactions ({0})" -#~ msgstr "Транзакции ({0})" - -#~ msgid "Order By" -#~ msgstr "Порядок" - -#~ msgid "Increasing" -#~ msgstr "По возрастанию" - -#~ msgid "Decreasing" -#~ msgstr "По убыванию" diff --git a/NickvisionMoney.Shared/Resources/po/sv.po b/NickvisionMoney.Shared/Resources/po/sv.po deleted file mode 100644 index fcf35bcd8..000000000 --- a/NickvisionMoney.Shared/Resources/po/sv.po +++ /dev/null @@ -1,1655 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Copy)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, fuzzy, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "Transaktioner" -msgstr[1] "Transaktioner" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -#, fuzzy -msgid "Account Name" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -#, fuzzy -msgid "Account Name (Exists)" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -#, fuzzy -msgid "Account Name (Opened)" -msgstr "Konto" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -#, fuzzy -msgid "Account Settings" -msgstr "Inställningar" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -#, fuzzy -msgid "Account Type" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Add" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Alla filer" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -#, fuzzy -msgid "Amount" -msgstr "Konto" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Tillämpa" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "Avbryt" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Change Password" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Stäng" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -#, fuzzy -msgid "Decimal Separator" -msgstr "Insert Decimal Separator" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -#, fuzzy -msgid "Decimal Separator (Empty)" -msgstr "Insert Decimal Separator" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -#, fuzzy -msgid "Decimal Separator (Invalid)" -msgstr "Insert Decimal Separator" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -#, fuzzy -msgid "Delete Existing" -msgstr "Ny Transaktion" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -#, fuzzy -msgid "Delete Group" -msgstr "Ny Grupp" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -#, fuzzy -msgid "Delete Transaction" -msgstr "Ny Transaktion" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -#, fuzzy -msgid "Destination Account" -msgstr "Destination Account Password" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -#, fuzzy -msgid "Destination Account (Invalid)" -msgstr "Destination Account Password (Invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Destination Account Password" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Destination Account Password (Invalid)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Destination Account Password (Required)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Kostnad" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Exportera till Fil" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub Repo" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "God Eftermiddag!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "God Dag!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "Go kväll!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -#, fuzzy -msgid "Group" -msgstr "Grupper" - -#: ../../../Models/Account.cs:1721 -#, fuzzy -msgid "Group Name" -msgstr "Grupper" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Grupper" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Hjälp" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -#, fuzzy -msgid "Import from Account" -msgstr "Importera från Fil" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Importera från Fil" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "" -msgstr[1] "" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Inkomst" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix Chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -#, fuzzy -msgid "Nickvision Denaro Account" -msgstr "Inga Senaste Konton" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Nej" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "Inga Transaktioner" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "Hittade Inga Transaktioner" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Öppna" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Öppna ett konto" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Översikt" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -#, fuzzy -msgid "PDF Password" -msgstr "Password" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -#, fuzzy -msgid "Savings" -msgstr "Inställningar" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -#, fuzzy -msgid "Select Account" -msgstr "Senaste Konton" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "The password of the account was changed." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "The password of the account was removed." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "The password will be removed upon closing this dialog." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -#, fuzzy -msgid "The passwords do not match." -msgstr "The password of the account was changed." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Detta konto är redan öppet." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Total" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -#, fuzzy -msgid "Transaction" -msgstr "Transaktioner" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "Transaktioner" - -#: ../../../Models/Account.cs:472 -#, fuzzy -msgid "Transactions without a group" -msgstr "Hittade Inga Transaktioner" - -#: ../../../Controllers/AccountViewController.cs:903 -#, fuzzy, csharp-format -msgid "Transfer From {0}" -msgstr "Överför Pengar" - -#: ../../../Controllers/AccountViewController.cs:875 -#, fuzzy, csharp-format -msgid "Transfer To {0}" -msgstr "Överför Pengar" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -#, fuzzy -msgid "Unable to export account to file." -msgstr "Kan inte skriva över ett öppet konto." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -#, fuzzy -msgid "Unable to import transactions from the file." -msgstr "Kan inte skriva över ett öppet konto." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Kan inte logga in till konto. Tilldelat lösenord är fel." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -#, fuzzy -msgid "Unable to overwrite an existing account." -msgstr "Kan inte skriva över ett öppet konto." - -#: ../../../Controllers/MainWindowController.cs:269 -#, fuzzy -msgid "Unable to overwrite an opened account." -msgstr "Kan inte skriva över ett öppet konto." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -#, fuzzy -msgid "Upcoming transactions" -msgstr "Inga Transaktioner" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -#, fuzzy -msgid "Update Transaction" -msgstr "Ny Transaktion" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Ja" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "God Morgon!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "God Morgon!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Tillbaka" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -#, fuzzy -msgid "Default Transaction Type" -msgstr "Ny Transaktion" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Set a new password or remove one." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "New Password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Confirm Password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -#, fuzzy -msgid "Password Strength" -msgstr "Password" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "If the password is lost, there is no way to restore your account!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Ta bort" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Överför Pengar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -#, fuzzy -msgid "Export Current View" -msgstr "Exportera till Fil" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Dagens Översikt" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Handlingar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Ny Grupp (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "Ny" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Ny Transaktion (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "Ny" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "Senaste Konton" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -#, fuzzy -msgid "All Accounts" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -#, fuzzy -msgid "Edit Group" -msgstr "Ny Grupp" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Nytt Konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -#, fuzzy -msgid "Account Password (Optional)" -msgstr "Destination Account Password (Invalid)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -#, fuzzy -msgid "Overwrite Existing Accounts" -msgstr "Destination Account Password" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "Inställningar" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -#, fuzzy -msgid "Account Currency" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -#, fuzzy -msgid "Import File" -msgstr "Importera från Fil" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Enter Password To Login:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Password" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Unlock" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Preferenser" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -#, fuzzy -msgid "Checking Account Color" -msgstr "Öppna ett konto (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Locale" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Insert Decimal Separator" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -#, fuzzy -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Off" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Numpad period only" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Period and Comma" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -#, fuzzy -msgid "Backup" -msgstr "Tillbaka" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -#, fuzzy -msgid "Close Account" -msgstr "Nytt Konto" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -#, fuzzy -msgctxt "Title" -msgid "Transfer" -msgstr "Överför Pengar" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Ny Grupp" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Ny Transaktion" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -#, fuzzy -msgid "Application" -msgstr "Handlingar" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Tangentbordsgenvägar" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Quit" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Make a Copy" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -#, fuzzy -msgid "Enter notes here" -msgstr "Enter password here" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -#, fuzzy -msgid "Edit Transaction" -msgstr "Transaktioner" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -#, fuzzy -msgid "No Account Selected" -msgstr "Inget konto är öppnat" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -#, fuzzy -msgid "Select a destination account" -msgstr "Destination Account Password" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Senaste Konton" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -#, fuzzy -msgid "Recents" -msgstr "Senaste Konton" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -#, fuzzy -msgctxt "Button" -msgid "Transfer" -msgstr "Överför Pengar" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -#, fuzzy -msgid "Account Menu" -msgstr "Konto" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Nytt Konto (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "Ny" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Öppna ett konto (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -#, fuzzy -msgid "No Recent Accounts" -msgstr "Senaste Konton" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Skapa eller öppna ett konto för att börja. Du kan också dra in en fil från " -"din filhanterare." - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Customize how Denaro uses locale settings." - -#, fuzzy -#~ msgid "Enter symbol here" -#~ msgstr "Enter password here" - -#, fuzzy -#~ msgid "Enter code here" -#~ msgstr "Enter password here" - -#~ msgid "Save" -#~ msgstr "Spara" - -#, fuzzy -#~ msgid "Delete Group?" -#~ msgstr "Ny Grupp" - -#, fuzzy -#~ msgid "Delete Transaction?" -#~ msgstr "Ny Transaktion" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Inställningar" - -#~ msgid "Version: {0}" -#~ msgstr "Version: {0}" - -#~ msgid "About {0}" -#~ msgstr "Om {0}" - -#~ msgid "Changelog" -#~ msgstr "Vad är nytt" - -#~ msgid "Report a Bug" -#~ msgstr "Rapportera en Bugg" - -#~ msgid "Discussions" -#~ msgstr "Diskussioner" - -#~ msgid "Credits" -#~ msgstr "Tack till" - -#~ msgid "Home" -#~ msgstr "Hem" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Överför Pengar (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Importera från Fil (Ctrl+I)" diff --git a/NickvisionMoney.Shared/Resources/po/ta.po b/NickvisionMoney.Shared/Resources/po/ta.po deleted file mode 100644 index 46bfcdf8e..000000000 --- a/NickvisionMoney.Shared/Resources/po/ta.po +++ /dev/null @@ -1,1538 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: ta\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "" -msgstr[1] "" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" diff --git a/NickvisionMoney.Shared/Resources/po/tr.po b/NickvisionMoney.Shared/Resources/po/tr.po deleted file mode 100644 index 4a7138454..000000000 --- a/NickvisionMoney.Shared/Resources/po/tr.po +++ /dev/null @@ -1,1856 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2023-09-10 21:21+0000\n" -"Last-Translator: Sabri Ünal \n" -"Language-Team: Turkish \n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0.1-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(Kopya)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} / {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0} etiket" -msgstr[1] "{0} tags" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0} işlem" -msgstr[1] "{0} işlem" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "Hesap Adı" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "Hesap Adı (Var)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "Hesap Adı (Açıldı)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "Hesap Ayarları" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "Hesap Türü" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "Ekle" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "Yeni bir işlem ekleyin veya bir dosyadan işlemleri içe aktarın." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "PDFʼye Parola Eklensin mi?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "Tüm dosyalar" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "Tutar" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "Tutar (Geçersiz)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "Uygula" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"Bu grubu silmek istediğinizden emin misiniz?\n" -"Bu eylem geri alınamaz." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"Bu işlemi silmek istediğinizden emin misiniz?\n" -"Bu eylem geri alınamaz." - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "Kurumsal" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "Seçili klasöre erişilemiyor, Flatpak izinlerini denetleyin." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "İptal Et" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "Parola Değiştir" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "Çek" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "Kapat" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "Github Katkıcıları ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "Para Birimi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "Para Birimi Kodu" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "Para Birimi Kodu (Boş)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "Para Birimi Simgesi" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "Para Birimi Simgesi (Boş)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "Para Birimi Simgesi (Geçersiz)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "Tarih" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "Ondalık Ayırıcı" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "Ondalık Ayırıcı (Boş)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "Ondalık Ayırıcı (Geçersiz)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "Mevcut Olanı Sil" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "Grubu Sil" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "Yalnızca Kaynağı Sil" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "Kaynağı ve Oluşturulanı Sil" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "İşlemi Sil" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "Açıklama" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "Açıklama (Boş)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "Hedef Hesap" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "Hedef Hesap (Geçersiz)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "Hedef Hesap Parolası" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "Hedef Hesap Parolası (Geçersiz)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "Hedef Hesap Parolası (Gerekli)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "Mevcut İlişkiyi Kes" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "Hata" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "Gider" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "Dosyaya Dışa Aktar" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "Hesap dosyaya başarıyla dışa aktarıldı." - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "Oluşturuldu: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub Deposu" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "Tünaydın!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "İyi Günler!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "İyi Akşamlar!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "Grup" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "Grup Adı" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "Grup Ayırıcı" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "Grup Ayırıcı (Geçersiz)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "Gruplar" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "Yardım" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "Id" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "Hesaptan İçe Aktar" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "Dosyadan İçe Aktar" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "{0} işlem dosyadan içe aktarıldı." -msgstr[1] "{0} işlem dosyadan içe aktarıldı." - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "Gelir" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "Kişisel mali durumunuzu yönetin" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix Chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "Yok" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "Ad" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "Ad (Boş)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "Ad (Var)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "Asla" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision Denaro Hesabı" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "Hayır" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "Bitiş Tarihi Yok" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "İşlem Yok" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "İşlem Bulunamadı" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "Hiçbir işlem belirtilen süzgeçlerle eşleşmiyor." - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "Notlar" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "Dosyadan içe aktarılacak bir şey yok." - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "Bu günden, bir ay sonra" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "Bu günden, bir hafta sonra" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "Aç" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "Hesap Aç" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "Genel Görünüm" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "Sayfa {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF Parolası" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "Makbuz" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "Makbuz (Dosyaya Erişilemez)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "Makbuzlar" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "Tekrarlama Bitiş Tarihi" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "Tekrarlama Bitiş Tarihi (Geçersiz)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "Tekrarlama Aralığı" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "Tekrarlama Aralığı Değiştirildi" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "Sonuç panoya kopyalandı." - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "Tasarruf" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "Hesap Seç" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "Yedekleme Klasörü Seç" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "Klasör Seç" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "Tutara Göre Sırala" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "Tarihe Göre Sırala" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "Kimliğe Göre Sırala" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "Etiketler" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "Hesabın parolası değiştirildi." - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "Hesabın parolası kaldırıldı." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "Bu iletişim kutusu kapatıldıktan sonra şifre kaldırılacaktır." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "Parolalar eşleşmiyor." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"Tekrarlama aralığı değiştirildi.\n" -"Mevcut oluşturulmuş işlemlerle ne yapmak istersiniz?\n" -"\n" -"Yeni aralık baz alınarak yeni tekrarlama işlemleri oluşturulacaktır." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "Bu hesapta aktarılacak para yok." - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "Bu hesap zaten açıldı." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"Bu işlem bir kaynak tekrarlama işlemidir.\n" -"Tekrarlanan işlemlerle ne yapmak istersiniz?\n" -"\n" -"Yalnızca kaynak işlemin silinmesi, bireysel olarak oluşturulan\n" -"işlemlerin düzenlenebilir olmasını sağlayacaktır." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"Bu işlem bir kaynak tekrarlama işlemidir.\n" -"Tekrarlanan işlemlerle ne yapmak istersiniz?\n" -"\n" -"Yalnızca kaynak işlemin güncellenmesi, \n" -"oluşturulan işlemlerin kaynakla ilişkisini kesecektir." - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "Yarın" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "Toplam" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "İşlem" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "İşlemler" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "Grupsuz işlemler" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "Şuradan Aktar: {0}" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "Şuraya Aktar: {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" -"Sabri Ünal \n" -"Weblate Üstünden Katkı Sağlayan Gönüllüler" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "Bu günden, iki ay sonra" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "Tür" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "Hesap dosyaya dışa aktarılamıyor." - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" -"Dosyadan bilgiler içe aktarılamıyor. Lütfen uygulamanın dosyaya erişim izni " -"olduğundan emin olun ve tekrar deneyin." - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "İşlemler dosyadan içe aktarılamıyor." - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" -"Para birimi verileri yüklenemedi. Lütfen tekrar deneyin. Hata devam ediyorsa " -"hatayı bildirin." - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "Hesaba giriş yapılamıyor. Sağlanan parola geçersiz." - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" -"Hesap açılamıyor. Uygulamanın dosyaya erişim izni olduğundan emin olun ve " -"tekrar deneyin." - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "Var olan hesabın üzerine yazılamıyor." - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "Açılmış bir hesabın üzerine yazılamıyor." - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "Grupsuz" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "Etiketsiz" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "Yaklaşan işlemler" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "Yalnızca Kaynağı Güncelle" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "Kaynağı ve Oluşturulanı Güncelle" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "İşlemi Güncelle" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "Yükle" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "Görünüm" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"PDF dosyasını parola ile korumak ister misiniz?\n" -"\n" -"Parola kaybedilirse PDFʼye erişilemez." - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "Evet" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "Sisteminiz para biriminizin şu olduğunu bildirdi" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "Günaydın!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "Günaydın!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "Geri" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "Öntanımlı İşlem Türü" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "İşlem Hatırlatma Eşiği" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "Bir Gün Önce" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "Bir Hafta Önce" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "Bir Ay Önce" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "İki Ay Önce" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "Hesap tarafından kullanılan para birimini yönetin." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "Yeni bir parola belirleyin veya birini kaldırın." - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "Özel Para Birimi Kullan" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "Miktar Gösterim Biçimi" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "Diğer" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "Hiçbiri" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "Ondalık Basamaklar" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "İki" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "Üç" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "Dört" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "Beş" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "Altı" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "Sınırsız" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "Yeni Parola" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "Parolayı Onayla" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "Parola Kuvveti" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "Parola kaybolursa, dosyayı geri yüklemenin bir yolu yoktur!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "Kaldır" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "Para Aktarımı" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "Tüm Bilgileri Dışa Aktar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "Geçerli Görünümü Dışa Aktar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "Açıklamaya göre ara" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "Bugünün Genel Görünümü" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "Hatırlatıcılar" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "Eylemler" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "Tüm Genel Görünüm Süzgeçlerini Seç" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "Yeni Grup (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "Yeni" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "Grupların Görünürlüğünü Değiştir" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "Tüm Grup Süzgeçlerini Seç" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "Tüm Grup Süzgeçlerinin Seçimini Kaldır" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "Etiketlerin Görünürlüğünü Değiştir" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "Tüm Etiket Süzgeçlerini Seç" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "Etiket Süzgeçlerinin Seçimini Kaldır" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "Takvim" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "Geçerli Ayı Seç" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "Bugüne Sıfırla" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "Bugün" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "Aralık Seç" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "Başlangıç" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "Bitiş" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "Görselleştir" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "Sonraki" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "Baştan Sona Sırala" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "Sondan Başa Sırala" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "Yeni İşlem (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "Yeni" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "Öneriler" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "Dönüştürücü" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "Para birimleri arasında geçiş yap" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "Geçiş yap" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "Yükleniyor..." - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "Kaynak" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "Sonuç" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "Sonuç Miktarı Kopyala" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "Tüm Hesaplar" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "Renk" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "Sil" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "Grubu Düzenle" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "Yeni Hesap" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "Hesabınızdan en iyi şekilde yararlanmak için bu sihirbazı kullanın" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "Hadi Başlayalım" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "Depolama Konumu" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "Hesap Parolası (İsteğe bağlı)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "Klasör" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "Var Olan Hesapların Üzerine Yaz" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "Hesap Seçenekleri" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" -"Bu sadece uygulamanın nasıl çalıştığını etkilemeyen kullanışlı bir etikettir." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "Hesap Para Birimi" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "Var Olan Bilgileri İçe Aktar" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" -"Var olan bilgileri yeni hesaba içe aktarmak için kullanılacak geçerli bir " -"dosya yükleyin." - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "Dosya İçe Aktar" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "Dosya Seç" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "Dosya Temizle" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "Oluştur" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "Giriş Yapmak İçin Parolayı Girin:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "Parola" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "Kilidi Aç" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "Tercihler" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "Kullanıcı Arayüzü" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "Tema" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "Açık" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "Koyu" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "Sistem" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "Renkler" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "Denaro tarafından kullanılan renkleri özelleştirin." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "Öntanımlı İşlem Rengi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" -"Bu ayardaki bir değişiklik yalnızca yeni eklenen işlemlere uygulanacaktır." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "Öntanımlı Aktarım Rengi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "Bu ayardaki bir değişiklik yalnızca yeni aktarımlara uygulanacaktır." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "Öntanımlı Grup Rengi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "Bu ayardaki bir değişiklik yalnızca yeni gruplara uygulanacaktır." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "Çek Hesabı Rengi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "Tasarruf Hesabı Rengi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "Kurumsal Hesap Rengi" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "Yerel" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "Yerel Rakamları Kullan" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" -"Latin rakamları yerine yerel ayarınız için yerel olan rakamların kullanılıp " -"kullanılmayacağı." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "Ondalık Ayırıcı Ekle" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" -"Yerel ayarın ondalık ayırıcısının bir tutar alanına hangi tuşlara " -"basıldığında ekleneceğini ayarlayın." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "Kapalı" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "Sayısal klavye noktası" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "Nokta ve Virgül" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "Yedekleme" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "CSV Yedekleme Klasörü" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" -"Şifrelenmemiş hesaplar, bir değişiklik yapıldığında kendiliğinden CSV " -"dosyaları olarak bu klasöre dışa aktarılır." - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "Yedekleme Klasörünü Temizle" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "Hatırlatıcı Yok" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "Hesap" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "Hesabı Kapat" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "Aktar" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "Yeni Grup" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "Yeni İşlem" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "Uygulama" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "Klavye Kısayolları" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "Kenar Çubuğunu Aç/Kapa" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "Çık" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "Kopya Oluştur" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "Temizleme Bitiş Tarihi" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "Günlük" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "Haftalık" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "İki Haftada Bir" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "Aylık" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "Üç Aylık" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "Yıllık" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "İki Yılda Bir" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "Grup rengini kullan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "Benzersiz renk kullan" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "Yeni etiket adı gir..." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "Etiket Ekle" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "Ekler" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "İşlemin ek alanlarını yönetin." - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "Notları buraya girin" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "İşlemi Düzenle" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" -"Para aktarımı, bu hesapta verilen tutarda bir gider işlemi ve aktarılacak " -"hesapta verilen tutarda bir gelir işlemi oluşturacaktır." - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "Hesap Seçilmedi" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "Hedef hesabı seçin" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "Son Hesaplar" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "Son Kullanılanlar" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "Dönüşüm Gerekli" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "Özel Oran Kullan" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "Dönüşüm oranını elle girin" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "Aktar" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "Para Birimi Dönüştürücü" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "Denaro Hakkında" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "Hesap Menüsü" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "Yeni Hesap (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "Yeni" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "Hesap Aç (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "Son Hesap Yok" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "Grafikleri Aç/Kapa" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "Ana Menü" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "Tablo" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" -"Başlamak için bir hesap oluşturun veya açın. Bir dosyayı dosya " -"tarayıcınızdan uygulamaya da sürükleyebilirsiniz." - -#~ msgid "result" -#~ msgstr "sonuç" - -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "" -#~ "para;finans;cüzdan;nakit;banka;Nickvision;money;finance;wallet;cash;bank;" -#~ "Nickvision;" - -#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" -#~ msgstr "" -#~ "— Tanıdık bir sekme arayüzü ile aynı anda birden fazla hesabı yönetin" - -#~ msgid "— Easily filter transactions by type, group, or date" -#~ msgstr "— İşlemleri türe, gruba veya tarihe göre kolayca süzün" - -#~ msgid "— Easily repeat transactions, such as bills that occur every month" -#~ msgstr "— Her ay gerçekleşen faturalar gibi işlemleri kolayca tekrarlayın" - -#~ msgid "— Transfer money from one account to another" -#~ msgstr "— Bir hesaptan diğerine para aktarın" - -#~ msgid "" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "— Hesabı CSV dosyası olarak dışa aktarın ya da hesaba toplu işlem eklemek " -#~ "için CSV, OFX veya QIF dosyası kullanın" - -#~ msgid "OK" -#~ msgstr "Tamam" - -#~ msgid "Unable to import information from the file. Unsupported file type." -#~ msgstr "Dosyadan bilgiler içe aktarılamadı. Desteklenmeyen dosya türü." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Nickvision" -#~ msgstr "Nickvision" - -#~ msgid "Customize the application's user interface." -#~ msgstr "Uygulamanın kullanıcı arayüzünü özelleştir." - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Denaroʼnun yerel ayarları nasıl kullanacağını özelleştirin." - -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "Denaro hesapları için yedekleme konumlarını özelleştirin." - -#~ msgctxt "GroupSeparator" -#~ msgid "Other" -#~ msgstr "Diğer" - -#~ msgid "Enter symbol here" -#~ msgstr "Simgeyi buraya girin" - -#~ msgid "Enter code here" -#~ msgstr "Kodu buraya girin" - -#~ msgid "Save" -#~ msgstr "Kaydet" - -#~ msgid "Hide" -#~ msgstr "Gizle" - -#~ msgid "Show" -#~ msgstr "Göster" - -#~ msgid "Reset Dates Filters" -#~ msgstr "Tarih Süzgeçlerini Sıfırla" - -#~ msgid "Delete Group?" -#~ msgstr "Grup Silinsin mi?" - -#~ msgid "Delete Transaction?" -#~ msgstr "İşlem Silinsin mi?" - -#~ msgid "" -#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " -#~ "locales" -#~ msgstr "" -#~ "- Yapılandırılmamış yerel ayarlara sahip sistemlerde Denaro'nun çökmesine " -#~ "neden olan bir sorun düzeltildi" - -#~ msgid "" -#~ "- Fixed an issue where PDF exporting failed for accounts with many " -#~ "receipts" -#~ msgstr "" -#~ "- Çok sayıda makbuz içeren hesaplar için PDF dışa aktarmanın başarısız " -#~ "olmasına neden olan bir sorun düzeltildi" - -#~ msgid "" -#~ "- Fixed an issue where a group's filter was reactivated when a " -#~ "transaction was added to that group" -#~ msgstr "" -#~ "- Bir gruba bir işlem eklendiğinde grubun süzgecinin yeniden " -#~ "etkinleştirilmesine neden olan bir sorun düzeltildi" - -#~ msgid "" -#~ "- Error messages will be shown if Denaro attempts to access inaccessible " -#~ "files instead of crashing" -#~ msgstr "" -#~ "- Denaro erişilemeyen dosyalara erişmeye çalışırsa çökmek yerine artık " -#~ "hata mesajları gösteriliyor" - -#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" -#~ msgstr "- Güncellenmiş çeviriler (Weblate'deki herkese teşekkürler)!" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Hesap Ayarları" - -#~ msgid "Version: {0}" -#~ msgstr "Sürüm: {0}" - -#~ msgid "About {0}" -#~ msgstr "{0} Hakkında" - -#~ msgid "Changelog" -#~ msgstr "Değişim günlüğü" - -#~ msgid "Report a Bug" -#~ msgstr "Hata Raporla" - -#~ msgid "Discussions" -#~ msgstr "Tartışmalar" - -#~ msgid "Credits" -#~ msgstr "Geliştirenler" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "GitHub Katkıcıları ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" - -#~ msgid "" -#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" -#~ msgstr "" -#~ "Weblateʼteki Çevirmenler ❤️ https://hosted.weblate.org/projects/nickvision-" -#~ "money/app/" - -#~ msgid "Home" -#~ msgstr "Ev" - -#~ msgid "Settings" -#~ msgstr "Ayarlar" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "Para Aktarımı (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "Dosyadan İçe Aktar (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "Süzgeçler" - -#~ msgid "Hide Groups" -#~ msgstr "Grupları Gizle" - -#~ msgid "Show Groups" -#~ msgstr "Grupları Göster" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "{0} işlem dosyadan içe aktarıldı." - -#~ msgid "Enter name here" -#~ msgstr "Buraya ad girin" - -#~ msgid "Enter description here" -#~ msgstr "Açıklamayı buraya girin" - -#~ msgid "Enter amount here" -#~ msgstr "Tutarı buraya girin" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "Para Hesabı (*.nmoney)" - -#~ msgid "Enter password here" -#~ msgstr "Parolayı buraya girin" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "" -#~ "- Tanıdık bir sekme arayüzü ile aynı anda birden fazla hesabı yönetin\n" -#~ "- İşlemleri türe, gruba veya tarihe göre kolayca süzün\n" -#~ "- Her ay gerçekleşen faturalar gibi işlemleri kolayca tekrarlayın\n" -#~ "- Bir hesaptan diğerine para aktarın\n" -#~ "- Hesabı CSV dosyası olarak dışa aktarın ve hesaba toplu işlem eklemek " -#~ "için CSV, OFX veya QIF dosyasını içe aktarın" - -#~ msgid "New Window" -#~ msgstr "Yeni Pencere" - -#~ msgid "Sort" -#~ msgstr "Sırala" - -#~ msgid "Accounts" -#~ msgstr "Hesaplar" - -#~ msgid "Order By" -#~ msgstr "Sırala" - -#~ msgid "Transaction ({0})" -#~ msgstr "İşlem ({0})" - -#~ msgid "Transactions ({0})" -#~ msgstr "İşlemler ({0})" - -#~ msgid "Reset All Filters" -#~ msgstr "Tüm Süzgeçleri Sıfırla" - -#~ msgid "Account Settings (Ctrl+.)" -#~ msgstr "Hesap Ayarları (Ctrl+.)" - -#~ msgid "Increasing" -#~ msgstr "Artan" - -#~ msgid "Decreasing" -#~ msgstr "Azalan" - -#~ msgid "Sort By" -#~ msgstr "Sırala" - -#~ msgid "Enter decimal separator" -#~ msgstr "Ondalık ayırıcıyı girin" - -#~ msgid "Enter group separator" -#~ msgstr "Grup ayırıcıyı girin" - -#~ msgid "No Backup Folder" -#~ msgstr "Yedekleme Klasörü Yok" diff --git a/NickvisionMoney.Shared/Resources/po/ur.po b/NickvisionMoney.Shared/Resources/po/ur.po deleted file mode 100644 index 51239775c..000000000 --- a/NickvisionMoney.Shared/Resources/po/ur.po +++ /dev/null @@ -1,1587 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ur\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "" -msgstr[1] "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -#, fuzzy -msgid "Account Name" -msgstr "میزان" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -#, fuzzy -msgid "Account Name (Exists)" -msgstr "میزان" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -#, fuzzy -msgid "Account Name (Opened)" -msgstr "میزان" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -#, fuzzy -msgid "Account Settings" -msgstr "ترتیبات" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -#, fuzzy -msgid "Account Type" -msgstr "میزان" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "شامل کریں" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -#, fuzzy -msgid "Amount" -msgstr "میزان" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "لاگو کریں" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "منسوخ کریں" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "بند کریں" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "گٹہب ریپو" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "مدد" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "" -msgstr[1] "" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "ذاتی مالیات کا منتظم" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "میٹرکس چیٹ" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "نہیں" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "کھولیں" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -#, fuzzy -msgid "Open Account" -msgstr "میزان" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -#, fuzzy -msgid "Savings" -msgstr "ترتیبات" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -#, fuzzy -msgid "Select Account" -msgstr "میزان" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "ہاں" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "پیچھے" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "اڑا دیں" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -#, fuzzy -msgctxt "Group" -msgid "New" -msgstr "نیا" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -#, fuzzy -msgctxt "Transaction" -msgid "New" -msgstr "نیا" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -#, fuzzy -msgid "Copy Result Amount" -msgstr "میزانیں" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -#, fuzzy -msgid "All Accounts" -msgstr "میزانیں" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -#, fuzzy -msgid "New Account" -msgstr "میزان" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -#, fuzzy -msgid "Account Options" -msgstr "ترتیبات" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -#, fuzzy -msgid "Account Currency" -msgstr "میزان" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -#, fuzzy -msgid "Backup" -msgstr "پیچھے" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "میزان" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -#, fuzzy -msgid "Close Account" -msgstr "میزان" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -#, fuzzy -msgid "Recent Accounts" -msgstr "میزانیں" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -#, fuzzy -msgid "Account Menu" -msgstr "میزان" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -#, fuzzy -msgctxt "Account" -msgid "New" -msgstr "نیا" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -#, fuzzy -msgid "No Recent Accounts" -msgstr "میزانیں" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "ڈیش بورڈ" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "" - -#~ msgid "OK" -#~ msgstr "ٹھیک ہے" - -#~ msgid "Save" -#~ msgstr "محفوظ کریں" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "ترتیبات" - -#~ msgid "Version: {0}" -#~ msgstr "ورژن: {0}" - -#~ msgid "About {0}" -#~ msgstr "{0} کے متعلق" - -#~ msgid "Changelog" -#~ msgstr "تبدیلیاں" - -#~ msgid "Report a Bug" -#~ msgstr "ایک خرابی کی رپورٹ کریں" - -#~ msgid "Discussions" -#~ msgstr "بحث" - -#~ msgid "Home" -#~ msgstr "مرکز" diff --git a/NickvisionMoney.Shared/Resources/po/zh_CN.po b/NickvisionMoney.Shared/Resources/po/zh_CN.po deleted file mode 100644 index 1e80746fd..000000000 --- a/NickvisionMoney.Shared/Resources/po/zh_CN.po +++ /dev/null @@ -1,1715 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-14 22:10-0500\n" -"PO-Revision-Date: 2024-02-02 03:01+0000\n" -"Last-Translator: aerowolf \n" -"Language-Team: Chinese (Simplified) \n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.4-dev\n" - -#: ../../../Controllers/AccountViewController.cs:508 -msgid "(Copy)" -msgstr "(复制)" - -#: ../../../Controllers/DashboardViewController.cs:83 -#: ../../../Controllers/DashboardViewController.cs:92 -#: ../../../Controllers/DashboardViewController.cs:101 -#: ../../../Controllers/DashboardViewController.cs:121 -#, csharp-format -msgid "{0} from {1}" -msgstr "{0} 从 {1}" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:633 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:639 -#, csharp-format -msgid "{0} tag" -msgid_plural "{0} tags" -msgstr[0] "{0}个标签" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:161 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:474 -#, csharp-format -msgid "{0} transaction" -msgid_plural "{0} transactions" -msgstr[0] "{0}笔交易" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:287 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:82 -msgid "Account Name" -msgstr "账户名称" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:303 -msgid "Account Name (Exists)" -msgstr "账户名称 (已存在)" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:298 -msgid "Account Name (Opened)" -msgstr "账户名称(已启用)" - -#: ../../../Models/Account.cs:1653 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:74 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:493 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:32 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:30 -msgid "Account Settings" -msgstr "账户设置" - -#: ../../../Models/Account.cs:1654 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:56 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:152 -msgid "Account Type" -msgstr "账户类型" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:44 -msgid "Add" -msgstr "添加" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:498 -msgid "Add a new transaction or import transactions from a file." -msgstr "添加交易或从文件中导入交易。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "Add Password To PDF?" -msgstr "添加密码至PDF?" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:743 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:440 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:674 -msgid "All files" -msgstr "所有文件" - -#: ../../../Models/Account.cs:1687 ../../../Models/Account.cs:1724 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:493 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:159 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:72 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:73 -msgid "Amount" -msgstr "金额" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:512 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:194 -msgid "Amount (Invalid)" -msgstr "金额 (无效)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:107 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:179 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:132 -msgid "Apply" -msgstr "应用" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "" -"Are you sure you want to delete this group?\n" -"This action is irreversible." -msgstr "" -"是否确认删除此组?\n" -"该操作不可逆。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "" -"Are you sure you want to delete this transaction?\n" -"This action is irreversible." -msgstr "" -"確認刪除交易?\n" -"此操作不可逆轉。" - -#: ../../../Models/Account.cs:1661 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Business" -msgstr "商务" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:161 -msgid "Can't access the selected folder, check Flatpak permissions." -msgstr "没有所选文件夹的权限,请检查Flatpak权限。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:940 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:972 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1005 -msgid "Cancel" -msgstr "取消" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:249 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:110 -msgid "Change Password" -msgstr "更改密码" - -#: ../../../Models/Account.cs:1659 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Checking" -msgstr "支票" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:111 -msgid "Close" -msgstr "关闭" - -#: ../../../Controllers/MainWindowController.cs:97 -msgid "Contributors on GitHub ❤️" -msgstr "GitHub 上的贡献者 ❤️" - -#: ../../../Models/Account.cs:1655 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:122 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:92 -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:32 -msgid "Currency" -msgstr "货币" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:369 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:368 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:165 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:232 -msgid "Currency Code" -msgstr "货币代码" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:407 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:398 -msgid "Currency Code (Empty)" -msgstr "货币代码 (空)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:367 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:366 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:161 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:228 -msgid "Currency Symbol" -msgstr "货币符号" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:395 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:388 -msgid "Currency Symbol (Empty)" -msgstr "货币符号 (空)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:401 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:435 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:393 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:415 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:422 -msgid "Currency Symbol (Invalid)" -msgstr "货币符号 (无效)" - -#: ../../../Controllers/MainWindowController.cs:100 -msgid "DaPigGuy" -msgstr "DaPigGuy" - -#: ../../../Models/Account.cs:1718 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:106 -msgid "Date" -msgstr "日期" - -#: ../../../Controllers/MainWindowController.cs:101 -msgid "David Lapshin" -msgstr "David Lapshin" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:371 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:370 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:176 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:243 -msgid "Decimal Separator" -msgstr "小数点分隔符" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:413 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:403 -msgid "Decimal Separator (Empty)" -msgstr "小数点分隔符 (空)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:419 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:429 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:408 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:417 -msgid "Decimal Separator (Invalid)" -msgstr "小数点分隔符 (无效)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:944 -msgid "Delete Existing" -msgstr "删除已存在的" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1099 -msgid "Delete Group" -msgstr "删除组" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1008 -msgid "Delete Only Source" -msgstr "删除唯一源" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1009 -msgid "Delete Source and Generated" -msgstr "删除源和内容" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1029 -msgid "Delete Transaction" -msgstr "删除交易" - -#: ../../../Controllers/MainWindowController.cs:90 -msgid "Denaro" -msgstr "Denaro" - -#: ../../../Models/Account.cs:1686 ../../../Models/Account.cs:1719 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:491 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:36 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:61 -msgid "Description" -msgstr "描述" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:507 -msgid "Description (Empty)" -msgstr "描述 (空)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:155 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:36 -msgid "Destination Account" -msgstr "目标账户" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:175 -msgid "Destination Account (Invalid)" -msgstr "目标账户 (无效)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:157 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:67 -msgid "Destination Account Password" -msgstr "目标账户密码" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:188 -msgid "Destination Account Password (Invalid)" -msgstr "目标账户密码 (无效)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:182 -msgid "Destination Account Password (Required)" -msgstr "目标账户密码 (必要)" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:943 -msgid "Disassociate Existing" -msgstr "解除已有关联" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "Error" -msgstr "错误" - -#: ../../../Models/Account.cs:1639 ../../../Models/Account.cs:1770 -#: ../../../Models/Account.cs:1876 ../../../Models/Account.cs:1896 -#: ../../../Models/Account.cs:1936 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:75 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:131 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:47 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:173 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:97 -msgid "Expense" -msgstr "支出" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:788 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:815 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:11 -msgid "Export to File" -msgstr "导出到文件" - -#: ../../../Controllers/AccountViewController.cs:991 -#: ../../../Controllers/AccountViewController.cs:1009 -msgid "Exported account to file successfully." -msgstr "成功将账户导出到文件。" - -#: ../../../Controllers/MainWindowController.cs:99 -msgid "Fyodor Sobolev" -msgstr "Fyodor Sobolev" - -#: ../../../Models/Account.cs:1604 -#, csharp-format -msgid "Generated: {0}" -msgstr "已生成: {0}" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:478 -msgid "GitHub Repo" -msgstr "GitHub 仓库" - -#: ../../../Controllers/MainWindowController.cs:134 -msgid "Good Afternoon!" -msgstr "下午好!" - -#: ../../../Controllers/MainWindowController.cs:136 -msgid "Good Day!" -msgstr "祝你有美好的一天!" - -#: ../../../Controllers/MainWindowController.cs:135 -msgid "Good Evening!" -msgstr "晚上好!" - -#: ../../../Controllers/TransactionDialogController.cs:216 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:58 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:46 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:170 -msgid "Group" -msgstr "群组" - -#: ../../../Models/Account.cs:1721 -msgid "Group Name" -msgstr "组名" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:373 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:372 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:259 -msgid "Group Separator" -msgstr "组别分隔符" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:421 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:437 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:410 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:424 -msgid "Group Separator (Invalid)" -msgstr "组别分隔符 (无效)" - -#: ../../../Models/Account.cs:1684 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:153 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:76 -msgid "Groups" -msgstr "群组" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:181 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:78 -#: NickvisionMoney.GNOME/Blueprints/window.blp:10 -msgid "Help" -msgstr "帮助" - -#: ../../../Models/Account.cs:1717 ../../../Models/Account.cs:1790 -msgid "Id" -msgstr "ID" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:438 -msgid "Import from Account" -msgstr "从账户导入" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:741 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:8 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:40 -msgid "Import from File" -msgstr "从文件导入" - -#: ../../../Controllers/AccountViewController.cs:969 -#, csharp-format -msgid "Imported {0} transaction from file." -msgid_plural "Imported {0} transactions from file." -msgstr[0] "从文件导入 {0} 笔交易。" - -#: ../../../Models/Account.cs:1637 ../../../Models/Account.cs:1769 -#: ../../../Models/Account.cs:1875 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1935 ../../../Models/Account.cs:2003 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:71 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:110 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:33 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:93 -msgid "Income" -msgstr "收入" - -#: ../../../Controllers/MainWindowController.cs:91 -msgid "Manage your personal finances" -msgstr "管理你的个人财务" - -#: ../../../Controllers/MainWindowController.cs:95 -msgid "Matrix Chat" -msgstr "Matrix Chat" - -#: ../../../Models/Account.cs:1435 ../../../Models/Account.cs:1497 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:203 -msgid "N/A" -msgstr "N/A" - -#: ../../../Models/Account.cs:1685 -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:364 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:145 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:51 -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:30 -msgid "Name" -msgstr "名称" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:389 -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:155 -msgid "Name (Empty)" -msgstr "名称 (空)" - -#: ../../../../NickvisionMoney.GNOME/Views/GroupDialog.cs:160 -msgid "Name (Exists)" -msgstr "名称 (已存在)" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:573 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Never" -msgstr "永不" - -#: ../../../Controllers/MainWindowController.cs:96 -#: ../../../Controllers/MainWindowController.cs:98 -msgid "Nicholas Logozzo" -msgstr "Nicholas Logozzo" - -#: ../../../Models/Account.cs:1819 -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:308 -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:223 -msgid "Nickvision Denaro Account" -msgstr "Nickvision的Denaro账户" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:832 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1031 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1101 -msgid "No" -msgstr "否" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:406 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:479 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:605 -msgid "No End Date" -msgstr "没有结束日期" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:497 -msgid "No Transactions" -msgstr "没有交易" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:487 -msgid "No Transactions Found" -msgstr "没有找到交易" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:488 -msgid "No transactions match the specified filters." -msgstr "没有符合条件的交易。" - -#: ../../../Models/Account.cs:1723 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:360 -msgid "Notes" -msgstr "注释" - -#: ../../../Controllers/AccountViewController.cs:978 -msgid "Nothing to import from the file." -msgstr "从文件未能导入内容。" - -#: ../../../Models/Account.cs:2107 -msgid "One month from now" -msgstr "从现在起一个月" - -#: ../../../Models/Account.cs:2103 -msgid "One week from now" -msgstr "从现在起一周" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:188 -msgid "Open" -msgstr "开启" - -#: ../../../../NickvisionMoney.GNOME/Views/MainWindow.cs:306 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/window.blp:211 -msgid "Open Account" -msgstr "开设账户" - -#: ../../../Models/Account.cs:1615 -msgid "Overview" -msgstr "概要" - -#: ../../../Models/Account.cs:1822 -msgid "Page {0}" -msgstr "第 {0} 页" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:842 -msgid "PDF Password" -msgstr "PDF 密码" - -#: ../../../Models/Account.cs:1791 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:497 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:672 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:316 -msgid "Receipt" -msgstr "收据" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:523 -msgid "Receipt (File Inaccessible)" -msgstr "收据(文件无法访问)" - -#: ../../../Models/Account.cs:1789 -msgid "Receipts" -msgstr "收据" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:495 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:132 -msgid "Repeat End Date" -msgstr "重复结束日期" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:517 -msgid "Repeat End Date (Invalid)" -msgstr "重复结束日期(无效)" - -#: ../../../../NickvisionMoney.GNOME/Controls/TransactionRow.cs:114 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:159 -msgid "Repeat Interval" -msgstr "重复间隔" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "Repeat Interval Changed" -msgstr "重复间隔已更改" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:76 -msgid "Result was copied to clipboard." -msgstr "结果已复制到剪贴板。" - -#: ../../../Models/Account.cs:1660 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:58 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:156 -msgid "Savings" -msgstr "储蓄" - -#: ../../../../NickvisionMoney.GNOME/Views/TransferDialog.cs:221 -msgid "Select Account" -msgstr "选择账户" - -#: ../../../../NickvisionMoney.GNOME/Views/PreferencesDialog.cs:154 -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:149 -msgid "Select Backup Folder" -msgstr "选择备份文件夹" - -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:265 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:110 -msgid "Select Folder" -msgstr "选择文件夹" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Amount" -msgstr "按金额排序" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Date" -msgstr "按日期排序" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:279 -msgid "Sort By Id" -msgstr "按 ID 排序" - -#: ../../../Models/Account.cs:1722 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:197 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:196 -msgid "Tags" -msgstr "标签" - -#: ../../../Controllers/AccountViewController.cs:580 -msgid "The password of the account was changed." -msgstr "账户密码已更改。" - -#: ../../../Controllers/AccountViewController.cs:576 -msgid "The password of the account was removed." -msgstr "账户密码已被删除。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:496 -msgid "The password will be removed upon closing this dialog." -msgstr "关闭此对话框后,密码将被删除。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:442 -msgid "The passwords do not match." -msgstr "密码不匹配。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:938 -msgid "" -"The repeat interval was changed.\n" -"What would you like to do with existing generated transactions?\n" -"\n" -"New repeat transactions will be generated based off the new interval." -msgstr "" -"重复间隔已更改。\n" -"您想如何处理已生成的交易?\n" -"\n" -"新的重复交易将是使用新的间隔。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:729 -msgid "This account has no money available to transfer." -msgstr "该账户没有足够资金完成转账。" - -#: ../../../Controllers/MainWindowController.cs:356 -msgid "This account is already opened." -msgstr "此账户已经开启。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1003 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Deleting only the source transaction will allow individual\n" -"generated transactions to be modifiable." -msgstr "" -"此交易是重复交易的来源。\n" -"希望如何更改重复交易?\n" -"\n" -"只删去此源交易,将保留后续生成的交易。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "" -"This transaction is a source repeat transaction.\n" -"What would you like to do with the repeat transactions?\n" -"\n" -"Updating only the source transaction will disassociate\n" -"generated transactions from the source." -msgstr "" -"此交易是重复交易的来源。\n" -"想要如何处理已经生成的交易?\n" -"\n" -"仅更新源交易,会将后续生成的交易与源交易分开。" - -#: ../../../Controllers/MainWindowController.cs:102 -msgid "Tobias Bernard" -msgstr "Tobias Bernard" - -#: ../../../Models/Account.cs:2099 -msgid "Tomorrow" -msgstr "明天" - -#: ../../../Models/Account.cs:1634 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:99 -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:61 -msgid "Total" -msgstr "總額" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:165 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:55 -msgid "Transaction" -msgstr "交易" - -#: ../../../Models/Account.cs:1716 -msgid "Transactions" -msgstr "交易" - -#: ../../../Models/Account.cs:472 -msgid "Transactions without a group" -msgstr "暫無組群之交易" - -#: ../../../Controllers/AccountViewController.cs:903 -#, csharp-format -msgid "Transfer From {0}" -msgstr "從 {0} 轉帳" - -#: ../../../Controllers/AccountViewController.cs:875 -#, csharp-format -msgid "Transfer To {0}" -msgstr "轉帳到 {0}" - -#: ../../../Controllers/MainWindowController.cs:103 -msgid "translator-credits" -msgstr "翻译者荣誉榜" - -#: ../../../Models/Account.cs:2111 -msgid "Two months from now" -msgstr "从现在起二个月" - -#: ../../../Models/Account.cs:1720 -msgid "Type" -msgstr "类型" - -#: ../../../Controllers/AccountViewController.cs:995 -#: ../../../Controllers/AccountViewController.cs:1013 -msgid "Unable to export account to file." -msgstr "无法将账号导出到文件。" - -#: ../../../Controllers/AccountViewController.cs:937 -msgid "" -"Unable to import information from the file. Please ensure that the app has " -"permissions to access the file and try again." -msgstr "不能从文件导入信息。请确定应用具有访问该文件的权限,然后重试。" - -#: ../../../Controllers/AccountViewController.cs:973 -msgid "Unable to import transactions from the file." -msgstr "不能从文件中导入交易。" - -#: ../../../../NickvisionMoney.GNOME/Controls/CurrencyConverterDialog.cs:109 -msgid "" -"Unable to load currency data. Please try again. If the error still persists, " -"report a bug." -msgstr "不能载入货币数据。请重试。如果错误依旧,请报告bug。" - -#: ../../../Controllers/MainWindowController.cs:338 -msgid "Unable to login to account. Provided password is invalid." -msgstr "不能登录到账号。密码无效。" - -#: ../../../Controllers/MainWindowController.cs:292 -#: ../../../Controllers/MainWindowController.cs:345 -msgid "" -"Unable to open the account. Please ensure that the app has permissions to " -"access the file and try again." -msgstr "不能打开账号。请确定此应用有文件访问权限,然后重试。" - -#: ../../../Controllers/MainWindowController.cs:280 -msgid "Unable to overwrite an existing account." -msgstr "不能覆盖已有的账号。" - -#: ../../../Controllers/MainWindowController.cs:269 -msgid "Unable to overwrite an opened account." -msgstr "不能覆盖打开的账号。" - -#: ../../../Controllers/AccountViewController.cs:452 -#: ../../../Controllers/AccountViewController.cs:829 -#: ../../../Controllers/AccountViewController.cs:944 -#: ../../../Controllers/TransactionDialogController.cs:92 -#: ../../../Controllers/TransactionDialogController.cs:340 -#: ../../../Models/Account.cs:471 ../../../Models/Account.cs:1690 -#: ../../../Models/Account.cs:1773 ../../../Models/Account.cs:1895 -#: ../../../Models/Account.cs:1896 ../../../Models/Account.cs:1900 -#: ../../../Models/Account.cs:1970 -msgid "Ungrouped" -msgstr "無組群" - -#: ../../../Controllers/AccountViewController.cs:1149 -#: ../../../Models/Account.cs:113 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:193 -msgid "Untagged" -msgstr "未加标签" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:450 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1131 -msgid "Upcoming transactions" -msgstr "即将发生的交易" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:975 -msgid "Update Only Source" -msgstr "仅更新源交易" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:976 -msgid "Update Source and Generated" -msgstr "更新源交易和后续交易" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:970 -msgid "Update Transaction" -msgstr "更新交易" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:431 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:660 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:707 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:347 -msgid "Upload" -msgstr "上传" - -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:427 -#: ../../../../NickvisionMoney.GNOME/Views/TransactionDialog.cs:703 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:325 -msgid "View" -msgstr "查看" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:830 -msgid "" -"Would you like to password-protect the PDF file?\n" -"\n" -"If the password is lost, the PDF will be inaccessible." -msgstr "" -"想要给PDF文件添加密码保护吗?\n" -"\n" -"如果忘记密码,就无法访问该PDF文件了。" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:835 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1034 -#: ../../../../NickvisionMoney.GNOME/Views/AccountView.cs:1104 -msgid "Yes" -msgstr "是" - -#: ../../../../NickvisionMoney.GNOME/Views/AccountSettingsDialog.cs:115 -#: ../../../../NickvisionMoney.GNOME/Views/NewAccountDialog.cs:221 -msgid "Your system reported that your currency is" -msgstr "系统报告,您的货币类型为" - -#: ../../../Controllers/MainWindowController.cs:133 -msgctxt "Morning" -msgid "Good Morning!" -msgstr "早上好!" - -#: ../../../Controllers/MainWindowController.cs:132 -msgctxt "Night" -msgid "Good Morning!" -msgstr "早上好!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:21 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:372 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:24 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:19 -msgid "Back" -msgstr "后退" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:63 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:161 -msgid "Default Transaction Type" -msgstr "默认的交易类型" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:181 -msgid "Transaction Reminders Threshold" -msgstr "交易提醒阈值" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Day Before" -msgstr "一天前" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Week Before" -msgstr "一周前" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "One Month Before" -msgstr "一月前" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:85 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:183 -msgid "Two Months Before" -msgstr "两月前" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:93 -msgid "Manage the currency used by the account." -msgstr "管理账号使用的货币。" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:111 -msgid "Set a new password or remove one." -msgstr "设置新密码或者删除原密码。" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:153 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:223 -msgid "Use Custom Currency" -msgstr "使用自定义货币" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:169 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:236 -msgid "Amount Display Style" -msgstr "金额显示样式" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:178 -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:245 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "Other" -msgstr "其他" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:194 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:261 -msgid "None" -msgstr "无" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:208 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:275 -msgid "Decimal Digits" -msgstr "十进制数字" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Two" -msgstr "2" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Three" -msgstr "3" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Four" -msgstr "4" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Five" -msgstr "5" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Six" -msgstr "6" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:210 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:277 -msgid "Unlimited" -msgstr "无限制" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:226 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:29 -msgid "New Password" -msgstr "新的密码" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:230 -#: NickvisionMoney.GNOME/Blueprints/new_password_dialog.blp:34 -msgid "Confirm Password" -msgstr "确认密码" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:234 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:90 -msgid "Password Strength" -msgstr "密码强度" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:246 -msgid "If the password is lost, there is no way to restore the file!" -msgstr "如果忘记密码,将无法恢复为您的账号!" - -#: NickvisionMoney.GNOME/Blueprints/account_settings_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/recent_account_row.blp:50 -msgid "Remove" -msgstr "删除" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:5 -msgid "Transfer Money" -msgstr "转账" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:14 -msgid "CSV" -msgstr "CSV" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:16 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:23 -msgid "Export All Information" -msgstr "导出所有信息" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:17 -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:24 -msgid "Export Current View" -msgstr "导出当前视图" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:21 -msgid "PDF" -msgstr "PDF" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:64 -msgid "Search by description" -msgstr "按详情搜索" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:68 -msgid "Today's Overview" -msgstr "今日概况" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:74 -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:22 -msgid "Reminders" -msgstr "提醒" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:84 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:32 -msgid "Actions" -msgstr "操作" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:92 -msgid "Select All Overview Filters" -msgstr "选择所有概况筛选器" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:156 -msgid "New Group (Ctrl+G)" -msgstr "新建群組 (Ctrl+G)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:161 -msgctxt "Group" -msgid "New" -msgstr "新建" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:168 -msgid "Toggle Groups Visibility" -msgstr "切换群组可见性" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:176 -msgid "Select All Groups Filters" -msgstr "选择所有群组筛选器" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:183 -msgid "Unselect Groups Filters" -msgstr "取消选择群组筛选器" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:200 -msgid "Toggle Tags Visibility" -msgstr "切换标签可见性" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:208 -msgid "Select All Tags Filters" -msgstr "选择所有标签筛选器" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:215 -msgid "Unselect Tags Filters" -msgstr "取消选择标签筛选器" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:238 -msgid "Calendar" -msgstr "日历" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:243 -msgid "Select Current Month" -msgstr "选择当前月" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:249 -msgid "Reset To Today" -msgstr "重置到今天" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:252 -msgid "Today" -msgstr "今天" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:270 -msgid "Select Range" -msgstr "选择范围" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:275 -msgctxt "DateRange" -msgid "Start" -msgstr "开始" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:300 -msgctxt "DateRange" -msgid "End" -msgstr "结束" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:362 -msgid "Visualize" -msgstr "可见" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:380 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:126 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:192 -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:287 -msgid "Next" -msgstr "继续" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:445 -msgid "Sort From First To Last" -msgstr "排序:从最先到最后" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:451 -msgid "Sort From Last To First" -msgstr "排序:从最后到最先" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:483 -msgid "New Transaction (Ctrl+Shift+N)" -msgstr "新建交易 (Ctrl+Shift+N)" - -#: NickvisionMoney.GNOME/Blueprints/account_view.blp:491 -msgctxt "Transaction" -msgid "New" -msgstr "新建" - -#: NickvisionMoney.GNOME/Blueprints/autocomplete_box.blp:15 -msgid "Suggestions" -msgstr "建议" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:26 -msgid "Converter" -msgstr "换算器" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:40 -msgid "Switch currencies" -msgstr "切换货币" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:43 -msgid "Switch" -msgstr "切换" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:60 -msgid "Loading..." -msgstr "正在载入……" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:70 -msgid "Source" -msgstr "源交易" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:74 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:104 -msgid "Result" -msgstr "结果" - -#: NickvisionMoney.GNOME/Blueprints/currency_converter_dialog.blp:87 -msgid "Copy Result Amount" -msgstr "复制结果金额" - -#: NickvisionMoney.GNOME/Blueprints/dashboard_view.blp:13 -msgid "All Accounts" -msgstr "所有账户" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:42 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:175 -msgid "Color" -msgstr "顏色" - -#: NickvisionMoney.GNOME/Blueprints/group_dialog.blp:62 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:283 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:336 -msgid "Delete" -msgstr "删除" - -#: NickvisionMoney.GNOME/Blueprints/group_row.blp:51 -msgid "Edit Group" -msgstr "编辑群组" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:48 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:16 -#: NickvisionMoney.GNOME/Blueprints/window.blp:199 -msgid "New Account" -msgstr "新建账户" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:49 -msgid "Use this wizard to get the most out of your account" -msgstr "使用此向导可更好利用你的账户" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:54 -msgid "Let's Start" -msgstr "开始!" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:73 -msgid "Storage Location" -msgstr "存储位置" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:86 -msgid "Account Password (Optional)" -msgstr "账户密码(可选)" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:103 -msgid "Folder" -msgstr "文件夹" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:117 -msgid "Overwrite Existing Accounts" -msgstr "覆盖已有账户" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:143 -msgid "Account Options" -msgstr "账户选项" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:153 -msgid "This is only a useful label that doesn't affect how the app works." -msgstr "这是一个有用的标签,不影响应用运行。" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:209 -msgid "Account Currency" -msgstr "账户货币" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:304 -msgid "Import Existing Information" -msgstr "导入已有信息" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:313 -msgid "" -"Upload a valid file to use to import existing information into the new " -"account." -msgstr "上传一个有效文件,用于将现有信息导入新账户。" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:320 -msgid "Import File" -msgstr "导入文件" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:327 -msgid "Select File" -msgstr "选择文件" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:337 -msgid "Clear File" -msgstr "清除文件" - -#: NickvisionMoney.GNOME/Blueprints/new_account_dialog.blp:348 -msgid "Create" -msgstr "创建" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:30 -msgid "Enter Password To Login:" -msgstr "输入登录密码:" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:43 -msgid "Password" -msgstr "密码" - -#: NickvisionMoney.GNOME/Blueprints/password_dialog.blp:54 -msgid "Unlock" -msgstr "解锁" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:11 -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:67 -#: NickvisionMoney.GNOME/Blueprints/window.blp:8 -msgid "Preferences" -msgstr "偏好設定" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:17 -msgid "User Interface" -msgstr "用户界面" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:20 -msgid "Theme" -msgstr "主题" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Light" -msgstr "亮色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "Dark" -msgstr "暗色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:22 -msgctxt "Theme" -msgid "System" -msgstr "跟随系统" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:32 -msgid "Colors" -msgstr "颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:33 -msgid "Customize the colors used by Denaro." -msgstr "自定义界面颜色。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:41 -msgid "Transaction Default Color" -msgstr "默认交易颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:42 -msgid "" -"A change in this setting will only be applied to newly added transactions." -msgstr "对此设置的修改仅影响后续新的交易。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:52 -msgid "Transfer Default Color" -msgstr "默认转账颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:53 -msgid "A change in this setting will only be applied to new transfers." -msgstr "对此设置的修改仅影响新的交易。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:63 -msgid "Group Default Color" -msgstr "群组默认颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:64 -msgid "A change in this setting will only be applied to new groups." -msgstr "对此设置的修改将仅影响以后新建的群组。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:74 -msgid "Checking Account Color" -msgstr "支票账户颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:84 -msgid "Savings Account Color" -msgstr "储蓄账户颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:94 -msgid "Business Account Color" -msgstr "商务账户颜色" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:106 -msgid "Locale" -msgstr "本地" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:109 -msgid "Use Native Digits" -msgstr "使用原生数字" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:110 -msgid "" -"Whether to use numerals that are native for your locale instead of latin " -"digits." -msgstr "是否使用您所在地区的原生数字,而不是拉丁数字。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:119 -msgid "Insert Decimal Separator" -msgstr "插入十进制分隔符" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:120 -msgid "" -"Set for which keys pressed will the locale's decimal separator be inserted " -"into an amount field." -msgstr "设置按键,用于将区域设置的十进制分隔符插入金额字段。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgctxt "InsertSeparator" -msgid "Off" -msgstr "关闭" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Numpad period only" -msgstr "仅数字键盘区域的句号" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:123 -msgid "Period and Comma" -msgstr "句号和逗号" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:134 -msgid "Backup" -msgstr "备份" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:137 -msgid "CSV Backup Folder" -msgstr "CVS备份文件夹" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:138 -msgid "" -"Unencrypted accounts will automatically export as CSV files to this folder " -"when a change is made." -msgstr "修改之后,未加密的账户将自动导出为CVS文件,保存到此文件夹中。" - -#: NickvisionMoney.GNOME/Blueprints/preferences_dialog.blp:159 -msgid "Clear Backup Folder" -msgstr "清除备份文件夹" - -#: NickvisionMoney.GNOME/Blueprints/reminders_dialog.blp:41 -msgid "No Reminders" -msgstr "不提醒" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:13 -msgid "Account" -msgstr "账户" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:26 -msgid "Close Account" -msgstr "关闭账户" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:35 -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:23 -msgctxt "Title" -msgid "Transfer" -msgstr "转账" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:49 -msgid "New Group" -msgstr "新建群组" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:58 -msgid "New Transaction" -msgstr "新建交易" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:64 -msgid "Application" -msgstr "应用" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:73 -#: NickvisionMoney.GNOME/Blueprints/window.blp:9 -msgid "Keyboard Shortcuts" -msgstr "键盘快捷键" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:83 -#: NickvisionMoney.GNOME/Blueprints/window.blp:107 -msgid "Toggle Sidebar" -msgstr "切换侧边栏" - -#: NickvisionMoney.GNOME/Blueprints/shortcuts_dialog.blp:88 -msgid "Quit" -msgstr "退出" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:27 -msgid "Make a Copy" -msgstr "制作复本" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:143 -msgid "Clear End Date" -msgstr "清除结束日期" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Daily" -msgstr "每日" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Weekly" -msgstr "每周" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biweekly" -msgstr "双周" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Monthly" -msgstr "每月" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Quarterly" -msgstr "每季" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Yearly" -msgstr "每年" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:161 -msgid "Biyearly" -msgstr "每两年" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use group color" -msgstr "使用群组颜色" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:188 -msgid "Use unique color" -msgstr "使用独特颜色" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:228 -msgid "Enter a new tag name..." -msgstr "请输入新的标签名称……" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:233 -msgid "Add Tag" -msgstr "添加标签" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:250 -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:308 -msgid "Extras" -msgstr "额外" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:251 -msgid "Manage extra fields of the transaction." -msgstr "管理交易的额外字段。" - -#: NickvisionMoney.GNOME/Blueprints/transaction_dialog.blp:361 -msgid "Enter notes here" -msgstr "在此处输入备注" - -#: NickvisionMoney.GNOME/Blueprints/transaction_row.blp:31 -msgid "Edit Transaction" -msgstr "编辑交易" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:29 -msgid "" -"Transferring money will create an expense transaction with the given amount " -"in this account and an income transaction with the given amount in the " -"account to transfer to." -msgstr "转账将会在此账户的收入合计中产生一笔支出,并在转入的账户的收入合计中产生一笔" -"收入。" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:37 -msgid "No Account Selected" -msgstr "未选择账户" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:47 -msgid "Select a destination account" -msgstr "选择目标账户" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:52 -#: NickvisionMoney.GNOME/Blueprints/window.blp:177 -msgid "Recent Accounts" -msgstr "近期账户" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:55 -#: NickvisionMoney.GNOME/Blueprints/window.blp:47 -msgid "Recents" -msgstr "近期" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:85 -msgid "Conversion Needed" -msgstr "需要换算" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:89 -msgid "Use Custom Rates" -msgstr "使用自定义费率" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:90 -msgid "Enter the conversion rates manually" -msgstr "手动输入换算费率" - -#: NickvisionMoney.GNOME/Blueprints/transfer_dialog.blp:117 -msgctxt "Button" -msgid "Transfer" -msgstr "转账" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:5 -msgid "Currency Converter" -msgstr "汇率换算" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:11 -msgid "About Denaro" -msgstr "关于Denaro" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:28 -msgid "Account Menu" -msgstr "账户菜单" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:57 -msgid "New Account (Ctrl+N)" -msgstr "新建账户 (Ctrl+N)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:61 -msgctxt "Account" -msgid "New" -msgstr "新建" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:70 -msgid "Open Account (Ctrl+O)" -msgstr "打开账户 (Ctrl+O)" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:86 -msgid "No Recent Accounts" -msgstr "无近期账户" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:115 -msgid "Toggle Graphs" -msgstr "切换图表" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:125 -msgid "Main Menu" -msgstr "主菜单" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:132 -msgid "Dashboard" -msgstr "显示看板" - -#: NickvisionMoney.GNOME/Blueprints/window.blp:168 -msgid "" -"Create or open an account to get started. You may also drag a file into the " -"app from your file browser." -msgstr "要开始,请创建或打开账户。您也可以从文件浏览器中拖动一个文件到此应用中。" - -#, fuzzy -#~ msgid "result" -#~ msgstr "Result" - -#, fuzzy -#~ msgid "money;finance;wallet;cash;bank;Nickvision;" -#~ msgstr "money;finance;wallet;cash;bank;GTK;Nickvision;" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Please wait while transactions import..." -#~ msgstr "正在导入交易,请稍候..." - -#, csharp-format -#~ msgid "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" -#~ msgstr "" -#~ "David Lapshin {0}\n" -#~ "Tobias Bernard {1}" - -#, csharp-format -#~ msgid "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" -#~ msgstr "" -#~ "Nicholas Logozzo {0}\n" -#~ "Fyodor Sobolev {1}\n" -#~ "DaPigGuy {2}" - -#~ msgid "Customize the application's user interface." -#~ msgstr "自訂介面" - -#~ msgid "Customize how Denaro uses locale settings." -#~ msgstr "Customize how Denaro uses locale settings." - -#, fuzzy -#~ msgid "Customize backup locations for Denaro accounts." -#~ msgstr "自訂介面" - -#~ msgid "Enter symbol here" -#~ msgstr "Enter symbol here" - -#~ msgid "Enter code here" -#~ msgstr "Enter code here" - -#~ msgid "Save" -#~ msgstr "儲存" - -#~ msgid "Hide" -#~ msgstr "隱藏" - -#~ msgid "Show" -#~ msgstr "Show" - -#~ msgid "Reset Dates Filters" -#~ msgstr "重置時間篩選條件" - -#~ msgid "Delete Group?" -#~ msgstr "刪除組群?" - -#~ msgid "Delete Transaction?" -#~ msgstr "刪除此交易?" - -#, fuzzy -#~ msgid "AccountSettings" -#~ msgstr "Account Settings" - -#~ msgid "Version: {0}" -#~ msgstr "版本: {0}" - -#~ msgid "About {0}" -#~ msgstr "關於{0}" - -#~ msgid "Changelog" -#~ msgstr "變更日誌" - -#~ msgid "Credits" -#~ msgstr "鳴謝" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "GitHub上的開發者 ❤️ https://github.com/NickvisionApps/Denaro/graphs/" -#~ "contributors" - -#~ msgid "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev\n" -#~ "DaPigGuy https://github.com/DaPigGuy" -#~ msgstr "" -#~ "Nicholas Logozzo https://github.com/nlogozzo\n" -#~ "Fyodor Sobolev https://github.com/fsobolev" - -#~ msgid "" -#~ "David Lapshin https://github.com/daudix-UFO\n" -#~ "Tobias Bernard https://github.com/bertob" -#~ msgstr "David Lapshin https://github.com/daudix-UFO" - -#~ msgid "Home" -#~ msgstr "目錄" - -#~ msgid "Settings" -#~ msgstr "設定" - -#~ msgid "Transfer Money (Ctrl+T)" -#~ msgstr "轉帳 (Ctrl+T)" - -#~ msgid "Import from File (Ctrl+I)" -#~ msgstr "從檔案導入 (Ctrl+I)" - -#~ msgid "Filters" -#~ msgstr "篩選" - -#~ msgid "Imported {0} transactions from file." -#~ msgstr "從檔案中導入 {0} 筆交易" - -#~ msgid "Enter description here" -#~ msgstr "請在此輸入資料" - -#~ msgid "Enter amount here" -#~ msgstr "請在此輸入數額" - -#~ msgid "Money Account (*.nmoney)" -#~ msgstr "軟體Money的帳戶 (*.nmoney)" - -#~ msgid "Report a Bug" -#~ msgstr "Report a Bug" - -#~ msgid "Discussions" -#~ msgstr "Discussions" - -#~ msgid "Hide Groups" -#~ msgstr "Hide Groups" - -#~ msgid "Show Groups" -#~ msgstr "Show Groups" - -#~ msgid "Enter password here" -#~ msgstr "Enter password here" - -#~ msgid "" -#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" -#~ "— Easily filter transactions by type, group, or date\n" -#~ "— Easily repeat transactions, such as bills that occur every month\n" -#~ "— Transfer money from one account to another\n" -#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " -#~ "bulk add transactions to an account" -#~ msgstr "Manage your personal finances" - -#~ msgid "New Window" -#~ msgstr "New Window" diff --git a/README.md b/README.md index 3305b54f7..878fd70e3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -![](NickvisionMoney.Shared/Resources/banner.png) - - [![Translation status](https://hosted.weblate.org/widgets/nickvision-money/-/app/svg-badge.svg)](https://hosted.weblate.org/engage/nickvision-money/) ✨Powered by [Weblate](https://weblate.org/en/)✨ +![](resources/banner.png) + +[![Translation status](https://hosted.weblate.org/widgets/nickvision-money/-/app/svg-badge.svg)](https://hosted.weblate.org/engage/nickvision-money/) ✨Powered by [Weblate](https://weblate.org/en/)✨ # Features - Manage multiple accounts at a time, with a familiar tab interface @@ -20,29 +20,48 @@ # Chat Join our room +# Building and Installing Manually +Denaro uses `vcpkg` to manage its dependencies and `cmake` as its build system. + +Ensure both `vcpkg` and `cmake` are installed on your system before building. + +A C++20 compiler is also required to build Denaro. + +## Configuring vcpkg +1. Set the `VCPKG_ROOT` environment variable to the path of your vcpkg installation's root directory. +### Windows +1. Set the `VCPKG_DEFAULT_TRIPLET` environment variable to `x64-windows` +1. Run `vcpkg install boost-date-time gtest libnick podofo rapidcsv` +### Linux +1. Set the `VCPKG_DEFAULT_TRIPLET` environment variable to `x64-linux` +1. Run `vcpkg install boost-date-time gtest libnick libxmlpp podofo rapidcsv` + +## Building +1. First, clone/download the repo. +1. Open a terminal and navigate to the repo's root directory. +1. Create a new `build` directory and `cd` into it. +### Windows +1. From the `build` folder, run `cmake .. -G "Visual Studio 17 2022"`. + - To skip building Denaro's test suite, add `-DBUILD_TESTING="OFF"` to the end of the command. +1. From the `build` folder, run `cmake --build . --config Release`. +1. After these commands complete, Denaro will be successfully built and its binaries can be found in the `org.nickvision.money.winui/Release` folder of the `build` folder. +### Linux +1. From the `build` folder, run `cmake .. -DCMAKE_BUILD_TYPE=Release`. + - To skip building Denaro's test suite, add `-DBUILD_TESTING="OFF"` to the end of the command. + - If you plan to install Denaro via CMAKE (supported on Linux only), add `-DCMAKE_INSTALL_PREFIX=PATH_TO_INSTALL_DIR` to the end of the command, replacing `PATH_TO_INSTALL_DIR` with the path of where you'd like Denaro to install to. +1. From the `build` folder, run `cmake --build .`. +1. After these commands complete, Denaro will be successfully built and its binaries can be found in the `org.nickvision.money.gnome` folder of the `build` folder. + +## Installing (LINUX ONLY) +1. To install Denaro to the system, from the `build` folder, run `cmake --install .` + # Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how can you help the project and how to provide information so we can help you in case of troubles with the app. -# Screenshots - -
- GNOME - - ![GNOMELight](NickvisionMoney.GNOME/Screenshots/OpenAccount.png) - ![GNOMEDark](NickvisionMoney.GNOME/Screenshots/OpenAccountDark.png) - ![GNOMEDashboard](NickvisionMoney.GNOME/Screenshots/Dashboard.png) -

GNOMETransactionGNOMECompactMode

-

GNOMEAccountSettingsGNOMEPasswordDialog

-
- -
- PDF Export Sample +# Code of Conduct - ![image](https://user-images.githubusercontent.com/17648453/214471610-643b6b62-6b0b-4c65-8c1c-2093174fcbbc.png) - ![image](https://user-images.githubusercontent.com/17648453/214471621-0f44f955-6f98-4270-860a-833c58b3b149.png) - ![image](https://user-images.githubusercontent.com/17648453/214471627-1d8aa751-a6ac-4cac-a2b3-89e5364dae0a.png) -
+This project follows the [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct). # GNOME Theming @@ -72,9 +91,3 @@ The Linux version of this app is designed for GNOME and optimized for the defaul @define-color denaro_calendar_selected_day_fg_color #55cc10; @define-color denaro_calendar_other_month_fg_color @dark_5; ``` - -# Dependencies -- [.NET 8](https://dotnet.microsoft.com/en-us/) - -# Code of Conduct -This project follows the [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct). diff --git a/build.cake b/build.cake deleted file mode 100644 index bffe8ea5b..000000000 --- a/build.cake +++ /dev/null @@ -1,13 +0,0 @@ -const string appId = "org.nickvision.money"; -const string projectName = "NickvisionMoney"; -const string shortName = "denaro"; -readonly string[] projectsToBuild = new string[] { "GNOME" }; - -if (FileExists("CakeScripts/main.cake")) -{ - #load local:?path=CakeScripts/main.cake -} -else -{ - throw new CakeException("Failed to load main script."); -} \ No newline at end of file diff --git a/NickvisionMoney.Shared/Docs/html/C/C.css b/docs/html/C/C.css similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/C.css rename to docs/html/C/C.css diff --git a/NickvisionMoney.Shared/Docs/html/C/account.html b/docs/html/C/account.html similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/account.html rename to docs/html/C/account.html diff --git a/docs/html/C/configuration.html b/docs/html/C/configuration.html new file mode 100644 index 000000000..d61d05f29 --- /dev/null +++ b/docs/html/C/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/html/C/figures/denaro.png b/docs/html/C/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/figures/denaro.png rename to docs/html/C/figures/denaro.png diff --git a/NickvisionMoney.Shared/Docs/html/C/highlight.pack.js b/docs/html/C/highlight.pack.js similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/highlight.pack.js rename to docs/html/C/highlight.pack.js diff --git a/NickvisionMoney.Shared/Docs/html/C/import-export.html b/docs/html/C/import-export.html similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/import-export.html rename to docs/html/C/import-export.html diff --git a/NickvisionMoney.Shared/Docs/html/C/index.html b/docs/html/C/index.html similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/index.html rename to docs/html/C/index.html diff --git a/NickvisionMoney.Shared/Docs/html/C/transaction.html b/docs/html/C/transaction.html similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/transaction.html rename to docs/html/C/transaction.html diff --git a/NickvisionMoney.Shared/Docs/html/C/transfer.html b/docs/html/C/transfer.html similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/transfer.html rename to docs/html/C/transfer.html diff --git a/NickvisionMoney.Shared/Docs/html/C/yelp.js b/docs/html/C/yelp.js similarity index 100% rename from NickvisionMoney.Shared/Docs/html/C/yelp.js rename to docs/html/C/yelp.js diff --git a/docs/html/ar/account.html b/docs/html/ar/account.html new file mode 100644 index 000000000..1c1e86f67 --- /dev/null +++ b/docs/html/ar/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/ar/ar.css b/docs/html/ar/ar.css new file mode 100644 index 000000000..9700bdb2f --- /dev/null +++ b/docs/html/ar/ar.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: rtl; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-right: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: right; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-right: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-right: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-right: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-right: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-right: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: left; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-right: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: right; + margin-left: 0.5em; + text-align: left; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-right: solid 4px #c0bfbc; + padding-right: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-right: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-right: 0; + } +} +a.figure-zoom { + float: left; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: left; + max-width: 248px; + margin-right: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-right: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-right: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-right: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-right: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-right: 1.44em; } +li.steps li.steps { margin-right: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-left: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-left: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: right; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: right; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-right: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-right: 6px; + padding-left: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-right: 6px; + padding-left: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: rightcontent: '”'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(-180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: right; + margin-left: 1em; +} +div.floatend { + float: left; + margin-right: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; right: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: right; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: left; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-left: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-right: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-right: solid 4px #3584e4; + padding-right: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-right: solid 4px #c0bfbc; + padding-right: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + right: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/ar/configuration.html b/docs/html/ar/configuration.html new file mode 100644 index 000000000..4528ec39d --- /dev/null +++ b/docs/html/ar/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
اللون المبدئيُّ للمعاملات
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
اللون المبدئيُّ للتحويلات
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
اللون المبدئيُّ للمجموعات
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/C/figures/denaro.png b/docs/html/ar/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/C/figures/denaro.png rename to docs/html/ar/figures/denaro.png diff --git a/docs/html/ar/highlight.pack.js b/docs/html/ar/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/ar/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/ar/import-export.html b/docs/html/ar/import-export.html new file mode 100644 index 000000000..3912cdc7a --- /dev/null +++ b/docs/html/ar/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/ar/index.html b/docs/html/ar/index.html new file mode 100644 index 000000000..ddba0105c --- /dev/null +++ b/docs/html/ar/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/ar/transaction.html b/docs/html/ar/transaction.html new file mode 100644 index 000000000..e23afb059 --- /dev/null +++ b/docs/html/ar/transaction.html @@ -0,0 +1,86 @@ + + + + + +المعاملة + + + +
+

المعاملة

+
+
+

This page explains all properties of transactions in Denaro.

+
+
المعرِّف
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
المَبلغ
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
النوع
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
مدَّة التكرار
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
تاريخ انتهاء التكرار
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
الوسوم
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/ar/transfer.html b/docs/html/ar/transfer.html new file mode 100644 index 000000000..42e4cc15a --- /dev/null +++ b/docs/html/ar/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/ar/yelp.js b/docs/html/ar/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/ar/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/bg/account.html b/docs/html/bg/account.html new file mode 100644 index 000000000..fef7bdf14 --- /dev/null +++ b/docs/html/bg/account.html @@ -0,0 +1,134 @@ + + + + + +Сметка + + + +
+

Сметка

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Име
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Вид на сметката
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Стандартен вид на операциите
+

When you create a new transaction its type by default will be the same as in this setting.

+
Праг на напомнянията за операции
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Използване на собствена валута
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Парола
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/bg/bg.css b/docs/html/bg/bg.css new file mode 100644 index 000000000..a1fed39fc --- /dev/null +++ b/docs/html/bg/bg.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '”'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/bg/configuration.html b/docs/html/bg/configuration.html new file mode 100644 index 000000000..bfcfd8d0e --- /dev/null +++ b/docs/html/bg/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Тема
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Стандартен цвят на операциите
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Стандартен цвят на преводите
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Стандартен цвят на групите
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Вмъкване на десетичен знак
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/figures/denaro.png b/docs/html/bg/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ar/figures/denaro.png rename to docs/html/bg/figures/denaro.png diff --git a/docs/html/bg/highlight.pack.js b/docs/html/bg/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/bg/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/bg/import-export.html b/docs/html/bg/import-export.html new file mode 100644 index 000000000..d6b844ed5 --- /dev/null +++ b/docs/html/bg/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/bg/index.html b/docs/html/bg/index.html new file mode 100644 index 000000000..da7b11442 --- /dev/null +++ b/docs/html/bg/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/bg/transaction.html b/docs/html/bg/transaction.html new file mode 100644 index 000000000..edf79a6bb --- /dev/null +++ b/docs/html/bg/transaction.html @@ -0,0 +1,86 @@ + + + + + +Операция + + + +
+

Операция

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Идентификатор
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Описание
+

No limit on length. It can't contain semicolon.

+
Сума
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Вид
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Дата
+

Any date can be selected, you can also create transactions for future dates.

+
Интервал на повторение
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Крайна дата на повторение
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Група
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Цвят
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Етикети
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Разписка
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Бележки
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/bg/transfer.html b/docs/html/bg/transfer.html new file mode 100644 index 000000000..e5cc7ad20 --- /dev/null +++ b/docs/html/bg/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/bg/yelp.js b/docs/html/bg/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/bg/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/cs/account.html b/docs/html/cs/account.html new file mode 100644 index 000000000..68ccafa86 --- /dev/null +++ b/docs/html/cs/account.html @@ -0,0 +1,139 @@ + + + + + +Účet + + + +
+

Účet

+
+
+

Na této stránce jsou vysvětleny všechny vlastnosti účtů v aplikaci Denaro. Většina z nich je uvedena v dialogovém okně Nastavení účtu. Toto okno se také automaticky otevře po vytvoření nového účtu.

+

Každý účet je uložen v jednom souboru *.nmoney. Soubory vytvořené ve starší stabilní verzi aplikace Denaro lze bezpečně otevřít v novější stabilní verzi aplikace. Přestože aplikace může běžet na různých platformách (Windows a Linux), soubory *.nmoney jsou mezi platformami 100% kompatibilní, pokud pocházejí ze stejné verze aplikace (např. V2023.1.0).

+
+ + +

Nestabilní (beta a RC) verze aplikace mohou obsahovat chyby nebo nedokončené úpravy, které mohou způsobit ztrátu dat. NEPOUŽÍVEJTE soubory účtů, které obsahují skutečná data, v nestabilních verzích aplikace!

+
+
+
Název
+

Název účtu se zobrazuje v seznamu posledních účtů a na kartách. Název nemá omezenou délku a může obsahovat libovolné znaky včetně emotikonů.

+
Typ účtu
+

K dispozici jsou 3 typy účtů: 🟣Běžný, 🔵Spořicí a 🟢Firemní. Typ účtu je pouze užitečné označení, které se zobrazuje v seznamu posledních účtů a nemá vliv na to, jak aplikace funguje nebo co můžete s účtem dělat. Každý typ účtu má svou vlastní barvu, tyto barvy lze nakonfigurovat v globálním nastavení .

+
Výchozí typ transakce
+

Při vytváření nové transakce bude její typ ve výchozím nastavení stejný jako v tomto nastavení.

+
Hranice pro připomenutí transakcí
+

Hranice použitá při zobrazování připomínek o nadcházejících transakcích.

+
Systémová měna
+
+

Při každém spuštění získá aplikace údaje o měně a formátování čísel z vašich systémových místních nastavení. Tyto údaje se použijí k zobrazení symbolu měny (pokud není použita vlastní měna, viz níže) a k určení, v jakém formátu budou čísla přijímána jako hodnoty částek transakcí. Několik příkladů:

+
    +
  • Pokud je vaše místní prostředí Angličtina (Spojené státy), symbol měny bude nastaven na $ a 1,000.00 bude akceptováno jako platné číslo.

  • +
  • Pokud je vaše místní prostředí Čeština, symbol měny bude nastaven na a 1 000,00 bude akceptováno jako platné číslo.

  • +
  • Pokud je vaše místní prostředí Ruština, symbol měny bude nastaven na a 1000,00 bude akceptováno jako platné číslo.

  • +
+
+ + + + + + + + + + + + + +

V systému Linux je možné nastavit různé místní jazyky a formáty systému. Změna těchto nastavení se liší v závislosti na používaném desktopovém prostředí. Navzdory rozdílům v umístění těchto nastavení jejich změna upraví proměnné systémového prostředí, například LANG, LC_TIME a LC_MONETARY. Denaro se pokusí použít formáty částek a dat podle těchto proměnných. Pokud aplikace očekávané formáty nepoužívá, zkontrolujte, zda jsou proměnné správně nastaveny pomocí příkazu locale v terminálu. Pokud jste našli chybu a chcete ji nahlásit, poskytněte prosím výstup příkazu locale, aby mohli vývojáři reprodukovat váš problém se stejným nastavením.

+
+
+
Použít vlastní měnu
+

Pokud je tato možnost povolena, bude místo symbolu měny, který poskytuje vaše systémové prostředí, použit vlastní symbol měny.

+
Vlastní symbol měny
+

Až 3 znaky nebo 1 emotikon. Nemůže to být číslo.

+
Vlastní kód měny
+
+

Až 3 znaky nebo 1 emotikon.

+

Příklad pro pochopení rozdílu mezi symbolem a kódem: je symbol, CZK je kód.

+
+
Vlastní styl množství měny
+
+

Výběr mezi zobrazením množství jedním z následujících způsobů:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Vlastní oddělovače desetinných míst a skupin měn
+

Až 2 znaky nebo 1 emotikon.

+
Vlastní desetinné číslice měny
+

Velikost desetinné části hodnot částek. Při „neomezeném“ počtu číslic bude v desetinné části tolik čísel, kolik je potřeba k zobrazení přesné částky, ale pokud je částka celým číslem, nebude desetinná část žádná.

+
Heslo
+

Každý účet může být chráněn heslem. Přidáním hesla se účet zašifruje (bez dešifrování pomocí hesla není možné data číst). Buďte opatrní: pokud heslo ztratíte, nebudete moci data obnovit! Heslo lze také změnit nebo odstranit pomocí dialogového okna nastavení otevřeného účtu. Odstraněním hesla dojde k dešifrování účtu.

+
Řazení podle ID, data nebo částky
+

U každého účtu je uloženo, zda se mají transakce v hlavním okně řadit podle ID, data nebo částky. Pokaždé, když toto nastavení změníte, bude uloženo do souboru účtu a obnoví se při jeho opětovném otevření.

+
Pořadí řazení
+

Každý účet uchovává informace o pořadí transakcí v hlavním okně. Pokaždé, když je změníte, uloží se do souboru účtu a obnoví se při jeho opětovném otevření.

+
Viditelnost skupin
+

Každý účet ukládá informace o tom, zda je seznam skupin v hlavním okně skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu skupin, je tato informace uložena a poté obnovena při opětovném otevření účtu.

+
Viditelnost štítků
+

Každý účet ukládá informace o tom, zda je seznam štítků v hlavním okně skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu štítků, je tato informace uložena a poté obnovena při opětovném otevření účtu.

+
+
+ +
+
+
+ diff --git a/docs/html/cs/configuration.html b/docs/html/cs/configuration.html new file mode 100644 index 000000000..09894feaa --- /dev/null +++ b/docs/html/cs/configuration.html @@ -0,0 +1,78 @@ + + + + + +Nastavení + + + +
+

Nastavení

+
+
+

Na této stránce je popsáno, co můžete změnit v nastavení aplikace.

+

V závislosti na platformě je konfigurace v rozhraní aplikace označena jako Předvolby nebo Nastavení.

+
+
Motiv
+

Nastavte si světlý nebo tmavý motiv, nebo nastavte, aby Denaro následovalo váš systémový motiv. Změna tohoto nastavení v systému Windows vyžaduje restart aplikace, aby se uplatnila.

+
Výchozí barva transakce
+

Barva, která bude vybrána jako výchozí při přidání nové transakce s jedinečnou barvou. Její změna neovlivní existující transakce, i když používají dříve zvolenou výchozí barvu.

+
Výchozí barva převodu
+

Barva, která bude použita pro transakce vytvořené pomocí převodu . Změna tohoto parametru neovlivní existující transakce.

+
Výchozí barva skupiny
+

Barva, která bude ve výchozím nastavení vybrána při přidávání nové skupiny. Je to také barva pro skupinu „Neseskupené“.

+
Vložení desetinného oddělovače
+

Nastavení, pro které stisknuté klávesy se do pole částky vloží desetinný oddělovač lokálního jazyka: tečka na numerickém bloku, libovolná tečka a čárka nebo žádný. Pokud již je desetinný oddělovač v poli, nebude vložen.

+
+
+ +
+
+
+ diff --git a/docs/html/cs/cs.css b/docs/html/cs/cs.css new file mode 100644 index 000000000..a1fed39fc --- /dev/null +++ b/docs/html/cs/cs.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '”'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/figures/denaro.png b/docs/html/cs/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/cs/figures/denaro.png rename to docs/html/cs/figures/denaro.png diff --git a/docs/html/cs/highlight.pack.js b/docs/html/cs/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/cs/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/cs/import-export.html b/docs/html/cs/import-export.html new file mode 100644 index 000000000..cb4513011 --- /dev/null +++ b/docs/html/cs/import-export.html @@ -0,0 +1,163 @@ + + + + + +Import/export + + + +
+

Import/export

+
+
+
+

Formáty importu

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Data by měla být ve formátu RRRRMMDD.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Data by měla být v anglickém (americkém) formátu (MM/DD/RRRR).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ Formát CSV je sice běžný a některé banky umožňují svým uživatelům exportovat informace ve formátu CSV, ale tyto soubory jsou ve skutečnosti tabulky, které mohou obsahovat libovolná data. Import souboru CSV vytvořeného v jiném programu selže, protože jeho data nebudou kompatibilní s tím, co se aplikace Denaro snaží ze souboru získat. Účelem importu/exportu CSV je poskytnout způsob, jak přidávat data do účtu pomocí externích programů, jako jsou textové editory a kancelářské balíky. Import přidá pouze nové transakce, aniž by přepsal ty stávající. Pokud chcete soubor CSV vytvořit ručně, toto je hlavička, která obsahuje všechny sloupce, které aplikace Denaro očekává, že najde:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      ID transakce, mělo by být pro daný účet jedinečné. ID začínají číslem 1.

      +
    • +
    • +

      Date

      +

      Datum transakce (nebo datum zahájení v případě opakované transakce) by mělo být v anglickém (americkém) formátu (MM/DD/RRRR).

      +
    • +
    • +

      Description

      +

      Popis transakce, může obsahovat libovolné znaky kromě středníku.

      +
    • +
    • +

      Type

      +

      Typ transakce: 0 pro příjem, 1 pro výdaj.

      +
    • +
    • +

      RepeatInterval

      +

      Číslo představující interval opakování transakce:

      +

      0 - Nikdy

      +

      1 - Denně

      +

      2 - Týdně

      +

      7 - Dvakrát týdně

      +

      3 - Měsíčně

      +

      4 - Čtvrtletně

      +

      5 - Ročně

      +

      6 - Dvakrát ročně

      +

      Podrobnosti o opakovaných transakcích naleznete v části Interval opakování na stránce transakce.

      +
    • +
    • +

      RepeatFrom

      +

      Mělo by to být buď ID zdrojové transakce nebo 0, pokud se jedná o zdrojovou transakci, nebo -1, pokud se nejedná o opakovanou transakci.

      +
    • +
    • +

      RepeatEndDate

      +

      Datum ukončení opakované transakce by mělo být v anglickém (americkém) formátu (MM/DD/RRRR). Pokud se nejedná o opakovanou transakci, ponechte jej prázdný.

      +
    • +
    • +

      Amount

      +

      Částka transakce v anglickém (americkém) formátu (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Barva transakce, by měla být ve formátu rgb(R,G,B), kde R, G a B jsou celá čísla v rozsahu 0 až 255.

      +
    • +
    • +

      UseGroupColor

      +

      Zda má transakce používat skupinovou barvu: 0 — ne, 1 — ano.

      +
    • +
    • +

      Group

      +

      ID skupiny transakce. ID začíná číslem 1. U neseskupených transakcí by mělo být -1 (ne 0, to je nesprávná hodnota pro ID skupiny).

      +
    • +
    • +

      GroupName

      +

      Název skupiny transakce, měl by odpovídat ID skupiny. Může obsahovat libovolné znaky kromě středníku. Pro transakce bez skupiny jej ponechte prázdný, v ostatních případech by neměl být prázdný.

      +
    • +
    • +

      GroupDescription

      +

      Popis skupiny transakce, měl by odpovídat identifikačnímu číslu skupiny. Může obsahovat libovolné znaky kromě středníku a může být prázdný. Pro transakce bez skupiny jej ponechte prázdný.

      +
    • +
    • +

      GroupRGBA

      +

      Barva skupiny, měla by být ve formátu rgb(R,G,B), kde R, G a B jsou celá čísla v rozsahu 0 až 255.

      +
    • +
    +

    Faktura a poznámky se v souboru CSV nenachází.

    +
  • +
+
+
+

Formáty exportu

+
+

Můžete si vybrat, zda chcete exportovat všechny informace, nebo pouze aktuální zobrazení. Pokud vyberete aktuální zobrazení, budou aktuálně zobrazené transakce exportovány ve stejném pořadí, v jakém jsou zobrazeny.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    Soubor bude obsahovat informace o účtu, seznam transakcí a obrázky faktur. Transakce jsou barevné jako v aplikaci, ale barvy jsou upraveny tak, že jsou poloprůhledné, aby byl černý text vždy dobře viditelný. Pro exportovaný soubor můžete nastavit heslo.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/cs/index.html b/docs/html/cs/index.html new file mode 100644 index 000000000..dc274e438 --- /dev/null +++ b/docs/html/cs/index.html @@ -0,0 +1,63 @@ + + + + + +Nápověda aplikace Denaro + + + +
+
+
+ diff --git a/docs/html/cs/transaction.html b/docs/html/cs/transaction.html new file mode 100644 index 000000000..b5d26886f --- /dev/null +++ b/docs/html/cs/transaction.html @@ -0,0 +1,91 @@ + + + + + +Transakce + + + +
+

Transakce

+
+
+

Na této stránce jsou vysvětleny všechny vlastnosti transakcí v aplikaci Denaro.

+
+
ID
+

Každá transakce má ID, které je pro daný účet jedinečné. ID začíná číslem 1 a zvyšuje se s každou přidanou transakcí. ID nelze měnit, identifikátory odstraněných transakcí se znovu nepoužívají.

+
Popis
+

Délka není omezena. Nesmí obsahovat středník.

+
Množství
+

Číslo ve formátu platném pro vaše místní prostředí, podrobnosti viz Systémová měna na stránce Účet.

+
Typ
+

Příjem nebo Výdaj. Ve výchozím nastavení se při otevření dialogu pro přidání nové transakce vybere ta, která byla zvolena v nastavení účtu.

+
Datum
+

Lze vybrat libovolné datum, můžete také vytvářet transakce pro budoucí data.

+
Interval opakování
+

Tuto možnost použijte k vytvoření opakující se transakce. Po přidání transakce s intervalem opakování se tato transakce stane zdrojovou transakcí. Aplikace Denaro bude automaticky generovat opakované transakce pro data do dnešního dne nebo zadaného data ukončení, pokud je nastaveno v minulosti. Opakované transakce nelze upravovat ani mazat, upravovat lze pouze zdrojové transakce. Při úpravě zdrojové transakce se aplikace Denaro zeptá, zda chcete upravit nebo zrušit přiřazení opakovaných transakcí. Pokud se rozhodnete pro zrušení přiřazení, opakované transakce se stanou normálními transakcemi a lze je upravovat nebo mazat samostatně.

+
Datum ukončení opakování
+

Datum ukončení transakce s opakováním. Nemůže být dřívější nebo stejné jako datum zahájení.

+
Skupina
+

Každá transakce může patřit pouze do jedné skupiny nebo do žádné (skupina „Neseskupené“).

+
Barva
+

Barva pro transakce. Lze nastavit použití barvy skupiny nebo jedinečné barvy. Při výběru jedinečné barvy bude ve výchozím nastavení nastavena na barvu vybranou v nastavení, lze ji ale změnit na libovolnou barvu.

+
Štítky
+

Seznam štítků pro transakci. Transakce může mít neomezený počet štítků (nebo může být bez nich). Štítky mohou obsahovat libovolné znaky kromě čárky (,) a mohou mít libovolnou délku, očekává se však, že se bude jednat o krátká klíčová slova. Štítky jsou určeny k dodatečnému filtrování, pokud nestačí použití skupin. Štítky se ukládají pouze v samotných transakcích, v důsledku čehož nepoužité štítky při uzavření účtu automaticky zmizí.

+
Faktura
+

Obrázek faktury za transakci. Můžete nahrát obrázek JPEG nebo PNG nebo dokument PDF, ale bez ohledu na formát bude převeden a uložen jako obrázek JPEG. V případě PDF bude uložena pouze první stránka. Soubor můžete kdykoli odstranit nebo nahrát jiný.

+
Poznámky
+

Volně formulovaná textová poznámka, která se připojí k transakci.

+
+
+ +
+
+
+ diff --git a/docs/html/cs/transfer.html b/docs/html/cs/transfer.html new file mode 100644 index 000000000..0218ce6b9 --- /dev/null +++ b/docs/html/cs/transfer.html @@ -0,0 +1,72 @@ + + + + + +Převod + + + +
+

Převod

+
+
+

Převod je způsob, jak lze přenést peníze z jednoho účtu na druhý. Po provedení převodu se vytvoří 2 transakce s následujícími popisy:

+
    +
  • „Převod na Název cílového účtu“ na zdrojovém účtu.

  • +
  • „Převod z Název zdrojového účtu“ na cílovém účtu.

  • +
+

Transakce vytvořené pomocí převodu jsou jednoduché transakce, které lze libovolně upravovat nebo mazat. Tyto transakce nejsou propojené: úprava transakce na zdrojovém účtu neovlivní transakci na cílovém účtu a naopak.

+

Převod neumožňuje vytvářet opakující se transakce ani nastavovat jiné vlastnosti než částku. Pro vytvořené transakce se použije barva vybraná v nastavení .

+

Pokud vytváříte převod mezi účty v různých měnách, budete vyzváni k zadání převodního kurzu.

+
+ +
+
+
+ diff --git a/docs/html/cs/yelp.js b/docs/html/cs/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/cs/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/da/account.html b/docs/html/da/account.html new file mode 100644 index 000000000..d114c2872 --- /dev/null +++ b/docs/html/da/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/da/configuration.html b/docs/html/da/configuration.html new file mode 100644 index 000000000..fea94120f --- /dev/null +++ b/docs/html/da/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/docs/html/da/da.css b/docs/html/da/da.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/da/da.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/NickvisionMoney.Shared/Docs/yelp/da/figures/denaro.png b/docs/html/da/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/da/figures/denaro.png rename to docs/html/da/figures/denaro.png diff --git a/docs/html/da/highlight.pack.js b/docs/html/da/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/da/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/da/import-export.html b/docs/html/da/import-export.html new file mode 100644 index 000000000..155ebb485 --- /dev/null +++ b/docs/html/da/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/da/index.html b/docs/html/da/index.html new file mode 100644 index 000000000..cea3b0cd6 --- /dev/null +++ b/docs/html/da/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/da/transaction.html b/docs/html/da/transaction.html new file mode 100644 index 000000000..c807c8527 --- /dev/null +++ b/docs/html/da/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/da/transfer.html b/docs/html/da/transfer.html new file mode 100644 index 000000000..950ac3ca2 --- /dev/null +++ b/docs/html/da/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/da/yelp.js b/docs/html/da/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/da/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/de/account.html b/docs/html/de/account.html new file mode 100644 index 000000000..02f12c75d --- /dev/null +++ b/docs/html/de/account.html @@ -0,0 +1,139 @@ + + + + + +Konto + + + +
+

Konto

+
+
+

Auf dieser Seite werden alle Eigenschaften von Konten in Denaro erläutert. Die meisten von ihnen werden im Dialog Kontoeinstellungen angezeigt. Dieser Dialog wird auch automatisch geöffnet, nachdem du ein neues Konto erstellt hast.

+

Jedes Konto wird in einer einzelnen *.nmoney Datei gespeichert. Dateien, die in einer älteren stabilen Version von Denaro erstellt worden sind, können unbedenklich in einer aktuelleren stabilen Version der Anwendung geöffnet werden. Obwohl die Anwendung auf verschiedenen Betriebssystemen laufen kann (Windows und Linux), sind die *.nmoney Dateien nur dann 100% kompatibel zwischen den Betriebssystemen, wenn sie von derselben Anwendungsversion stammen (z. B. V2023.1.0).

+
+ + +

Instabile (Beta und RC) Anwendungsversionen können Fehler oder nicht fertiggestellte Anpassungen enthalten, die zu Datenverlust führen können. Benutze KEINE Kontodateien, die echte Daten enthalten, in einer instabilen Version der Anwendung!

+
+
+
Name
+

Der Kontoname wird in der Liste der zuletzt verwendeten Konten und in den Registerkarten angezeigt. Ein Name hat keine Längenbeschränkung und kann beliebige Zeichen enthalten, einschließlich Emojis.

+
Konto Typ
+

Es sind 3 Konto - Typen verfügbar: 🟣Girokonto, 🔵Sparkonto und 🟢Geschäftskonto. Der Konto - Typ ist nur ein nützliches Kennzeichnung, welche keine Auswirkungen auf die Funktion der Anwendung haben. Der Konto - Typ wird in der Liste der kürzlich bearbeiteten Konten angezeigt. Jeder Konto - Typ hat eine eigene Farbe, welche in den Globalen Einstellungen bearbeitet werden können.

+
Standard-Transaktionsart
+

Wenn Sie eine neue Transaktion erstellen, ist ihr Typ standardmäßig derselbe wie in dieser Einstellung.

+
Schwellenwert für Überweisungserinnerungen
+

The threshold used when showing reminders about upcoming transactions.

+
Systemwährung
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Benutzerdefinierte Währung verwenden
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Benutzerdefiniertes Währungssymbol
+

Bis zu 3 Zeichen oder 1 Emoji. Es darf keine Zahl sein.

+
Benutzerdefinierter Währungscode
+
+

Bis zu 3 Zeichen oder 1 Emoji.

+

Ein Beispiel zum Verständnis des Unterschieds zwischen einem Symbol und einem Code: $ ist ein Symbol, USD ist ein Code.

+
+
Benutzerdefinierter Währungsbetragsstil
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Benutzerdefinierte Dezimal- und Gruppentrennzeichen für Währungen
+

Bis zu 2 Zeichen oder 1 Emoji.

+
Benutzerdefinierte Währungsdezimalziffern
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Passwort
+

Jedes Konto kann durch ein Passwort geschützt werden. Das Hinzufügen eines Passworts führt zur Verschlüsselung des Kontos (wodurch es unmöglich wird, die Daten ohne Entschlüsselung mit dem Passwort zu lesen). Vorsicht: Wenn das Passwort verloren geht, können die Daten nicht wiederhergestellt werden! Ein Passwort kann auch über den Kontoeinstellungen-Dialog eines offenen Kontos geändert oder entfernt werden. Das Entfernen eines Passworts entschlüsselt das Konto.

+
Nach Kennung, Datum oder Betrag sortieren
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sortierreihenfolge
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Gruppen-Sichtbarkeit
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Schlagwörter-Sichtbarkeit
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/de/configuration.html b/docs/html/de/configuration.html new file mode 100644 index 000000000..4f021fd29 --- /dev/null +++ b/docs/html/de/configuration.html @@ -0,0 +1,78 @@ + + + + + +Konfiguration + + + +
+

Konfiguration

+
+
+

Diese Seite beschreibt, was Sie in der Anwendungskonfiguration ändern können.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Thema
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Standardfarbe für Überweisungen
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Standardfarbe der Gruppe
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Dezimaltrennzeichen einfügen
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/docs/html/de/de.css b/docs/html/de/de.css new file mode 100644 index 000000000..802994f1a --- /dev/null +++ b/docs/html/de/de.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '»'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 0.5em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/NickvisionMoney.Shared/Docs/yelp/de/figures/denaro.png b/docs/html/de/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/de/figures/denaro.png rename to docs/html/de/figures/denaro.png diff --git a/docs/html/de/highlight.pack.js b/docs/html/de/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/de/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/de/import-export.html b/docs/html/de/import-export.html new file mode 100644 index 000000000..8a9e1fa03 --- /dev/null +++ b/docs/html/de/import-export.html @@ -0,0 +1,163 @@ + + + + + +Importieren/Exportieren + + + +
+

Importieren/Exportieren

+
+
+
+

Importformate

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Die Daten sollten im Format JJJJMMTT sein.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Die Daten sollten im englischen (US) Format (MM/TT/JJJJ) sein.

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/de/index.html b/docs/html/de/index.html new file mode 100644 index 000000000..5e0e99585 --- /dev/null +++ b/docs/html/de/index.html @@ -0,0 +1,63 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/de/transaction.html b/docs/html/de/transaction.html new file mode 100644 index 000000000..6ced7691f --- /dev/null +++ b/docs/html/de/transaction.html @@ -0,0 +1,91 @@ + + + + + +Überweisung + + + +
+

Überweisung

+
+
+

This page explains all properties of transactions in Denaro.

+
+
ID
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Wiederholungs-Intervall
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Wiederholungs-Ende
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/de/transfer.html b/docs/html/de/transfer.html new file mode 100644 index 000000000..27c48a6db --- /dev/null +++ b/docs/html/de/transfer.html @@ -0,0 +1,72 @@ + + + + + +Überweisung + + + +
+

Überweisung

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/de/yelp.js b/docs/html/de/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/de/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/es/account.html b/docs/html/es/account.html new file mode 100644 index 000000000..08f9b58e1 --- /dev/null +++ b/docs/html/es/account.html @@ -0,0 +1,139 @@ + + + + + +Cuenta + + + +
+

Cuenta

+
+
+

Esta página explica todas las propiedades de las cuentas en Denaro. La mayoría de ellas se muestran en Diálogo de configuración de la cuenta. Este cuadro de diálogo también se abre automáticamente después de crear una cuenta nueva.

+

Cada cuenta se almacena en un único archivo *.nmoney. Los archivos creados en una versión estable anterior de Denaro pueden abrirse con seguridad en una versión estable más reciente de la aplicación. Aunque la aplicación puede funcionar en diferentes plataformas (Windows y Linux), los archivos *.nmoney son 100% compatibles entre plataformas siempre que sean de la misma versión de la aplicación (p.ej. V2023.1.0).

+
+ + +

Las versiones inestables (Beta y RC) de la aplicación pueden contener errores o modificaciones inacabadas que pueden causar la pérdida de datos. ¡No use archivos de cuenta que contengan datos reales en versiones inestables de la aplicación!

+
+
+
Nombre
+

El nombre de la cuenta se muestra en la lista de cuentas recientes y en las pestañas. Un nombre no tiene límite de longitud y puede contener cualquier carácter, incluidos emojis.

+
Tipo de cuenta
+

Hay 3 tipos de cuenta disponibles: 🟣Corriente, 🔵Ahorros y 🟢Empresas. El tipo de cuenta es sólo una etiqueta útil que se muestra en la lista de cuentas recientes y no afecta al funcionamiento de la aplicación ni a lo que se puede hacer con una cuenta. Cada tipo de cuenta tiene su propio color, estos colores se pueden configurar en la configuración global.

+
Tipo de transacción predeterminado
+

Cuando crea una transacción nueva, su tipo predeterminado será el mismo que en esta configuración.

+
Umbral de recordatorios de las transacciones
+

El umbral usado cuando se muestran los recordatorios de las próximas transacciones.

+
Moneda del sistema
+
+

Cada vez que se inicia la aplicación, obtiene datos sobre el formato de la moneda y los números de la configuración regional de su sistema, y estos datos se usan para mostrar el símbolo de la moneda (a menos que se use una moneda personalizada, consulte a continuación) y para determinar en qué formato se aceptarán los valores para los importes de las transacciones. Algunos ejemplos:

+
    +
  • Si su idioma es inglés (EE. UU.), el símbolo de moneda se establecerá en $ y se aceptará 1,000.00 como un número válido.

  • +
  • Si su configuración regional es italiana, el símbolo de moneda se establecerá en y se aceptará 1.000,00 como un número válido.

  • +
  • Si su configuración regional es ruso, el símbolo de moneda se establecerá en y se aceptará 1000,00 como un número válido.

  • +
+
+ + + + + + + + + + + + + +

En Linux, es posible establecer diferentes configuraciones regionales para el idioma y los formatos del sistema. La modificación de estos ajustes varía en función del entorno de escritorio que use. A pesar de las diferencias en la ubicación de estos ajustes en el escritorio, cambiar estos ajustes modifica las variables de entorno del sistema, como LANG, LC_TIME y LC_MONETARY. Denaro intentará usar los formatos de cantidad y fecha de acuerdo a estas variables. Si la aplicación falla al usar los formatos esperados, por favor asegúrese de que las variables están configuradas correctamente a través del comando locale en un terminal. Si ha encontrado un error y desea informar de ello, por favor proporcione la salida del comando locale para permitir a los desarrolladores reproducir su problema con la misma configuración.

+
+
+
Usar moneda personalizada
+

Si esta opción está activada, se usará Símbolo de moneda personalizado en lugar del símbolo de moneda proporcionado por la configuración regional de su sistema.

+
Símbolo de moneda personalizado
+

Hasta 3 caracteres o 1 emoji. No puede ser un número.

+
Código de moneda personalizado
+
+

Hasta 3 caracteres o 1 emoji.

+

Un ejemplo para entender la diferencia entre un símbolo y un código: $ es un símbolo, USD es un código.

+
+
Estilo del total de monedas personalizado
+
+

Elija entre mostrar las cantidades de una de las siguientes maneras:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Separadores decimales y de grupo personalizados
+

Hasta 2 caracteres o 1 emoji.

+
Dígitos decimales de moneda personalizados
+

El tamaño de la parte decimal de los valores de importe. Con dígitos "ilimitados" habrá tantos números en la parte decimal como sean necesarios para mostrar el importe exacto, pero no habrá parte decimal si el importe es un número entero.

+
Contraseña
+

Cada cuenta puede protegerse con una contraseña. Si añade una contraseña, la cuenta quedará encriptada (por lo que será imposible leer los datos sin desencriptarlos con la contraseña). Cuidado: si pierde la contraseña, no podrá recuperar los datos. La contraseña también puede cambiarse o eliminarse desde el cuadro de diálogo de configuración de una cuenta abierta. Al eliminar la contraseña, la cuenta quedará descifrada.

+
Ordenar por id, fecha o cantidad
+

Cada cuenta almacena si ordena las transacciones en la ventana principal por su id, fecha o cantidad. Cada vez que cambie esto, se guardará en el archivo de la cuenta y se restaurará cuando vuelva a abrir la cuenta.

+
Orden de clasificación
+

Cada cuenta almacena información sobre el orden de las transacciones en la ventana principal. Cada vez que cambie esto, se guardará en el archivo de la cuenta y se restaurará cuando vuelva a abrir la cuenta.

+
Visibilidad de grupos
+

Cada cuenta almacena información sobre si la lista de grupos en la ventana principal está oculta o no. Cada vez que cambia la visibilidad de la lista de grupos, se guarda y luego se restaura cuando vuelve a abrir la cuenta.

+
Visibilidad de las etiquetas
+

Cada cuenta almacena información sobre si la lista de las etiquetas de la ventana principal está oculta o no. Cada vez que cambie la visibilidad de la lista de las etiquetas, se guarda y después se restaura cuando vuelva a abrir la cuenta.

+
+
+ +
+
+
+ diff --git a/docs/html/es/configuration.html b/docs/html/es/configuration.html new file mode 100644 index 000000000..9cd3857ac --- /dev/null +++ b/docs/html/es/configuration.html @@ -0,0 +1,78 @@ + + + + + +Configuración + + + +
+

Configuración

+
+
+

Esta página describe lo que puede cambiar en la configuración de la aplicación.

+

Dependiendo de su plataforma, en la interfaz de la aplicación, la configuración se denomina Preferencias o Configuración.

+
+
Tema
+

Establezca un tema claro u oscuro, o haga que Denaro siga el tema de su sistema. Cambiar esto en Windows requiere que se reinicie la aplicación para aplicar.

+
Color de transacción predeterminado
+

Un color que se seleccionará por defecto al agregar una transacción nueva con color único. Cambiar esto no afectará las transacciones existentes, incluso si usa el color predeterminado seleccionado previamente.

+
Color predeterminado de la transferencia
+

Un color que se usará para transacciones creadas usando transferencia. Cambiar esto no afectará las transacciones existentes.

+
Color predeterminado del grupo
+

Color que se seleccionará por defecto al añadir un grupo nuevo. También es un color para el grupo "No agrupado".

+
Insertar separador decimal
+

Establece para qué teclas pulsadas se insertará el separador decimal de la configuración regional en un campo de importe: punto del teclado numérico, cualquier punto y coma, o ninguno. Si el separador decimal ya aparece en un campo, no se insertará.

+
+
+ +
+
+
+ diff --git a/docs/html/es/es.css b/docs/html/es/es.css new file mode 100644 index 000000000..176f46fdf --- /dev/null +++ b/docs/html/es/es.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '«'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 0.5em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/NickvisionMoney.Shared/Docs/yelp/es/figures/denaro.png b/docs/html/es/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/es/figures/denaro.png rename to docs/html/es/figures/denaro.png diff --git a/docs/html/es/highlight.pack.js b/docs/html/es/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/es/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/es/import-export.html b/docs/html/es/import-export.html new file mode 100644 index 000000000..21c82d833 --- /dev/null +++ b/docs/html/es/import-export.html @@ -0,0 +1,163 @@ + + + + + +Importar/Exportar + + + +
+

Importar/Exportar

+
+
+
+

Formatos de importación

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Las fechas deben estar en formato AAAMMDD.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Las fechas deben estar en formato inglés (EE. UU.) (MM/DD/AAAA).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ Si bien CSV es un formato común y algunos bancos permiten a sus usuarios exportar información como CSV, estos archivos son, de hecho, tablas que pueden contener datos arbitrarios. La importación de un archivo CSV creado en otro programa fallará porque sus datos no serán compatibles con lo que Denaro intenta obtener de un archivo. El propósito de importar/exportar CSV es proporcionar una forma de agregar datos a una cuenta mediante programas externos, como editores de texto y paquetes de oficina. La importación solo agregará nuevas transacciones sin anular las existentes. Si desea crear un archivo CSV manualmente, este es el encabezado que incluye todas las columnas que Denaro espera encontrar:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Id de transacción, debe ser único para una cuenta determinada. Los ids empiezan por 1.

      +
    • +
    • +

      Date

      +

      La fecha de la transacción (o fecha de inicio en caso de transacción repetida), debe estar en formato inglés (EE. UU.) (MM/DD/AAAA).

      +
    • +
    • +

      Description

      +

      Descripción de la transacción, puede contener cualquier carácter excepto punto y coma.

      +
    • +
    • +

      Type

      +

      Tipo de transacción: 0 para ingresos, 1 para gastos.

      +
    • +
    • +

      RepeatInterval

      +

      Un número que representa el intervalo de repetición de la transacción:

      +

      0 - Nunca

      +

      1 - Diario

      +

      2 - Semanal

      +

      7 - Quincenal

      +

      3 - Mensual

      +

      4 - Trimestral

      +

      5 - Anual

      +

      6 - Bianual

      +

      Véase Intervalo de repetición en la página de transacción para obtener más información sobre las transacciones repetidas.

      +
    • +
    • +

      RepeatFrom

      +

      Debe ser un id de transacción de origen o 0 si es una transacción de origen o -1 si no es una transacción repetida.

      +
    • +
    • +

      RepeatEndDate

      +

      Fecha de finalización de la transacción repetida, debe estar en formato inglés (EE. UU.) (MM/DD/AAAA). Déjelo vacío si no es una transacción repetida.

      +
    • +
    • +

      Amount

      +

      Importe de la transacción en formato inglés (US) (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Color de la transacción, debe estar en formato rgb(R,G,B) donde R, G y B son enteros en un rango entre 0 y 255.

      +
    • +
    • +

      UseGroupColor

      +

      Si una transacción debe usar el color de grupo: 0 - falso, 1 - verdadero.

      +
    • +
    • +

      Group

      +

      Id de grupo de la transacción. Los ids empiezan por 1. Para una transacción no agrupada debe ser -1 (no 0, este es un valor incorrecto para el id de grupo).

      +
    • +
    • +

      GroupName

      +

      Nombre del grupo de la transacción, debe coincidir con el id del grupo. Puede contener cualquier carácter excepto punto y coma. Déjelo vacío para transacciones no agrupadas, en cualquier otro caso no debería estar vacío.

      +
    • +
    • +

      GroupDescription

      +

      Descripción del grupo de la transacción, debe coincidir con el id del grupo. Puede contener cualquier carácter excepto punto y coma y puede estar vacía. Déjelo vacío para transacciones no agrupadas.

      +
    • +
    • +

      GroupRGBA

      +

      Color del grupo, debe estar en formato rgb(R,G,B) donde R, G y B son números enteros comprendidos entre 0 y 255.

      +
    • +
    +

    Los recibos y notas no están presentes en CSV.

    +
  • +
+
+
+

Formatos de exportación

+
+

Puede seleccionar si desea exportar toda la información o sólo la de la vista actual. Si selecciona la vista actual, las transacciones mostradas actualmente se exportarán en el mismo orden en que se muestran.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    Un archivo contendrá la información de una cuenta, una lista de transacciones e imágenes de recibos. Las transacciones están coloreadas como en la aplicación, pero los colores se modifican haciéndolos semitransparentes para que el texto negro siempre sea claramente visible. Puede establecer una contraseña para un archivo exportado.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/es/index.html b/docs/html/es/index.html new file mode 100644 index 000000000..d839bef6f --- /dev/null +++ b/docs/html/es/index.html @@ -0,0 +1,63 @@ + + + + + +Ayuda de Denaro + + + +
+
+
+ diff --git a/docs/html/es/transaction.html b/docs/html/es/transaction.html new file mode 100644 index 000000000..a5b164f95 --- /dev/null +++ b/docs/html/es/transaction.html @@ -0,0 +1,91 @@ + + + + + +Transacción + + + +
+

Transacción

+
+
+

Esta página explica todas las propiedades de las transacciones en Denaro.

+
+
Id
+

Cada transacción tiene una identificación que es única para una cuenta determinada. Los identificadores comienzan con 1 y aumentan con cada transacción agregada. Los ID no se pueden cambiar, los ID de las transacciones eliminadas no se reusan.

+
Descripción
+

Sin límite de longitud. No puede contener punto y coma.

+
Cantidad
+

Un número en un formato que sea válido para su región, consulte Moneda del sistema en Página de la cuenta para obtener detalles.

+
Tipo
+

Ingresos o Gastos. De forma predeterminada, el elegido en configuración de la cuenta se seleccionará cuando abra un cuadro de diálogo para agregar una transacción nueva.

+
Fecha
+

Se puede seleccionar cualquier fecha, también puede crear transacciones para fechas futuras.

+
Intervalo de repetición
+

Use esta opción para crear una transacción recurrente. Después de agregar una transacción con un intervalo de repetición, esta transacción se convertirá en una transacción de origen. Denaro generará automáticamente transacciones repetidas para las fechas hasta hoy o una fecha de finalización proporcionada si se estableció en el pasado. Las transacciones repetidas no se pueden editar ni eliminar, solo se puede modificar origen. Cuando modifique la transacción fuente, Denaro le preguntará si desea modificar o desasociar las transacciones repetidas. Si elige desasociar, las transacciones repetidas se convierten en transacciones normales y se pueden editar o eliminar por separado.

+
Repetir fecha final
+

Fecha de finalización de una transacción con repetición. No puede ser anterior o el mismo día que la fecha de inicio.

+
Grupo
+

Cada transacción puede pertenecer a un solo grupo o a ninguno (grupo "No agrupado").

+
Color
+

Un color para la transacción. Puede configurarse para usar un color de grupo o un color único. Al seleccionar un color único, se establecerá por defecto el color seleccionado en la configuración, pero puede cambiarse a cualquier color.

+
Etiquetas
+

Una lista de etiquetas para la transacción. Una transacción puede tener un número ilimitado de etiquetas (o no tener etiquetas). Las etiquetas pueden contener cualquier carácter excepto una coma (,) y tener cualquier longitud, pero se espera que sean palabras clave cortas. Las etiquetas están destinadas a usarse para el filtrado adicional cuando el uso de los grupos no es suficiente. Las etiquetas solo se guardan en las transacciones mismas y, como un resultado, las etiquetas no usadas desaparecen automáticamente al cerrar la cuenta.

+
Recibo
+

Una imagen de un recibo de transacción. Puede cargar una imagen JPEG o PNG o un documento PDF, pero sin importar el formato, se convertirá y se guardará como una imagen JPEG. En caso de PDF, solo se guardará la primera página. Puede eliminar o cargar otro archivo en cualquier momento.

+
Notas
+

Una nota de texto libre para adjuntar a la transacción.

+
+
+ +
+
+
+ diff --git a/docs/html/es/transfer.html b/docs/html/es/transfer.html new file mode 100644 index 000000000..e75f4ba9d --- /dev/null +++ b/docs/html/es/transfer.html @@ -0,0 +1,72 @@ + + + + + +Transferencia + + + +
+

Transferencia

+
+
+

La transferencia es una forma de mover dinero de una cuenta a otra. Después de ejecutar una transferencia, se crearán 2 transacciones con las siguientes descripciones:

+
    +
  • «Transferencia a Nombre de la cuenta de destino» en la cuenta de origen.

  • +
  • «Transferencia desde Nombre de la cuenta de origen» en la cuenta de destino.

  • +
+

Las transacciones creadas mediante la transferencia son transacciones simples que se pueden editar o eliminar libremente. Estas transacciones no están conectadas: la modificación de la transacción en la cuenta de origen no afectará la transacción en la cuenta de destino y viceversa.

+

La transferencia no le permite crear transacciones repetitivas ni establecer ninguna otra propiedad que no sea la cantidad. El color seleccionado en configuration se usará para las transacciones creadas.

+

Si crea una transferencia entre cuentas con divisas diferentes, se le pedirá que indique un tipo de conversión.

+
+ +
+
+
+ diff --git a/docs/html/es/yelp.js b/docs/html/es/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/es/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/et/account.html b/docs/html/et/account.html new file mode 100644 index 000000000..249e88c4e --- /dev/null +++ b/docs/html/et/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/et/configuration.html b/docs/html/et/configuration.html new file mode 100644 index 000000000..6b04a1d70 --- /dev/null +++ b/docs/html/et/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/docs/html/et/et.css b/docs/html/et/et.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/et/et.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/NickvisionMoney.Shared/Docs/yelp/et/figures/denaro.png b/docs/html/et/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/et/figures/denaro.png rename to docs/html/et/figures/denaro.png diff --git a/docs/html/et/highlight.pack.js b/docs/html/et/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/et/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/et/import-export.html b/docs/html/et/import-export.html new file mode 100644 index 000000000..046d8a2ec --- /dev/null +++ b/docs/html/et/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/et/index.html b/docs/html/et/index.html new file mode 100644 index 000000000..b11b5feee --- /dev/null +++ b/docs/html/et/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/et/transaction.html b/docs/html/et/transaction.html new file mode 100644 index 000000000..f40ed0ceb --- /dev/null +++ b/docs/html/et/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/et/transfer.html b/docs/html/et/transfer.html new file mode 100644 index 000000000..92d2d5ebe --- /dev/null +++ b/docs/html/et/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/et/yelp.js b/docs/html/et/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/et/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/fi/account.html b/docs/html/fi/account.html new file mode 100644 index 000000000..8eb1eff32 --- /dev/null +++ b/docs/html/fi/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/fi/configuration.html b/docs/html/fi/configuration.html new file mode 100644 index 000000000..3ae72539e --- /dev/null +++ b/docs/html/fi/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/docs/html/fi/fi.css b/docs/html/fi/fi.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/fi/fi.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/figures/denaro.png b/docs/html/fi/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fi/figures/denaro.png rename to docs/html/fi/figures/denaro.png diff --git a/docs/html/fi/highlight.pack.js b/docs/html/fi/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/fi/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/fi/import-export.html b/docs/html/fi/import-export.html new file mode 100644 index 000000000..d57439819 --- /dev/null +++ b/docs/html/fi/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/fi/index.html b/docs/html/fi/index.html new file mode 100644 index 000000000..1e3f65459 --- /dev/null +++ b/docs/html/fi/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/fi/transaction.html b/docs/html/fi/transaction.html new file mode 100644 index 000000000..0cb68fae6 --- /dev/null +++ b/docs/html/fi/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tunnisteet
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/fi/transfer.html b/docs/html/fi/transfer.html new file mode 100644 index 000000000..9500f89f8 --- /dev/null +++ b/docs/html/fi/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/fi/yelp.js b/docs/html/fi/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/fi/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/fr/account.html b/docs/html/fr/account.html new file mode 100644 index 000000000..13fab32d1 --- /dev/null +++ b/docs/html/fr/account.html @@ -0,0 +1,134 @@ + + + + + +Compte + + + +
+

Compte

+
+
+

Cette page explique toutes les propriétés des comptes dans Denaro. La plupart sont affichées dans la boîte de dialogue des Paramètres du compte. Cette boîte de dialogue s’ouvre automatiquement à la création d’un nouveau compte.

+

Chaque compte est enregistré dans un fichier *.nmoney. Les fichiers créés dans une ancienne version stable de Denaro peuvent être ouverts sans risque dans une version stable plus récente de l’application. Bien que l’application puisse être exécutée sous plusieurs plateformes (Windows et Linux), les fichiers *.nmoney sont 100% compatibles entre ces plateformes, tant qu’ils proviennent de la même version de l’application (i.e. V2023.1.0).

+
+ + +

Les version instables (Beta et RC) de l’application peuvent contenir des bogues ou des modifications inachevées pouvant causer des pertes de données. N'UTILISEZ PAS des fichiers de comptes contenant vos vraies données dans des versions instables de l’application !

+
+
+
Nom
+

Le nom du compte est affiché dans la liste des comptes récents et dans les onglets. Un nom n’a pas de limite de taille et peut contenir n’importe quel caractère, dont des émojis.

+
Type de compte
+

Il y a trois types de comptes possibles : 🟣Chèques, 🔵Épargne et 🟢Affaires. Le type de compte est uniquement une étiquette utile affichée dans la liste des comptes récents et n’affecte ni le fonctionnement de l’application ni les actions possibles avec un compte. Chaque type de compte a sa propre couleur, qui peut être configurée dans les paramètres généraux.

+
Type de transaction par défaut
+

Lorsque vous créerez une nouvelle transaction, son type par défaut sera le même que dans ce paramètre.

+
Seuil de rappel des transactions
+

Le seuil utilisé pour afficher des rappels des transactions à venir.

+
Devise du système
+
+

Chaque fois que l’application est lancée, elle récupère les données sur la monnaie et le format numérique de la langue locale de votre système ; ces données sont utilisées pour afficher le symbole monétaire (à moins qu’une devise personnalisée soit spécifiée, voir ci-dessous) et pour déterminer dans quel format les nombres seront acceptés comme des valeurs pour des montants de transactions. Quelques exemples :

+
    +
  • Si votre langue locale est l’Anglais (US), le symbole monétaire sera $ et 1,000.00 sera accepté comme une valeur numérique valide.

  • +
  • Si votre langue locale est l’Italien, le symbole monétaire sera et 1.000,00 sera accepté comme une valeur numérique valide.

  • +
  • Si votre langue locale est le Russe, le symbole monétaire sera et 1000,00 sera accepté comme une valeur numérique valide.

  • +
+
+ + + + + + + + + + + + + +

Sous Linux il est possible de définir plusieurs langues locales et formats numériques. La manière de modifier ce paramètre varie selon l’environnement de bureau utilisé. Malgré ces différences dans l’emplacement de ces paramètres, les modifier affecte des variables de l’environnement du système, comme LANG, LC_TIME, et LC_MONETARY. Denaro essaiera d’utiliser les formats numériques et de langue selon ces variables. Si l’application échoue à utiliser les formats attendus, assurez-vous que les variables sont correctement définies via la commande locale dans un terminal. Si vous trouvez un bogue et souhaitez le signaler, veillez fournir le résultat donné par la commande locale pour permettre aux développeurs de reproduire votre problème avec les mêmes paramètres.

+
+
+
Utiliser une devise personnalisée
+

Si cette option est activée, un Symbole monétaire personnalisé sera utilisé à la place de celui fourni par la langue locale de votre système.

+
Symbole monétaire personnalisé
+

Jusqu’à trois caractères ou 1 émoji. Il ne peut s’agir d’un nombre.

+
Code de devise personnalisé
+
+

Jusqu’à trois caractères ou 1 émoji.

+

Un exemple pour comprendre la différence entre un symbole et un code : $ est un symbole, USD est un code.

+
+
Style d’affichage personnalisé des montants de devises
+
+

Un choix entre plusieurs affichages possibles pour les montants de devises :

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Séparateur de décimales et de groupes personnalisé
+

Jusqu’à 2 caractères ou 1 émoji.

+
Chiffres des décimales personnalisés
+

La taille des décimales de la valeur d’un montant. Avec des chiffres « Illimités » la taille des décimales sera celle requise pour afficher le montant précis, mais il n’y aura pas de décimales si le montant est un nombre entier.

+
Mot de passe
+

Chaque compte peut être protégé par un mot de passe. Ajouter un mot de passe cryptera le compte (ce qui rendra la lecture des données impossible sans décryptage avec le bon mot de passe). Soyez prudent⋅e : si le mot de passe est perdu, vous ne pourrez pas récupérer les données ! Un mot de passe peut également être changé ou supprimé en utilisant la boîte de dialogue des paramètres du compte. Supprimer un mot de passe décryptera le compte.

+
Trier par identifiant, date ou montant
+

Au sein de chaque compte vous pouvez trier les transactions dans la fenêtre principale par identifiant, date ou montant. Chaque fois que vous le modifierez, le tri sera enregistré dans le fichier du compte et restauré à la prochaine ouverture.

+
Ordre de tri
+

Au sein de chaque compte vous pouvez modifier l’ordre des transactions dans la fenêtre principale. Chaque fois que vous modifierez l’ordre de tri, celui-ci sera enregistré dans le fichier du compte et restauré à la prochaine ouverture.

+
Visibilité des groupes
+

Chaque compte enregistre l’état affiché ou masqué de la liste des groupes dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de la liste des groupes, ce paramètre sera enregistré puis restauré à la prochaine ouverture.

+
Visibilité des étiquettes
+

Chaque compte enregistre l’état affiché ou masqué de la liste des étiquettes dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de la liste des étiquettes, ce paramètre sera enregistré puis restauré à la prochaine ouverture.

+
+
+ +
+
+
+ diff --git a/docs/html/fr/configuration.html b/docs/html/fr/configuration.html new file mode 100644 index 000000000..971ec7b4e --- /dev/null +++ b/docs/html/fr/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

Cette page décrit ce que vous pouvez modifier dans la configuration de l’application.

+

Dépendant de votre plateforme, la configuration apparaît dans l’interface de l’application sous le vocable Préférences ou Paramètres.

+
+
Thème
+

Définissez un thème sombre ou clair, ou faites en sorte que Denaro suive celui du système. Le changement de ce paramètre sous Windows requiert un redémarrage de l’application.

+
Couleur par défaut des transactions
+

Une couleur qui sera sélectionnée par défaut lors de l’ajout d’une nouvelle transaction avec une couleur unique. Changer ce paramètre n’affectera pas les transactions existantes, même si elles utilisaient la couleur par défaut précédemment sélectionnée.

+
Couleur par défaut des transferts
+

Une couleur qui sera utilisée pour les transactions créées par un transfert. Changer ce paramètre n’affectera pas les transactions existantes.

+
Couleur de groupe par défaut
+

Couleur sélectionnée par défaut lorsqu’un nouveau groupe sera ajouté. C’est également la couleur du groupe « Sans groupe ».

+
Insérer un séparateur de décimales
+

Définissez pour quelles touches pressées le séparateur décimal de la langue locale sera inséré lors de la saisie d’un montant : point du pavé numérique, n’importe quel point ou virgule du clavier, ou aucune. Si le séparateur des décimales est déjà présent dans le champ de saisie, il ne sera pas inséré.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/figures/denaro.png b/docs/html/fr/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fr/figures/denaro.png rename to docs/html/fr/figures/denaro.png diff --git a/docs/html/fr/fr.css b/docs/html/fr/fr.css new file mode 100644 index 000000000..176f46fdf --- /dev/null +++ b/docs/html/fr/fr.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '«'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 0.5em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/fr/highlight.pack.js b/docs/html/fr/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/fr/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/fr/import-export.html b/docs/html/fr/import-export.html new file mode 100644 index 000000000..254e340f7 --- /dev/null +++ b/docs/html/fr/import-export.html @@ -0,0 +1,158 @@ + + + + + +Importer / Exporter + + + +
+

Importer / Exporter

+
+
+
+

Formats d’importation

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Les dates devraient être au format AAAAMMJJ.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Les dates devraient être au format Anglais (US) (MM/JJ/AAAA).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ Bien que le format CSV soit courant et que certaines banques permettent à leurs utilisateurs d’exporter des informations au format CSV, ces fichiers sont en fait des tableaux qui peuvent contenir n’importe quelles données. L’importation d’un fichier CSV créé dans un autre programme échouera, car ses données ne seront pas compatibles avec ce que Denaro tentera d’obtenir du fichier. L’objectif de l’importation/exportation de fichiers CSV est de fournir un moyen d’ajouter des données à un compte à l’aide de programmes externes tels que des éditeurs de texte et des suites bureautiques. L’importation n’ajoutera que les nouvelles transactions sans remplacer les transactions existantes. Si vous souhaitez créer un fichier CSV manuellement, voici l’en-tête qui inclut toutes les colonnes que Denaro s’attend à trouver :

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Identification de transaction, devrait être unique pour un compte donné. Les identifiants commencent à 1.

      +
    • +
    • +

      Date

      +

      La date de la transaction (ou la date de départ dans le cas d’une transaction répétée), devrait être au format américain (MM/JJ/AAAA).

      +
    • +
    • +

      Description

      +

      Description de la transaction, elle peut contenir n’importe quel caractère sauf des points-virgules.

      +
    • +
    • +

      Type

      +

      Type de transaction : 0 pour un revenu, 1 pour une dépense.

      +
    • +
    • +

      RepeatInterval

      +

      Un nombre représentant un intervalle de répétition de la transaction :

      +

      0 - Jamais

      +

      1 - Quotidien

      +

      2 - Hebdomadaire

      +

      7 - Bi-hebdomadaire

      +

      3 - Mensuel

      +

      4 - Trimestriel

      +

      5 - Annuel

      +

      6 - Bi-annuel

      +

      Voir Intervalle de répétition dans la page des transactions pour des détails sur les transactions répétées.

      +
    • +
    • +

      RepeatFrom

      +

      Devrait être soit un identifiant de transaction source, ou 0 si c’est une transaction source, ou -1 si ce n’est pas une transaction répétée.

      +
    • +
    • +

      RepeatEndDate

      +

      Date de fin pour la transaction répétée ; elle devrait être au format américain (MM/JJ/AAAA). Laissez-la vide si ce n’est pas une transaction répétée.

      +
    • +
    • +

      Amount

      +

      Montant de la transaction au format américain (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Couleur de la transaction ; elle devrait être au format rgb (R,G,B)) où R, G et B sont des nombres entiers compris entre 0 et 255.

      +
    • +
    • +

      UseGroupColor

      +

      Indique si une transaction devrait utiliser le groupe de couleur : 0 — non, 1 — oui.

      +
    • +
    • +

      Group

      +

      Identifiant du groupe de transactions. Les identifiant commencent à 1. Pour les transactions sans groupe, ce devrait être -1 (et non pas 0 qui est une valeur incorrecte pour un identifiant de groupe).

      +
    • +
    • +

      GroupName

      +

      Nom du groupe de transactions ; il devrait correspondre à l’identifiant du groupe. Il peut contenir n’importe quel caractère, à l’exception des points-virgules. Laissez-le vide pour les transactions sans groupe ; dans tous les autres cas il ne devrait pas être vide.

      +
    • +
    • +

      GroupDescription

      +

      Description du groupe de transactions ; elle devrait correspondre à l’identifiant du groupe. Elle peut contenir n’importe quel caractère à l’exception des points-virgules. Laissez-la vide pour les transactions sans groupe.

      +
    • +
    • +

      GroupRGBA

      +

      Couleur du groupe ; elle devrait être au format rgb(R,G,B)R, G et B sont des nombres entiers compris entre 0 et 255.

      +
    • +
    +

    Les reçus et les notes ne sont pas présents dans le fichier CSV.

    +
  • +
+
+
+

Formats d’exportation

+
+

Vous pouvez choisir d’exporter toutes les informations ou seulement celles de la vue actuelle. Si vous sélectionnez cette dernière option, les transactions actuellement affichées seront exportées dans le même ordre que celui dans lequel elles apparaissent.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    Un fichier contiendra les informations du compte, une liste des transactions et les images des reçus. Les transactions seront colorées comme dans l’application, mais les couleurs seront modifiées en étant rendues à moitié transparentes pour que le texte en noir reste toujours visible. Vous pouvez définir un mot de passe pour le fichier exporté.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/fr/index.html b/docs/html/fr/index.html new file mode 100644 index 000000000..cea72c49a --- /dev/null +++ b/docs/html/fr/index.html @@ -0,0 +1,58 @@ + + + + + +Aide de Denaro + + + +
+
+
+ diff --git a/docs/html/fr/transaction.html b/docs/html/fr/transaction.html new file mode 100644 index 000000000..dc6a3805a --- /dev/null +++ b/docs/html/fr/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

Cette page explique toutes les propriétés des transactions dans Denaro.

+
+
Identifiant
+

Chaque transaction a un identifiant unique pour un compte donné. Les identifiants commencent avec 1 et augmentent pour chaque transaction ajoutée. Les identifiants ne peuvent être modifiés, et les identifiants des transactions supprimées ne sont pas réutilisés.

+
Description
+

Pas de limite de taille. Elle ne peut contenir des points-virgules.

+
Montant
+

Un nombre dans un format valide pour votre langue locale, voir Devise du système dans la page du compte pour plus de détails.

+
Type
+

Revenu ou Dépense. Par défaut la valeur choisie dans les Paramètres du compte sera sélectionnée lorsque vous ouvrirez une boîte de dialogue pour ajouter une nouvelle transaction.

+
Date
+

N’importe quelle date peut être sélectionnée, vous pouvez aussi créer des transactions pour des dates futures.

+
Intervalle de répétition
+

Utilisez cette option pour créer une transaction récurrente. Après avoir ajouté la transaction avec l’intervalle de répétition, celle-ci deviendra une transaction source. Denaro générera automatiquement des transactions répétées pour les dates indiquées à partir d’aujourdhui ou jusqu’à la date de fin définie. Les transactions répétées ne peuvent pas être modifiées ou supprimées, mais seulement leur source. Lorsque vous modifierez la transaction source, Denaro vous demandera si vous souhaiter modifier ou dissocier les transactions répétées. Si vous choisissez la dissociation, les transactions répétées deviendront des transactions normales et pourront être modifiées ou supprimées séparément.

+
Date de fin de répétition
+

Date de fin d’une transaction récurrente. Elle ne peut pas être avant ou le même jour que la date de début.

+
Groupe
+

Chaque transaction peut appartenir à un ou bien à aucun groupe (groupe « Sans groupe »).

+
Couleur
+

Une couleur pour les transactions. Elle peut être définie pour utiliser un groupe de couleur ou une couleur unique. Lors de la sélection d’une couleur unique, elle sera définie par défaut comme la couleur sélectionnée dans la configuration, mais peut être modifiée en n’importe quelle couleur.

+
Étiquettes
+

Une liste d’étiquettes pour les transactions. Une transaction peut avoir un nombre illimité d’étiquettes (ou ne pas en avoir). Les étiquettes peuvent contenir n’importe quel caractère sauf des virgules (,), et peuvent avoir n’importe quelle longueur, bien qu’elles soient conçues pour de courts mots-clés. Les étiquettes sont conçues pour être utilisées pour obtenir un filtrage additionnel quand l’utilisation des groupes ne suffit pas. Les étiquettes sont uniquement enregistrées dans les transactions elles-mêmes, et ainsi celles non utilisées disparaissent automatiquement à la fermeture du compte.

+
Reçu
+

Image d’un reçu pour une transaction. Vous pouvez téléverser des images JPEG, PNG ou un document PDF, mais peut importe le format il sera converti et enregistré en tant qu’image JPEG. Dans le cas d’un PDF, seule la première page sera enregistrée. Vous pouvez supprimer le fichier ou en téléverser un autre à tout moment.

+
Notes
+

Un texte de forme libre qui peut être joint à la transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/fr/transfer.html b/docs/html/fr/transfer.html new file mode 100644 index 000000000..19a5a95b9 --- /dev/null +++ b/docs/html/fr/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfert + + + +
+

Transfert

+
+
+

Le transfert est un moyen de déplacer de l’argent d’un compte à un autre. Après avoir opéré un transfert, 2 transactions seront créées avec les descriptions suivantes :

+
    +
  • « Transfert vers Nom du compte récipiendaire » dans le compte source.

  • +
  • « Transfert depuis Nom du compte source » dans le compte destinataire.

  • +
+

Les transactions créées par un transfert sont de simples transactions qui peuvent être supprimées ou modifiées sans risque. Ces transactions ne sont pas connectées : la modification de la transaction sur le compte source n’affectera pas la celle sur le compte destinataire, et vice versa.

+

Le transfert ne vous permet pas de créer des transactions répétées ou de définir une autre propriété que le montant. La couleur sélectionnée dans la configuration sera utilisée pour les transactions créées.

+

Si vous créez un transfert entre des comptes avec différentes devises, il vous sera demander de fournir un taux de change.

+
+ +
+
+
+ diff --git a/docs/html/fr/yelp.js b/docs/html/fr/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/fr/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/gl/account.html b/docs/html/gl/account.html new file mode 100644 index 000000000..94fa33f9b --- /dev/null +++ b/docs/html/gl/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Nome
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Tipo de conta
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/gl/configuration.html b/docs/html/gl/configuration.html new file mode 100644 index 000000000..a29d49328 --- /dev/null +++ b/docs/html/gl/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/figures/denaro.png b/docs/html/gl/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/gl/figures/denaro.png rename to docs/html/gl/figures/denaro.png diff --git a/docs/html/gl/gl.css b/docs/html/gl/gl.css new file mode 100644 index 000000000..176f46fdf --- /dev/null +++ b/docs/html/gl/gl.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '«'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 0.5em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/gl/highlight.pack.js b/docs/html/gl/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/gl/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/gl/import-export.html b/docs/html/gl/import-export.html new file mode 100644 index 000000000..e298906e4 --- /dev/null +++ b/docs/html/gl/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/gl/index.html b/docs/html/gl/index.html new file mode 100644 index 000000000..7b858cc7b --- /dev/null +++ b/docs/html/gl/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/gl/transaction.html b/docs/html/gl/transaction.html new file mode 100644 index 000000000..70b4b4807 --- /dev/null +++ b/docs/html/gl/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
ID
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Descrición
+

No limit on length. It can't contain semicolon.

+
Importe
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Data
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Grupo
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Apuntamentos
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/gl/transfer.html b/docs/html/gl/transfer.html new file mode 100644 index 000000000..794ae086f --- /dev/null +++ b/docs/html/gl/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/gl/yelp.js b/docs/html/gl/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/gl/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/hi/account.html b/docs/html/hi/account.html new file mode 100644 index 000000000..711d9606d --- /dev/null +++ b/docs/html/hi/account.html @@ -0,0 +1,134 @@ + + + + + +खाता + + + +
+

खाता

+
+
+

यह पृष्ठ Denaro में खातों की सभी संपत्तियों की व्याख्या करता है। उनमें से अधिकांश खाता सेटिंग डायलॉग में दिखाए गए हैं। नया खाता बनाने के बाद यह संवाद भी स्वतः खुल जाता है।

+

प्रत्येक खाता एक एकल *.nmoney फ़ाइल में संग्रहीत है। Denaro के पुराने स्थिर वर्शन में बनाई गई फाइलें एप्लिकेशन के नवीनतम स्थिर वर्शन में सुरक्षित रूप से खोली जा सकती हैं। हालाँकि ऐप विभिन्न प्लेटफ़ॉर्म (Windows और Linux) पर चल सकता है, *.nmoney फाइलें प्लेटफ़ॉर्म के बीच 100% संगत हैं, जब तक कि वे एक ही एप्लिकेशन वर्शन (यानी V2023.1.0) से हैं।

+
+ + +

एप्लिकेशन के अस्थिर (Beta और RC) वर्शन में बग या अधूरे संशोधन हो सकते हैं जो डेटा हानि का कारण बन सकते हैं। ऐप के अस्थिर वर्शन में वास्तविक डेटा वाली खाता फाइलों का उपयोग न करें!

+
+
+
नाम
+

खाते का नाम हाल के खातों की सूची और टैब में दिखाया गया है। नाम की लंबाई की कोई सीमा नहीं होती और इसमें इमोजी सहित कोई भी अक्षर हो सकता है।

+
खाते का प्रकार
+

3 खाता प्रकार उपलब्ध हैं: 🟣चेकिंग, 🔵बचत और 🟢व्यवसाय। खाता प्रकार केवल एक उपयोगी लेबल है जो हाल के खातों की सूची में दिखाया गया है और यह प्रभावित नहीं करता है कि एप्लिकेशन कैसे काम करता है या आप किसी खाते के साथ क्या कर सकते हैं। प्रत्येक खाता प्रकार का अपना रंग होता है, इन रंगों को वैश्विक सेटिंग्स में कॉन्फ़िगर किया जा सकता है।

+
डिफ़ॉल्ट लेनदेन प्रकार
+

जब आप कोई नया लेनदेन बनाते हैं तो डिफ़ॉल्ट रूप से उसका प्रकार इस सेटिंग के समान ही होगा।

+
लेन-देन अनुस्मारक सीमा
+

आगामी लेनदेन के बारे में अनुस्मारक दिखाते समय उपयोग की जाने वाली सीमा।

+
सिस्टम मुद्रा
+
+

हर बार जब एप्लिकेशन शुरू होता है, तो उसे आपके सिस्टम लोकेल से मुद्रा और संख्या स्वरूपण के बारे में डेटा मिलता है, और इस डेटा का उपयोग मुद्रा प्रतीक दिखाने के लिए किया जाता है (जब तक कि कस्टम मुद्रा का उपयोग नहीं किया जाता है, नीचे देखें) और यह निर्धारित करने के लिए कि संख्याओं को किस प्रारूप में स्वीकार किया जाएगा लेन-देन की रकम के लिए मान. कुछ उदाहरण:

+
    +
  • यदि आपका स्थान अंग्रेजी (US) है, तो मुद्रा प्रतीक $ पर सेट किया जाएगा और 1,000.00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।

  • +
  • यदि आपका स्थान इतालवी है, तो मुद्रा प्रतीक पर सेट किया जाएगा और 1.000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।

  • +
  • यदि आपका स्थान रूसी है, तो मुद्रा प्रतीक पर सेट किया जाएगा और 1000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।

  • +
+
+ + + + + + + + + + + + + +

Linux पर, सिस्टम भाषा और प्रारूपों के लिए अलग-अलग स्थान सेट करना संभव है। इन सेटिंग्स को बदलना आपके द्वारा उपयोग किए जा रहे डेस्कटॉप वातावरण के आधार पर भिन्न होता है। डेस्कटॉप पर इन सेटिंग्स के स्थान में अंतर के बावजूद, इन सेटिंग्स को बदलने से सिस्टम पर्यावरण चर, जैसे LANG, LC_TIME, और LC_MONETARY को संशोधित किया जाता है। Denaro इन चरों के अनुसार राशि और दिनांक प्रारूपों का उपयोग करने का प्रयास करेगा। यदि ऐप अपेक्षित प्रारूपों का उपयोग करने में विफल रहता है, तो कृपया सुनिश्चित करें कि टर्मिनल में लोकेल कमांड के माध्यम से वेरिएबल सही ढंग से सेट किए गए हैं। यदि आपको कोई बग मिला है और आप इसकी रिपोर्ट करना चाहते हैं, तो कृपया लोकेल कमांड का आउटपुट प्रदान करें ताकि डेवलपर्स उसी सेटिंग्स के साथ आपकी समस्या को पुन: उत्पन्न कर सकें।

+
+
+
कस्टम मुद्रा का प्रयोग करें
+

यदि यह विकल्प सक्षम है, तो आपके सिस्टम लोकेल द्वारा प्रदान किए गए मुद्रा प्रतीक के बजाय कस्टम मुद्रा प्रतीक का उपयोग किया जाएगा।

+
कस्टम मुद्रा चिह्न
+

अधिकतम 3 अक्षर या 1 इमोजी. यह कोई संख्या नहीं हो सकती।

+
कस्टम मुद्रा कोड
+
+

अधिकतम 3 अक्षर या 1 इमोजी।

+

प्रतीक और कोड के बीच अंतर को समझने के लिए एक उदाहरण: $ एक प्रतीक है, USD एक कोड है।

+
+
कस्टम मुद्रा राशि शैली
+
+

निम्नलिखित तरीकों में से किसी एक में राशि प्रदर्शित करने का विकल्प:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
कस्टम मुद्रा दशमलव और समूह विभाजक
+

अधिकतम 2 अक्षर या 1 इमोजी।

+
कस्टम मुद्रा दशमलव अंक
+

राशि मानों के दशमलव भाग का आकार. "असीमित" अंकों के साथ दशमलव भाग में उतनी ही संख्याएँ होंगी जितनी सटीक राशि दिखाने के लिए आवश्यक हैं, लेकिन यदि राशि एक पूर्णांक संख्या है तो कोई दशमलव भाग नहीं होगा।

+
पासवर्ड
+

प्रत्येक खाते को पासवर्ड से सुरक्षित किया जा सकता है। पासवर्ड जोड़ने से खाता एन्क्रिप्ट हो जाता है (पासवर्ड का उपयोग करके डिक्रिप्ट किए बिना डेटा को पढ़ना असंभव हो जाता है)। सावधान रहें: यदि पासवर्ड खो गया है, तो आप डेटा पुनर्स्थापित नहीं कर पाएंगे! किसी खुले खाते के खाता सेटिंग संवाद का उपयोग करके पासवर्ड को बदला या हटाया भी जा सकता है। पासवर्ड हटाने से खाता डिक्रिप्ट हो जाएगा।

+
Id, दिनांक या राशि के अनुसार क्रमबद्ध करें
+

प्रत्येक खाता यह संग्रहीत करता है कि लेन-देन को उनकी आईडी, दिनांक या राशि के आधार पर मुख्य विंडो में क्रमबद्ध किया जाए या नहीं। हर बार जब आप इसे बदलते हैं, तो यह खाता फाइल में सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो जाएगा।

+
छँटाई क्रम
+

प्रत्येक खाता मुख्य विंडो में लेनदेन के क्रम के बारे में जानकारी संग्रहीत करता है। हर बार जब आप इसे बदलते हैं, तो यह खाता फाइल में सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो जाएगा।

+
समूह दृश्यता
+

प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में समूह सूची छिपी हुई है या नहीं। हर बार जब आप समूह सूची की दृश्यता बदलते हैं, तो इसे सहेजा जाता है और फिर जब आप खाता दोबारा खोलते हैं तो इसे बहाल कर दिया जाता है।

+
टैग दृश्यता
+

प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में टैग सूची छिपी हुई है या नहीं। हर बार जब आप टैग सूची दृश्यता बदलते हैं, तो इसे सहेजा जाता है और फिर खाता दोबारा खोलने पर इसे पुनर्स्थापित कर दिया जाता है।

+
+
+ +
+
+
+ diff --git a/docs/html/hi/configuration.html b/docs/html/hi/configuration.html new file mode 100644 index 000000000..dc3bd0600 --- /dev/null +++ b/docs/html/hi/configuration.html @@ -0,0 +1,73 @@ + + + + + +कॉन्फ़िगरेशन + + + +
+

कॉन्फ़िगरेशन

+
+
+

यह पृष्ठ वर्णन करता है कि आप एप्लिकेशन कॉन्फ़िगरेशन में क्या बदल सकते हैं।

+

आपके प्लेटफ़ॉर्म के आधार पर, एप्लिकेशन इंटरफ़ेस में कॉन्फ़िगरेशन को प्राथमिकताएं या सेटिंग्स के रूप में संदर्भित किया जाता है।

+
+
थीम
+

प्रकाश या गहरे रंग की थीम सेट करें, या Denaro को अपने सिस्टम थीम का अनुसरण करें। विंडोज़ पर इसे बदलने के लिए आवेदन को पुनः आरंभ करने की आवश्यकता है।

+
लेन-देन डिफ़ॉल्ट रंग
+

एक रंग जो अद्वितीय रंग के साथ एक नया transaction जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। इसे बदलने से मौजूदा लेनदेन प्रभावित नहीं होंगे, भले ही वे पहले से चयनित डिफ़ॉल्ट रंग का उपयोग करें।

+
डिफ़ॉल्ट रंग स्थानांतरित करें
+

एक रंग जिसका उपयोग transfer का उपयोग करके किए गए लेनदेन के लिए किया जाएगा। इसे बदलने से मौजूदा लेनदेन पर कोई असर नहीं पड़ेगा।

+
समूह डिफ़ॉल्ट रंग
+

एक रंग जो नया समूह जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। यह «अनग्रुप्ड» समूह के लिए भी एक रंग है।

+
दशमलव विभाजक डालें
+

सेट करें कि कौन सी कुंजी दबाए जाने पर लोकेल का दशमलव विभाजक राशि फ़ील्ड में डाला जाएगा: संख्यापैड अवधि, कोई भी अवधि और अल्पविराम, या कोई नहीं। यदि दशमलव विभाजक पहले से ही किसी फ़ील्ड में प्रस्तुत किया गया है, तो इसे सम्मिलित नहीं किया जाएगा।

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/hi/figures/denaro.png b/docs/html/hi/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hi/figures/denaro.png rename to docs/html/hi/figures/denaro.png diff --git a/docs/html/hi/hi.css b/docs/html/hi/hi.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/hi/hi.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/hi/highlight.pack.js b/docs/html/hi/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/hi/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/hi/import-export.html b/docs/html/hi/import-export.html new file mode 100644 index 000000000..6871051b6 --- /dev/null +++ b/docs/html/hi/import-export.html @@ -0,0 +1,158 @@ + + + + + +आयात/निर्यात + + + +
+

आयात/निर्यात

+
+
+
+

प्रारूप आयात करें

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    तिथियाँ YYYYMMDD प्रारूप में होनी चाहिए।

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    तारीखें अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ जबकि CSV एक सामान्य प्रारूप है और कुछ बैंक अपने उपयोगकर्ताओं को CSV के रूप में जानकारी निर्यात करने की अनुमति देते हैं, ये फाइलें वास्तव में तालिकाएं हैं जिनमें मनमाना डेटा हो सकता है। अन्य प्रोग्राम में बनाई गई CSV फाइल को आयात करना विफल हो जाएगा, क्योंकि इसका डेटा Denaro किसी फाइल से प्राप्त करने का प्रयास करने के साथ संगत नहीं होगा। CSV आयात/निर्यात का उद्देश्य टेक्स्ट एडिटर्स और ऑफिस सुइट्स जैसे इक्स्टर्नल प्रोग्रामों का उपयोग करके किसी खाते में डेटा जोड़ने का एक तरीका प्रदान करना है। आयात केवल मौजूदा लेन-देन को ओवरराइड किए बिना नए लेन-देन जोड़ेगा। यदि आप मैन्युअल रूप से एक CSV फाइल बनाना चाहते हैं, तो यह वह हेडर है जिसमें वे सभी कॉलम शामिल हैं जिन्हें Denaro ढूंढने की अपेक्षा करता है:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      लेनदेन Id, किसी दिए गए खाते के लिए अद्वितीय होनी चाहिए। Ids 1 से शुरू होती हैं।

      +
    • +
    • +

      Date

      +

      लेन-देन की तारीख (या दोबारा लेन-देन के मामले में आरंभ की तारीख), अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।

      +
    • +
    • +

      Description

      +

      लेन-देन विवरण, इसमें अर्धविराम को छोड़कर कोई भी वर्ण हो सकता है।

      +
    • +
    • +

      Type

      +

      लेन-देन प्रकार: आय के लिए 0, व्यय के लिए 1।

      +
    • +
    • +

      RepeatInterval

      +

      लेन-देन दोहराव अंतराल का प्रतिनिधित्व करने वाली एक संख्या:

      +

      0 - कभी नहीं

      +

      1 - प्रतिदिन

      +

      2 - साप्ताहिक

      +

      7 - द्विसाप्ताहिक

      +

      3 - मासिक

      +

      4 - त्रैमासिक

      +

      5 - वार्षिक

      +

      6 - द्विवार्षिक

      +

      बार-बार होने वाले लेनदेन के विवरण के लिए transaction पेज में Repeat Interval देखें।

      +
    • +
    • +

      RepeatFrom

      +

      या तो स्रोत लेनदेन की Id होनी चाहिए या यदि यह स्रोत लेनदेन है तो 0 या यदि यह दोहराव लेनदेन नहीं है तो -1 होना चाहिए।

      +
    • +
    • +

      RepeatEndDate

      +

      दोबारा लेन-देन की अंतिम तिथि अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए। यदि यह दोबारा लेनदेन नहीं है तो इसे खाली छोड़ दें।

      +
    • +
    • +

      Amount

      +

      अंग्रेजी (US) प्रारूप में लेनदेन राशि (123,456.78)।

      +
    • +
    • +

      RGBA

      +

      लेन-देन का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।

      +
    • +
    • +

      UseGroupColor

      +

      क्या लेन-देन में समूह रंग का उपयोग किया जाना चाहिए: 0 - गलत, 1 - सत्य।

      +
    • +
    • +

      Group

      +

      लेन-देन का समूह Id. Ids 1 से शुरू होती हैं। असमूहीकृत लेनदेन के लिए यह -1 होना चाहिए (0 नहीं, यह समूह Id के लिए गलत मान है)।

      +
    • +
    • +

      GroupName

      +

      लेन-देन का समूह नाम, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर कोई भी वर्ण हो सकता है। असमूहीकृत लेन-देन के लिए इसे खाली छोड़ दें, किसी भी अन्य स्थिति में यह खाली नहीं होना चाहिए।

      +
    • +
    • +

      GroupDescription

      +

      लेन-देन का समूह विवरण, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर कोई भी अक्षर हो सकता है और यह खाली हो सकता है। असमूहीकृत लेनदेन के लिए इसे खाली छोड़ दें।

      +
    • +
    • +

      GroupRGBA

      +

      समूह का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।

      +
    • +
    +

    रसीद और नोट्स CSV में मौजूद नहीं हैं।

    +
  • +
+
+
+

निर्यात प्रारूप

+
+

आप चुन सकते हैं कि सारी जानकारी निर्यात करनी है या केवल वर्तमान दृश्य से। यदि आप वर्तमान दृश्य का चयन करते हैं, तो वर्तमान में प्रदर्शित लेनदेन उसी क्रम में निर्यात किए जाएंगे जिसमें वे दिखाए गए हैं।

+
    +
  • +

    Portable Document Format (.pdf)

    +

    एक फाइल में खाते की जानकारी, लेनदेन की एक सूची और प्राप्तियों की छवियां होंगी। लेन-देन एप्लिकेशन की तरह रंगीन होते हैं, लेकिन काले पाठ को हमेशा स्पष्ट रूप से दिखाई देने के लिए रंगों को आधा-पारदर्शी बनाकर संशोधित किया जाता है। आप किसी निर्यातित फाइल के लिए पासवर्ड सेट कर सकते हैं।

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/hi/index.html b/docs/html/hi/index.html new file mode 100644 index 000000000..da7290675 --- /dev/null +++ b/docs/html/hi/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro सहायता + + + +
+

Denaro सहायता

+
+

यह दस्तावेज़ आपको यह समझने में सहायता करेगा कि एप्लिकेशन का अधिकतम लाभ उठाने के लिए Denaro में डेटा को कैसे कॉन्फ़िगर और प्रबंधित किया जाए।

+

समर्थन पाने के लिए, समस्याएँ या चर्चाएँका उपयोग करें Github पर, या हमारे Matrix चैनल से जुड़ें

+ +
+
+
+ diff --git a/docs/html/hi/transaction.html b/docs/html/hi/transaction.html new file mode 100644 index 000000000..d134e8fb4 --- /dev/null +++ b/docs/html/hi/transaction.html @@ -0,0 +1,86 @@ + + + + + +लेन-देन + + + +
+

लेन-देन

+
+
+

यह पृष्ठ Denaro में लेनदेन के सभी गुणों की व्याख्या करता है।

+
+
Id
+

प्रत्येक लेनदेन में एक Id होती है जो किसी दिए गए खाते के लिए अद्वितीय होती है। Id 1 से शुरू होती हैं और जोड़े गए प्रत्येक लेनदेन के लिए बढ़ती हैं। Id को बदला नहीं जा सकता, हटाए गए लेनदेन की Id का पुन: उपयोग नहीं किया जाता है।

+
विवरण
+

लंबाई की कोई सीमा नहीं. इसमें अर्धविराम नहीं हो सकता।

+
राशि
+

प्रारूप में एक संख्या जो आपके स्थान के लिए मान्य है, विवरण के लिए खाता पृष्ठ में सिस्टम मुद्रा देखें।

+
प्रकार
+

आय या व्यय. जब आप नया लेन-देन जोड़ने के लिए एक संवाद खोलेंगे तो डिफ़ॉल्ट रूप से खाता सेटिंग में से एक चुना जाएगा।

+
तारीख
+

कोई भी तारीख चुनी जा सकती है, आप भविष्य की तारीखों के लिए लेनदेन भी बना सकते हैं।

+
अंतराल दोहराएँ
+

आवर्ती लेनदेन बनाने के लिए इस विकल्प का उपयोग करें। आपके द्वारा दोहराव अंतराल के साथ लेनदेन जोड़ने के बाद, यह लेनदेन एक स्रोत लेनदेन बन जाएगा। Denaro स्वचालित रूप से आज तक की तारीखों के लिए या अतीत में सेट की गई अंतिम तिथि के लिए दोहराया लेनदेन उत्पन्न करेगा। दोहराएँ लेनदेन को संपादित या हटाया नहीं जा सकता, केवल स्रोत को संशोधित किया जा सकता है। जब आप स्रोत लेनदेन को संशोधित करते हैं तो Denaro आपसे पूछेगा कि क्या आप दोहराएँ लेनदेन को संशोधित या अलग करना चाहते हैं। यदि आप अलग होना चुनते हैं, तो दोहराएँ लेनदेन सामान्य लेनदेन बन जाते हैं और इन्हें अलग से संपादित या हटाया जा सकता है।

+
समाप्ति तिथि दोहराएँ
+

दोहराव वाले लेन-देन की समाप्ति तिथि। यह प्रारंभ दिनांक से पहले या उसी दिन नहीं हो सकता।

+
समूह
+

प्रत्येक लेन-देन केवल एक समूह से संबंधित हो सकता है या किसी से भी नहीं («अनग्रुप्ड» समूह) से संबंधित हो सकता है।

+
रंग
+

लेन-देन के लिए एक रंग. समूह रंग या अद्वितीय रंग का उपयोग करने के लिए सेट किया जा सकता है। अद्वितीय रंग का चयन करते समय, इसे डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन में चयनित रंग पर सेट किया जाएगा, लेकिन इसे किसी भी रंग में बदला जा सकता है।

+
टैग्स
+

लेन-देन के लिए टैग की एक सूची. किसी लेन-देन में असीमित संख्या में टैग हो सकते हैं (या कोई टैग नहीं)। टैग में अल्पविराम (,) को छोड़कर कोई भी वर्ण हो सकता है, और उनकी लंबाई कोई भी हो सकती है, लेकिन उनसे छोटे कीवर्ड होने की उम्मीद की जाती है। टैग का उपयोग अतिरिक्त फ़िल्टरिंग के लिए किया जाता है जब समूहों का उपयोग पर्याप्त नहीं होता है। टैग केवल लेनदेन में ही सहेजे जाते हैं, और परिणामस्वरूप अप्रयुक्त टैग खाता बंद होने पर स्वचालित रूप से गायब हो जाते हैं।

+
रसीद
+

लेन-देन की रसीद की एक छवि. आप JPEG या PNG छवि या PDF दस्तावेज़ अपलोड कर सकते हैं, लेकिन प्रारूप कोई भी हो, इसे JPEG छवि के रूप में परिवर्तित और सहेजा जाएगा। PDF के मामले में, केवल पहला पृष्ठ ही सहेजा जाएगा। आप किसी भी समय दूसरी फाइल को हटा या अपलोड कर सकते हैं।

+
नोट्स
+

लेन-देन के साथ संलग्न करने के लिए एक फ्रीफॉर्म टेक्स्ट नोट।

+
+
+ +
+
+
+ diff --git a/docs/html/hi/transfer.html b/docs/html/hi/transfer.html new file mode 100644 index 000000000..fd912ab4b --- /dev/null +++ b/docs/html/hi/transfer.html @@ -0,0 +1,67 @@ + + + + + +स्थानांतरण + + + +
+

स्थानांतरण

+
+
+

ट्रांसफर पैसे को एक खाते से दूसरे खाते में स्थानांतरित करने का एक तरीका है। स्थानांतरण चलाने के बाद निम्नलिखित विवरण के साथ 2 लेनदेन बनाए जाएंगे:

+
    +
  • स्रोत खाते पर गंतव्य खाता नाम पर स्थानांतरण करें।

  • +
  • गंतव्य खाते पर स्रोत खाता नाम से स्थानांतरण।

  • +
+

स्थानांतरण का उपयोग करके बनाए गए लेनदेन सरल लेनदेन हैं जिन्हें स्वतंत्र रूप से संपादित या हटाया जा सकता है। ये लेनदेन जुड़े नहीं हैं: स्रोत खाते पर लेनदेन को संशोधित करने से गंतव्य खाते पर लेनदेन प्रभावित नहीं होगा, और इसके विपरीत।

+

स्थानांतरण आपको बार-बार लेनदेन करने या राशि के अलावा कोई संपत्ति निर्धारित करने की अनुमति नहीं देता है। कॉन्फ़िगरेशन में चयनित रंग का उपयोग बनाए गए लेनदेन के लिए किया जाएगा।

+

यदि आप विभिन्न मुद्राओं वाले खातों के बीच स्थानांतरण करते हैं, तो आपसे रूपांतरण दर प्रदान करने के लिए कहा जाएगा।

+
+ +
+
+
+ diff --git a/docs/html/hi/yelp.js b/docs/html/hi/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/hi/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/hr/account.html b/docs/html/hr/account.html new file mode 100644 index 000000000..3b948909f --- /dev/null +++ b/docs/html/hr/account.html @@ -0,0 +1,139 @@ + + + + + +Račun + + + +
+

Račun

+
+
+

Ova stranica objašnjava sva svojstva računa u aplikaciji Denaro. Većina se prikazuju u Dijalog postavki računa. Ovaj se dijalog također automatski otvara nakon stvaranja novog računa.

+

Svaki račun se sprema u yasebnu *.nmoney datoteku. Datoteke stvorene u starijoj stabilnoj verziji Denaro aplikacije mogu se sigurno otvoriti u novijoj stabilnoj verziji aplikacije. Iako aplikacija radi na različitim platformama (Windows i Linux), *.nmoney datoteke su 100 % kompatibilne između platformi sve dok su stvorene s istom verzijom aplikacije (tj. V2023.1.0).

+
+ + +

Nestabilne verzije aplikacije (beta i kandidati za izdanje) mogu sadržati greške ili nedovršene promjene i mogu uzrokovati gubitak podataka. U nestabilnim verzijama aplikacije NEMOJ koristiti datoteke računa koje sadrže stvarne podatke!

+
+
+
Ime
+

Ime računa se prikazuje u popisu nedavnih računa i na karticama. Dužina imena nije ograničena i može sadržati bilo koje znakove, uključujući emojije.

+
Vrsta računa
+

Postoje 3 vrste računa: 🟣žiro račun, 🔵štedni račun i 🟢poslovni račun. Vrsta računa je samo korisna oznaka koja se prikazuje u popisu nedavnih računa i ne utječe na to kako aplikacija radi ili što možeš učiniti s računom. Svaka vrsta računa ima vlastitu boju. Boje se mogu odrediti u globalnim postavkama.

+
Standardna vrsta transakcije
+

Kada stvoriš novu transakciju, njezina će vrsta standardno biti ista kao u ovoj postavci.

+
Prag podsjetnika za transakcije
+

Prag koji se koristi prilikom prikazivanja podsjetnika o nadolazećim transakcijama.

+
Valuta sustava
+
+

Svaki put kada se aplikacija pokrene, ona dobiva podatke o valuti i formatu brojeva iz postavke jezičnog područja tvog sustava. Ti se podaci koriste za prikaz simbola valute (osim ako se koristi prilagođena valuta, pogledaj dolje) i za određivanje formata brojeva koji će se prihvatiti kao vrijednosti za iznose transakcija. Par primjera:

+
    +
  • Ako je tvoje jezično područje engleski (SAD), simbol valute će biti $ i 1,000.00 će se prihvatiti kao valjani broj.

  • +
  • Ako je tvoje jezično područje hrvatski, simbol valute će biti i 1.000,00 će se prihvatiti kao valjani broj.

  • +
  • Ako je tvoje jezično područje ruski, simbol valute će biti i 1000,00 će se prihvatiti kao valjani broj.

  • +
+
+ + + + + + + + + + + + + +

Na Linuxu je moguće postaviti različita jezična područja za jezik sustava i formate. Mijenjanje ovih postavki razlikuje se ovisno o radnoj površini. Unatoč razlikama u smještaju ovih postavki u okruženju, mijenjanje tih postavki mijenja varijable okruženja sustava, kao što su LANG, LC_TIME i LC_MONETARY. Denaro će pokušati koristiti formate iznosa i datuma u skladu s tim varijablama. Ako aplikacija ne uspije koristiti očekivane formate, provjeri jesu li varijable ispravno postavljene putem naredbe locale u terminalu. Ako naiđeš na grešku i želiš je prijaviti, pošalji rezultat naredbe locale kako bi programeri mogli reproducirati problem s istim postavkama.

+
+
+
Koristi prilagođenu valutu
+

Ako je ova opcija aktivirana, umjesto simbola valute jezičnog područja tvog sustava koristit će se Prilagođeni simbol valute.

+
Simbol prilagođene valute
+

Do 3 znaka ili 1 emoji. Ne može biti broj.

+
Kȏd prilagođene valute
+
+

Do 3 znaka ili 1 emoji.

+

Primjer za razumijevanje razlike između simbola i koda: $ je simbol, USD je kod.

+
+
Prilagođeni stil iznosa valute
+
+

Izbor prikaza iznosa na jedan od sljedećih načina:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Prilagođeni decimalni znakovi i znakovi tisućica valute
+

Do 2 znaka ili 1 emoji.

+
Prilagođeni broj decimala valute
+

Broj decimala za iznose. S opcijom „Neograničeno” prikazat će se onoliko decimala koliko je potrebno za prikaz točnog iznosa. Decimale se neće koristiti ako je iznos cijeli broj.

+
Lozinka
+

Svaki račun se može zaštititi lozinkom. Dodavanje lozinke uzrokuje šifriranje računa (što onemogućuje čitanje podataka bez dešifriranja pomoću lozinke). Oprez: ako izgubiš lozinku, nećeš moći obnoviti podatke! Lozinka se također može promijeniti ili ukloniti pomoću dijaloga postavki računa jednog otvorenog računa. Uklanjanje lozinke će dešifrirati račun.

+
Razvrstaj prema ID-u, datumu ili iznosu
+

Svaki račun sprema razvrstavanje transakcija u glavnom prozoru prema ID-u, datumu ili iznosu. Pri svakoj promjeni će se razvrstavanje spremiti u datoteku računa i obnoviti kada ponovo otvoriš račun.

+
Redoslijed
+

Svaki račun sprema podatke o redoslijedu transakcija u glavnom prozoru. Pri svakoj promjeni će se redoslijed spremiti u datoteku računa i obnoviti kada ponovo otvoriš račun.

+
Vidljivost grupa
+

Svaki račun sprema podatke o prikazivanju ii skrivanju popisa grupa u glavnom prozoru. Pri svakoj promjeni će se vidljivost popisa grupa spremiti i obnoviti kada ponovo otvoriš račun.

+
Vidljivost oznaka
+

Svaki račun sprema podatke o prikazivanju ii skrivanju popisa oznaka u glavnom prozoru. Pri svakoj promjeni vidljivosti popisa oznaka, promjena će se spremiti i obnoviti kada ponovo otvoriš račun.

+
+
+ +
+
+
+ diff --git a/docs/html/hr/configuration.html b/docs/html/hr/configuration.html new file mode 100644 index 000000000..8e05087c4 --- /dev/null +++ b/docs/html/hr/configuration.html @@ -0,0 +1,78 @@ + + + + + +Konfiguracija + + + +
+

Konfiguracija

+
+
+

Ova stranica opisuje što možeš promijeniti u konfiguraciji aplikacije.

+

Ovisno o platformi, u sučelju aplikacije se konfiguracija zove Osobitosti ili Postavke.

+
+
Tema
+

Postavi svijetlu ili tamnu temu ili neka Denaro slijedi temu tvog sustava. Za primjenu promjene teme u Windows sustavu zahtijeva ponovno pokretanje aplikacije.

+
Standardna boja transakcija
+

Standardna boja prilikom dodavanja nove transakcije s jedinstvenom bojom. Mijenjanje boje neće utjecati na postojeće transakcije, čak i ako koriste prethodno odabranu standardnu boju.

+
Standardna boja transfera
+

Standardna boja za transakcije stvorene pomoću transfera. Mijenjanje boje neće utjecati na postojeće transakcije.

+
Standardna boja grupa
+

Standardna boja prilikom dodavanja nove grupe. Koristi se i za „negrupirane” grupe.

+
Umetni decimalni znak
+

Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa: točka na numeričkoj tipkovnici, bilo koja točka i zarez ili ništa. Ako decimalni znak već postoji u polju onda se on neće umetnuti.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/figures/denaro.png b/docs/html/hr/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hr/figures/denaro.png rename to docs/html/hr/figures/denaro.png diff --git a/docs/html/hr/highlight.pack.js b/docs/html/hr/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/hr/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/hr/hr.css b/docs/html/hr/hr.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/hr/hr.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/hr/import-export.html b/docs/html/hr/import-export.html new file mode 100644 index 000000000..e38ad42ee --- /dev/null +++ b/docs/html/hr/import-export.html @@ -0,0 +1,163 @@ + + + + + +Uvoz/Izvoz + + + +
+

Uvoz/Izvoz

+
+
+
+

Formati uvoza

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Datumi bi trebali biti u formatu YYYYMMDD.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Datumi bi trebali biti u engleskom (SAD) formatu (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ Iako je CSV uobičajeni format i neke banke dopuštaju svojim korisnicima izvoz podataka u CSV formatu, te su datoteke zapravo tablice koje mogu sadržati proizvoljne podatke. Uvoz CSV datoteke stvorene u jednom drugom programu neće uspjeti jer njezini podaci neće biti kompatibilni s onim što Denaro pokušava dobiti iz datoteke. Svrha uvoza/izvoza CSV datoteka je omogućiti način dodavanja podataka računu pomoću programa kao što su uređivači teksta i uredski paketi. Uvoz će samo dodati nove transakcije bez prepisivanja postojećih. Ako želiš ručno izraditi CSV datoteku, ovo je zaglavlje koje uključuje sve stupce koje Denaro očekuje pronaći:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      ID transakcije. Mora biti jedinstven za određeni račun. ID-ovi počinju s 1.

      +
    • +
    • +

      Date

      +

      Datum transakcije (ili početni datum u slučaju ponovljajuće transakcije). Mora biti u engleskom (SAD) formatu (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Opis transakcije. Može sadržati bilo koje znakove osim točke sa zarezom (;).

      +
    • +
    • +

      Type

      +

      Vrsta transakcije: 0 za prihod, 1 za rashod.

      +
    • +
    • +

      RepeatInterval

      +

      Broj koji predstavlja interval ponavljanja transakcije:

      +

      0 – Nikada

      +

      1 – Dnevno

      +

      2 – Tjedno

      +

      7 – Dvotjeno

      +

      3 – Mjesečno

      +

      4 – Kvartalno

      +

      5 – Godišnje

      +

      6 – Dvogodišnje

      +

      Za detalje o ponovljajućim transakcijama pogledaj Interval ponavljanja na stranici transakcija.

      +
    • +
    • +

      RepeatFrom

      +

      Treba biti ID izvorne transakcije ili 0 ako je izvorna transakcija ili -1 ako nije ponavljajuća transakcija.

      +
    • +
    • +

      RepeatEndDate

      +

      Krajnji datum ponavljajuće transakcije. Mora biti u engleskom (SAD) formatu (MM/DD/YYYY). Ostavi polje praznim ako nije ponavljajuća transakcija.

      +
    • +
    • +

      Amount

      +

      Iznos transakcije u engleskom (SAD) formatu (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Boja transakcije u rgb(R,G,B) formatu, gdje su R, G i B cijeli brojevi od 0 do 255.

      +
    • +
    • +

      UseGroupColor

      +

      Treba li transakcija koristiti boju grupe: 0 – ne, 1 – da.

      +
    • +
    • +

      Group

      +

      ID grupe transakcije. ID-ovi počinju s brojem 1. Za negrupirane transakcije trebao bi biti -1 (ne 0, jer to nije valjana vrijednost za ID grupe).

      +
    • +
    • +

      GroupName

      +

      Ime grupe transakcije treba odgovarati ID-u grupe. Može sadržati bilo koje znakove osim točke sa zarezom (;). Ostavi polje prazno za negrupirane transakcije. U svim drugim slučajevima polje ne bi trebalo biti prazno.

      +
    • +
    • +

      GroupDescription

      +

      Opis grupe transakcije trebao bi odgovarati ID-u grupe. Može sadržati bilo koje znakove osim točke sa zarezom (;) i može biti prazan. Ostavi polje prazno za negrupiranu transakciju.

      +
    • +
    • +

      GroupRGBA

      +

      Boja grupe u rgb(R,G,B) formatu, gdje su R, G i B cijeli brojevi od 0 do 255.

      +
    • +
    +

    CSV datoteka ne sadrži podatke o priznanici i bilješke.

    +
  • +
+
+
+

Formati izvoza

+
+

Odaberi želiš li izvesti sve podatke ili samo podatke iz trenutačnog prikaza. Ako odabereš trenutačni prikaz, trenutačno prikazane transakcije će se izvesti u prikazanom redoslijedu.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    Datoteka će sadržati podatke o računu, popis transakcija i slike priznanica. Transakcije su obojene kao u aplikaciji, ali su boje poluprozirne, kako bi crni tekst uvijek bio jasno vidljiv. Za izvezenu datoteku možeš postaviti lozinku.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/hr/index.html b/docs/html/hr/index.html new file mode 100644 index 000000000..14b702268 --- /dev/null +++ b/docs/html/hr/index.html @@ -0,0 +1,63 @@ + + + + + +Denaro pomoć + + + +
+
+
+ diff --git a/docs/html/hr/transaction.html b/docs/html/hr/transaction.html new file mode 100644 index 000000000..da7d17826 --- /dev/null +++ b/docs/html/hr/transaction.html @@ -0,0 +1,91 @@ + + + + + +Transakcija + + + +
+

Transakcija

+
+
+

Ova stranica objašnjava sva svojstva transakcija u aplikaciji Denaro.

+
+
ID
+

Svaka transakcija ima ID koji je jedinstven za određeni račun. ID-ovi počinju s 1 i povećavaju se sa svakom dodanom transakcijom. ID-ovi se ne mogu mijenjati. ID-ovi uklonjenih transakcija se ne koriste ponovo.

+
Opis
+

Dužina opisa nije ograničena. Ne smije sadržati znak točke sa zarezom (;).

+
Iznos
+

Broj u ispravnom formatu za tvoje jezično područje. Za detalje pogledaj Valuta sustava u Stranica računa.

+
Vrsta
+

Prihod ili Rashod. Odabrana opcija u postavkama računa će se standardno odabrati kada otvoriš dijalog za dodavanje nove transakcije.

+
Datum
+

Možeš odabrati bilo koji datum. Također možeš stvoriti transakcije za buduće datume.

+
Interval ponavljanja
+

Koristi ovu opciju za stvaranje ponavljajuće transakcije. Nakon što dodaš transakciju s intervalom ponavljanja, ova će transakcija postati izvorna transakcija. Denaro će automatski generirati ponovljajuće transakcije za datume do danas ili za navedeni krajnji datum ako je postavljen u prošlosti. Ponovljajuće transakcije se ne mogu uređivati ili izbrisati, samo se izvor može promijeniti. Kada promijeniš izvornu transakciju, Denaro će te pitati želiš li promijeniti ili poništiti vezu ponovljajućih transakcija. Ako odlučiš poništiti vezu, ponovljajuće transakcije postaju normalne transakcije i mogu se zasebno uređivati ili brisati.

+
Krajnji datum ponavljanja
+

Krajnji datum za ponavljajuću transakciju. Ne može biti prije ili na isti dan kao početni datum.

+
Grupa
+

Svaka transakcija može pripadati samo jednoj grupi ili nijednoj („Negrupirana” grupa).

+
Boja
+

Boja za transakciju. Može se postaviti da koristi boju grupe ili jedinstvene boje. Prilikom biranja jedinstvene boje, boja će se standardno postaviti na odabranu boju u konfiguraciji, ali se može promijeniti u bilo koju boju.

+
Oznake
+

Popis oznaka za transakciju. Transakcija može imati neograničen broj oznaka (ili ne imati oznake). Oznake mogu sadržati bilo koje znakove osim zareza (,) i imati bilo koju dužinu, ali se očekuje da budu kratke ključne riječi. Oznake su namijenjene za dodatno filtriranje kada korištenje grupa nije dovoljno. Oznake se spremaju samo u samim transakcijama, a kao rezultat toga nekorištene oznake automatski nestaju pri zatvaranju računa.

+
Priznanica
+

Slika priznanice za transakciju. Možeš učitati JPEG ili PNG sliku ili PDF dokument, ali bez obzira na format slika će se pretvorit i spremiti kao JPEG slika. U slučaju PDF-a će se spremiti samo prva stranica. U bilo kojem trenutku možeš izbrisati ili prenijeti jednu drugu datoteku.

+
Bilješke
+

Tekstna bilješka za prilaganje transakciji.

+
+
+ +
+
+
+ diff --git a/docs/html/hr/transfer.html b/docs/html/hr/transfer.html new file mode 100644 index 000000000..de4c45eaf --- /dev/null +++ b/docs/html/hr/transfer.html @@ -0,0 +1,72 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer je način premještanja novca s jednog računa na drugi. Nakon pokretanja transfera stvorit će se 2 transakcije sa sljedećim opisima:

+
    +
  • „Transfer na Ime odredišnog računa” na izvornom računu.

  • +
  • „Transfer iz Ime izvornog računa” na odredišni račun.

  • +
+

Transakcije koje su stvorene korištenjem tranfera su jednostavne transakcije koje se mogu slobodno urediti ili izbrisati. Ove transakcije nisu povezane: mijenjanje transakcije u izvornom računu neće utjecati na transakciju u odredišnom računu, i obratno.

+

Transfer ne dozvoljava stvaranje ponavljajućih transakcija niti postavljanje bilo kojih svojstava osim iznosa. Za stvaranje transakcije će se koristiti boja koja je odabrana u konfiguraciji.

+

Ako stvoriš transfer između računa s različitim valutama morat ćeš zadati stopu konverzije.

+
+ +
+
+
+ diff --git a/docs/html/hr/yelp.js b/docs/html/hr/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/hr/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/id/account.html b/docs/html/id/account.html new file mode 100644 index 000000000..9f7d21cab --- /dev/null +++ b/docs/html/id/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/id/configuration.html b/docs/html/id/configuration.html new file mode 100644 index 000000000..628835d0a --- /dev/null +++ b/docs/html/id/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/id/figures/denaro.png b/docs/html/id/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/id/figures/denaro.png rename to docs/html/id/figures/denaro.png diff --git a/docs/html/id/highlight.pack.js b/docs/html/id/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/id/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/id/id.css b/docs/html/id/id.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/id/id.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/id/import-export.html b/docs/html/id/import-export.html new file mode 100644 index 000000000..d55ae3c67 --- /dev/null +++ b/docs/html/id/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/id/index.html b/docs/html/id/index.html new file mode 100644 index 000000000..60a4cad90 --- /dev/null +++ b/docs/html/id/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/id/transaction.html b/docs/html/id/transaction.html new file mode 100644 index 000000000..400b1bfc7 --- /dev/null +++ b/docs/html/id/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Catatan
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/id/transfer.html b/docs/html/id/transfer.html new file mode 100644 index 000000000..d7a9edfa2 --- /dev/null +++ b/docs/html/id/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/id/yelp.js b/docs/html/id/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/id/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/it/account.html b/docs/html/it/account.html new file mode 100644 index 000000000..8d31786fd --- /dev/null +++ b/docs/html/it/account.html @@ -0,0 +1,134 @@ + + + + + +Conti + + + +
+

Conti

+
+
+

In questa pagina vengono spiegate tutte le proprietà degli account in Denaro. La maggior parte di esse è mostrata nella finestra di dialogo Impostazioni conto. Questa finestra viene aperta automaticamente alla creazione di un nuovo conto.

+

Ciascun conto è registrato in un singolo file *.nmoney. I file creati da una vecchia versione stabile di Denaro possono essere aperti senza rischi con una versione stabile più recente dell'applicazione. Anche se l'applicazione può girare su più piattaforme (Windows e Linux), i file *.nmoney sono compatibili al 100% tra le piattaforme purché provengano dalla stessa versione dell'applicazione (per esempio V2023.1.0).

+
+ + +

Le versioni instabili (beta ed RC) dell'applicazione possono contenere errori o modifiche non terminate, che possono causare la perdita di dati. È sconsigliato usare versioni instabili l'applicazione con file conto che contengono i propri dati veri.

+
+
+
Nome
+

Il nome del conto viene mostrato nella lista dei conti più recenti e nelle schede. I nomi non hanno un limite di lunghezza e possono contenere qualsiasi carattere, anche gli emoji.

+
Tipo di conto
+

Sono disponibili tre tipi di conto: 🟣conto corrente, 🔵deposito and 🟢aziendale. Il tipo di conto è solo un'etichetta, mostrata nella lista dei conti recenti, che non influisce sul funzionamento dell'applicazione o sulle azioni disponibili per ciascun conto. Ciascun tipo di conto ha il suo colore, che può essere configurato nelle impostazioni generali.

+
Tipo di transazione predefinito
+

Questo parametro determina il tipo predefinito di una nuova transazione alla sua creazione.

+
Soglia per i promemoria delle transazioni
+

La soglia utilizzata quando vengono visualizzati promemoria sulle transazioni imminenti.

+
Valuta di sistema
+
+

Ad ogni avvio, l'applicazione recupera i dati sulla valuta e la formattazione dei numeri dai formati di sistema, e usa questi dati per mostrare i simboli delle valute (a meno che sia stata scelta una valuta personalizzata, vedere più sotto) e per determinare in quale formato accettare i valori per l'ammontare delle transazioni. Alcuni esempi:

+
    +
  • Se il proprio formato è Inglese (US), il simbolo della valuta sarà impostato su $ e 1,000.00 verrà accettato come un valore numerico valido.

  • +
  • Se il proprio formato è Italiano, il simbolo della valuta sarà impostato su e 1.000,00 verrà accettato come un valore numerico valido.

  • +
  • Se il proprio formato è Russo, il simbolo della valuta sarà impostato su e 1000,00 verrà accettato come un valore numerico valido.

  • +
+
+ + + + + + + + + + + + + +

Su Linux è possibile impostare diversi formati per la lingua e i valori numerici. Il modo per modificare queste impostazioni varia a seconda dell'ambiente desktop usato. Nonostante queste impostazioni si possano trovare in luoghi diversi del desktop, la loro modifica influisce su alcune variabili d'ambiente di sistema come LANG, LC_TIME, e LC_MONETARY. Denaro tenterà di usare i formati numerici e di data specificati da queste variabili. Se non vengono usati i formati che ci si aspetta, assicurarsi che le variabili siano impostate correttamente usando il comando locale in un terminale. Se si verifica un errore e lo si vuole segnalare, fornire l'output del comando locale per permettere agli sviluppatori di riprodurre tale errore con le medesime impostazioni.

+
+
+
Usa valuta personalizzata
+

Se abilitata, simbolo valuta personalizzato verrà usato al posto del simbolo fornito dalle impostazioni del proprio sistema.

+
Simbolo valuta personalizzato
+

Fino a tre caratteri oppure un emoji. Non può essere un numero.

+
Codice valuta personalizzato
+
+

Fino a tre caratteri oppure un emoji.

+

Un esempio per capire la differenza tra simbolo e codice: $ è un simbolo, USD è un codice.

+
+
Stile importo valuta personalizzato
+
+

Possibilità di visualizzare un importo in uno dei seguenti modi:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Separatore decimale e dei gruppi personalizzato
+

Fino a due caratteri oppure un emoji.

+
Cifre decimali personalizzate
+

La dimensione della parte decimale degli importi. Con «Illimitata» ci potranno essere tante cifre decimali quante ne serviranno per mostrare l'importo esatto, ma non verrà mostrata la parte decimale se l'importo è un numero intero.

+
Password
+

Ciascun conto può essere protetto da una password. Aggiungere una password rende il conto cifrato (rendendo impossibile leggerne i dati senza decifrarlo con la password). Attenzione: se la password viene dimenticata, non sarà possibile ripristinare i dati. È possibile rimuovere o cambiare la password tramite le impostazioni del conto, una volta aperto. Rimuovere la password decifrerà il conto.

+
Ordinare per Id, data o importo
+

Ogni conto registra se ordina le transazioni nella finestra principale per il loro ID, la data o l'importo. Quando si modifica la modalità di ordinamento, viene salvata nel file del conto e riprisrinata alla riapertura.

+
Verso dell'ordinamento
+

Ogni conto registra il modo in cui ordina le transazioni nella finestra principale. Quando si modifica la modalità di ordinamento, viene salvata nel file del conto e ripristinata alla riapertura.

+
Visibilità dei gruppi
+

Ogni conto registra se la lista dei gruppi nella finestra principale è nascosta o no. Quando si modifica la visibilità dei gruppi, viene salvata e ripristinata alla riapertura del conto.

+
Visibilità dei tag
+

Ogni account memorizza informazioni sul fatto che l'elenco dei tag nella finestra principale sia nascosto o meno. Ogni volta che modifichi la visibilità dell'elenco dei tag, questo viene salvato e quindi ripristinato quando riapri l'account.

+
+
+ +
+
+
+ diff --git a/docs/html/it/configuration.html b/docs/html/it/configuration.html new file mode 100644 index 000000000..cdaac147e --- /dev/null +++ b/docs/html/it/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configurazione + + + +
+

Configurazione

+
+
+

Questa pagina descrive cosa è possibile cambiare nella configurazione dell'applicazione.

+

A seconda della propria piattaforma, è possibile trovare la configurazione nell'interfaccia dell'applicazione sotto Preferenze oppure Impostazioni.

+
+
Stile
+

Impostare lo stile chiaro o scuro, oppure dire a Denaro di seguire lo stile di sistema. Cambiare lo stile su Windows richiede il riavvio dell'applicazione per applicare le modifiche.

+
Colore predefinito delle transazioni
+

Un colore che verrà selezionato inizialmente all'aggiunta di una nuova transazione con colore speciale. Cambiare questo colore non avrà effetto sulle transazioni esistenti, anche se usavano un colore predefinito precedentemente selezionato.

+
Colore predefinito dei trasferimenti
+

Un colore che verrà usato per le transazioni create usando i trasferimenti. Cambiare questo colore non avrà effetto sulle transazioni esistenti.

+
Colore dei gruppi predefinito
+

Un colore che verrà selezionato inizialmente all'aggiunta di un nuovo gruppo. È anche il colore per il gruppo «Senza gruppo».

+
Inserimento separatore decimale
+

Imposta per quali tasti, quando premuti, verrà inserito al loro posto il separatore decimale durante la digitazione di un importo: il punto del tastierino numerico, un punto qualsiasi e una virgola, o nessuno di essi. Se il separatore decimale è già presente nel campo di inserimento, non verrà inserito nuovamente.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/it/figures/denaro.png b/docs/html/it/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/it/figures/denaro.png rename to docs/html/it/figures/denaro.png diff --git a/docs/html/it/highlight.pack.js b/docs/html/it/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/it/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/it/import-export.html b/docs/html/it/import-export.html new file mode 100644 index 000000000..d259fe57e --- /dev/null +++ b/docs/html/it/import-export.html @@ -0,0 +1,158 @@ + + + + + +Importazione ed esportazione + + + +
+

Importazione ed esportazione

+
+
+
+

Formati per l'importazione

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Le date devono essere in formato YYYYMMDD.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Le date devono essere nel formato americano (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ Per quanto CSV sia un formato comune e alcune banche permettano ai loro utenti di esportare le informazioni in file CSV, tali file sono a tutti gli effetti tabelle che possono contenere dati arbitrari. Importare un file CSV creato con altri programmi non sarà possibile, perché i dati non saranno compatibili con ciò che Denaro tenta di leggere in un file. Lo scopo dell'importazione ed esportazione in CSV è quello di fornire un modo di aggiungere dati ad un conto usando programmi esterni come editor di testo e suite per ufficio. L'importazione aggiungerà soltanto nuove transazioni, senza sovrascrivere quelle già esistenti. Per creare un file CSV a mano, questa è la riga dei titoli delle colonne che Denaro si aspetta di trovare:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      L'ID della transazione, che deve essere univoco all'interno di ciascun conto. Gli ID partono da 1.

      +
    • +
    • +

      Date

      +

      La data della transazione (o la data d'inizio per quelle ricorrenti) deve essere in formato americano (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      La descrizione della transizione; può contenere qualsiasi carattere tranne il punto e virgola.

      +
    • +
    • +

      Type

      +

      Tipo di transazione: 0 per le entrate, 1 per le uscite.

      +
    • +
    • +

      RepeatInterval

      +

      Un numero che rappresenta la frequenza di ripetizione della transazione:

      +

      0 - Mai

      +

      1 - Ogni giorno

      +

      2 - Ogni settimana

      +

      7 - Ogni due settimane

      +

      3 - Ogni mese

      +

      4 - Ogni tre mesi

      +

      5 - Ogni anno

      +

      6 - Ogni due anni

      +

      Consultare Frequenza in transazioni per dettagli sulle transazioni ricorrenti.

      +
    • +
    • +

      RepeatFrom

      +

      Deve essere o l'ID di una transazione originale, oppure 0 se è una transazione “sorgente” o -1 se non è ricorrente.

      +
    • +
    • +

      RepeatEndDate

      +

      La data di termine per una transazione ricorrente, in formato americano (MM/DD/YYYY). Lasciare vuoto per le transazioni non ricorrenti.

      +
    • +
    • +

      Amount

      +

      Importo della transazione in formato americano (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Il colore della transazione, in formato rgb(R,G,B) dove R, G e B sono numeri interi tra 0 e 255.

      +
    • +
    • +

      UseGroupColor

      +

      Se una transazione deve usare il colore del gruppo: 0 — falso, 1 — vero.

      +
    • +
    • +

      Group

      +

      L'ID del gruppo della transazione. Gli ID partono da 1. Usare il valore -1 per le transazioni che non sono in alcun gruppo (non si usi 0, è un valore incorretto per l'ID del gruppo).

      +
    • +
    • +

      GroupName

      +

      Il nome del gruppo della transazione, che deve corrispondere all'ID del gruppo. Può contenere qualsiasi carattere tranne il punto e virgola. Lasciare vuoto per una transazione che non è in alcun gruppo; in tutti gli altri casi non deve essere vuoto.

      +
    • +
    • +

      GroupDescription

      +

      La descrizione del gruppo della transazione, che deve corrispondere all'ID del gruppo. Può contenere qualsiasi carattere tranne il punto e virgola, e può anche essere vuota. Lasciarla vuota per una transazione che non è in alcun gruppo.

      +
    • +
    • +

      GroupRGBA

      +

      Il colore del gruppo, in formato rgb(R,G,B) dove R, G e B sono numeri interi tra 0 e 255.

      +
    • +
    +

    Ricevute e annotazioni non si trovano nel file CSV.

    +
  • +
+
+
+

Formati per l'esportazione

+
+

È possibile selezionare se esportare tutte le informazioni oppure solo quelle nella vista corrente. Se si seleziona la vista corrente, le transazioni visualizzare verranno esportate nello stesso ordine in cui sono mostrate.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    Un file conterrà le informazioni sul conto, una lista di transazioni e le immagini delle ricevute. Le transazioni sono colorate come nell'applicazione, ma i colori sono resi semitrasparenti in modo che il testo nero sia sempre visibile chiaramente. È possibile impostare una password per il file esportato.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/it/index.html b/docs/html/it/index.html new file mode 100644 index 000000000..37a47c836 --- /dev/null +++ b/docs/html/it/index.html @@ -0,0 +1,58 @@ + + + + + +Aiuto di Denaro + + + +
+
+
+ diff --git a/docs/html/it/it.css b/docs/html/it/it.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/it/it.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/it/transaction.html b/docs/html/it/transaction.html new file mode 100644 index 000000000..1d32fa26c --- /dev/null +++ b/docs/html/it/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transazione + + + +
+

Transazione

+
+
+

Questa pagina spiega tutte le proprietà delle transazioni in Denaro.

+
+
ID
+

Ciascuna transazione possiede un ID, che è univoco all'interno di ciascun conto. L'ID parte da 1 e viene incrementato ad ogni transazione aggiunta. Gli ID non possono essere cambiati, e quelli delle transazioni rimosse non vengono riusati.

+
Descrizione
+

Nessun limite di lunghezza. Non può contenere punti e virgola.

+
Importo
+

Un numero valido per le proprie impostazioni regionali; si veda Valuta di sistema nella pagina Conti per dettagli.

+
Tipo
+

Entrate o Uscite. All'apertura della finestra per creare una nuova transazione, sarà selezionata l'opzione predefinita scelta nelle impostazioni conto.

+
Data
+

Si può selezionare qualsiasi data, e creare transazioni anche per date future.

+
Frequenza
+

Usare questa opzione per creare una transazione ricorrente. Una volta aggiunta una transazione impostando una frequenza di ricorsione, essa diventerà una transazione sorgente. Denaro genererà automaticamente le transazioni collegate per le date fino ad oggi o fino alla data di termine indicata se è nel passato. Le transazioni collegate non possono essere modificate o eliminate, solo la sorgente può esserlo. Quando si modifica la transazione sorgente, Denaro chiederà se si desidera modificare anche le transazioni collegate o se scollegarle. Se si sceglie di scollegarle, esse diventeranno delle normali transazioni e potranno essere modificate o eliminate individualmente.

+
Fine ripetizione
+

La data di termine di una transazione ricorrente. Non può essere uguale alla data di inizio o precederla.

+
Gruppo
+

Ciascuna transazione può appartenere a un solo gruppo, oppure nessuno (cioè appartiene al gruppo «Senza gruppo»).

+
Colore
+

Un colore per la transazione. Si può impostare affinché la transazione usi il colore del gruppo a cui appartiene, oppure un colore speciale. Se si sceglie il secondo, verrà inizialmente impostato al colore predefinito selezionato nella configurazione, ma può essere cambiato in qualsiasi altro colore.

+
Etichette
+

Un elenco di tag per la transazione. Una transazione può avere un numero illimitato di tag (o non avere tag). I tag possono contenere qualsiasi carattere tranne la virgola (,) e avere qualsiasi lunghezza, ma si prevede che siano parole chiave brevi. I tag sono pensati per essere utilizzati per ulteriori filtri quando l'utilizzo dei gruppi non è sufficiente. I tag vengono salvati solo nelle transazioni stesse e, di conseguenza, i tag non utilizzati scompaiono automaticamente alla chiusura del conto.

+
Ricevuta
+

L'immagine di una ricevuta per la transazione. È possibile caricare immagini in formato JPEG o PNG, oppure documenti PDF, ma a prescindere dal formato verrà convertita e salvata come immagine JPEG. Nel caso del PDF, verrà salvata solo la prima pagina. È possibile eliminare o caricare un altro file in qualsiasi momento.

+
Annotazioni
+

Un testo libero da allegare alla transazione.

+
+
+ +
+
+
+ diff --git a/docs/html/it/transfer.html b/docs/html/it/transfer.html new file mode 100644 index 000000000..fcbfde44a --- /dev/null +++ b/docs/html/it/transfer.html @@ -0,0 +1,67 @@ + + + + + +Trasferimenti + + + +
+

Trasferimenti

+
+
+

I trasferimenti sono un modo per spostare denaro da un conto all'altro. Una volta creato un trasferimento, verranno create due transazioni con le seguenti descrizioni:

+
    +
  • «Trasferimento a Conto di destinazione» sul conto di origine.

  • +
  • «Trasferimento da Conto di origine» sul conto di destinazione.

  • +
+

Le transazioni create da un trasferimento sono delle semplici transazioni che possono essere modificate o eliminate liberamente. Non sono connesse tra loro: modificare la transazione sul conto di origine non avrà effetto sul conto di destinazione, e viceversa.

+

I trasferimenti non permettono di creare transazioni ricorrenti o di impostare altre proprietà oltre all'importo. Il colore scelto nella configurazione sarà usato per le transazioni generate.

+

Se si crea un trasferimento tra conti in valute diverse, verrà chiesto di specificare un tasso di conversione.

+
+ +
+
+
+ diff --git a/docs/html/it/yelp.js b/docs/html/it/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/it/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/ja/account.html b/docs/html/ja/account.html new file mode 100644 index 000000000..af6459b46 --- /dev/null +++ b/docs/html/ja/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/ja/configuration.html b/docs/html/ja/configuration.html new file mode 100644 index 000000000..7f55920cd --- /dev/null +++ b/docs/html/ja/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
テーマ
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/figures/denaro.png b/docs/html/ja/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ja/figures/denaro.png rename to docs/html/ja/figures/denaro.png diff --git a/docs/html/ja/highlight.pack.js b/docs/html/ja/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/ja/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/ja/import-export.html b/docs/html/ja/import-export.html new file mode 100644 index 000000000..f45e77203 --- /dev/null +++ b/docs/html/ja/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/ja/index.html b/docs/html/ja/index.html new file mode 100644 index 000000000..ad9ae5938 --- /dev/null +++ b/docs/html/ja/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/ja/ja.css b/docs/html/ja/ja.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/ja/ja.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/ja/transaction.html b/docs/html/ja/transaction.html new file mode 100644 index 000000000..d2a94ffd5 --- /dev/null +++ b/docs/html/ja/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
デーツ
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/ja/transfer.html b/docs/html/ja/transfer.html new file mode 100644 index 000000000..c170c4c1f --- /dev/null +++ b/docs/html/ja/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/ja/yelp.js b/docs/html/ja/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/ja/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/nl/account.html b/docs/html/nl/account.html new file mode 100644 index 000000000..f05f14989 --- /dev/null +++ b/docs/html/nl/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Naam
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Accounttype
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Standaaardtransactietype
+

When you create a new transaction its type by default will be the same as in this setting.

+
Drempelwaarde voor transactie­herinneringen
+

The threshold used when showing reminders about upcoming transactions.

+
Systeemvaluta
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Aangepaste valuta gebruiken
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Aangepast valutasymbool
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Aangepaste valutacode
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Wachtwoord
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorteervolgorde
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groepszichtbaarheid
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Label­zichtbaarheid
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/nl/configuration.html b/docs/html/nl/configuration.html new file mode 100644 index 000000000..d5e91ce23 --- /dev/null +++ b/docs/html/nl/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuratie + + + +
+

Configuratie

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Thema
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Standaard­transactiekleur
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Standaard­overdrachtkleur
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Standaard­groepskleur
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Decimaal scheidings­teken invoegen
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/figures/denaro.png b/docs/html/nl/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/nl/figures/denaro.png rename to docs/html/nl/figures/denaro.png diff --git a/docs/html/nl/highlight.pack.js b/docs/html/nl/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/nl/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/nl/import-export.html b/docs/html/nl/import-export.html new file mode 100644 index 000000000..aa18800b0 --- /dev/null +++ b/docs/html/nl/import-export.html @@ -0,0 +1,158 @@ + + + + + +Importeren/exporteren + + + +
+

Importeren/exporteren

+
+
+
+

Formaten importeren

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Nooit

      +

      1 - Dagelijks

      +

      2 - Wekelijks

      +

      7 - Twee­wekelijks

      +

      3 - Maandelijks

      +

      4 - Eén keer per kwartaal

      +

      5 - Jaarlijks

      +

      6 - Twee­jaarlijks

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Formaten exporteren

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/nl/index.html b/docs/html/nl/index.html new file mode 100644 index 000000000..ac2de908a --- /dev/null +++ b/docs/html/nl/index.html @@ -0,0 +1,58 @@ + + + + + +Hulp voor Denaro + + + +
+
+
+ diff --git a/docs/html/nl/nl.css b/docs/html/nl/nl.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/nl/nl.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/nl/transaction.html b/docs/html/nl/transaction.html new file mode 100644 index 000000000..542f99e3f --- /dev/null +++ b/docs/html/nl/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transactie + + + +
+

Transactie

+
+
+

This page explains all properties of transactions in Denaro.

+
+
ID
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Omschrijving
+

No limit on length. It can't contain semicolon.

+
Hoeveelheid
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Datum
+

Any date can be selected, you can also create transactions for future dates.

+
Herhalingsinterval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Einddatum herhalen
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Groep
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Kleur
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Factuur
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Aantekeningen
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/nl/transfer.html b/docs/html/nl/transfer.html new file mode 100644 index 000000000..4efeee072 --- /dev/null +++ b/docs/html/nl/transfer.html @@ -0,0 +1,67 @@ + + + + + +Overdracht + + + +
+

Overdracht

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/nl/yelp.js b/docs/html/nl/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/nl/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/oc/account.html b/docs/html/oc/account.html new file mode 100644 index 000000000..24a4d8b18 --- /dev/null +++ b/docs/html/oc/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/oc/configuration.html b/docs/html/oc/configuration.html new file mode 100644 index 000000000..56bb9d723 --- /dev/null +++ b/docs/html/oc/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/figures/denaro.png b/docs/html/oc/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/oc/figures/denaro.png rename to docs/html/oc/figures/denaro.png diff --git a/docs/html/oc/highlight.pack.js b/docs/html/oc/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/oc/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/oc/import-export.html b/docs/html/oc/import-export.html new file mode 100644 index 000000000..8f3fe6129 --- /dev/null +++ b/docs/html/oc/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/oc/index.html b/docs/html/oc/index.html new file mode 100644 index 000000000..2a0d17287 --- /dev/null +++ b/docs/html/oc/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/oc/oc.css b/docs/html/oc/oc.css new file mode 100644 index 000000000..176f46fdf --- /dev/null +++ b/docs/html/oc/oc.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '«'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 0.5em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/oc/transaction.html b/docs/html/oc/transaction.html new file mode 100644 index 000000000..46d7b2347 --- /dev/null +++ b/docs/html/oc/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/oc/transfer.html b/docs/html/oc/transfer.html new file mode 100644 index 000000000..6b6370d72 --- /dev/null +++ b/docs/html/oc/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/oc/yelp.js b/docs/html/oc/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/oc/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/pl/account.html b/docs/html/pl/account.html new file mode 100644 index 000000000..4cbc0e061 --- /dev/null +++ b/docs/html/pl/account.html @@ -0,0 +1,134 @@ + + + + + +Konto + + + +
+

Konto

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Nazwa
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Rodzaj konta
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Rodzaj domyślnej transakcji
+

When you create a new transaction its type by default will be the same as in this setting.

+
Częstotliwość przypomnień o transakcji
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Użyj własnej waluty
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Niestandardowy symbol waluty
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Niestandardowy kod waluty
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Hasło
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Kolejność sortowania
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Widzialność grup
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Widoczność tagów
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/pl/configuration.html b/docs/html/pl/configuration.html new file mode 100644 index 000000000..f9a6c24a9 --- /dev/null +++ b/docs/html/pl/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Domyślny kolor transakcji
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Domyślny kolor przelewu
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Domyślny kolor grupy
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Wstawianie separatora dziesiętnego
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/figures/denaro.png b/docs/html/pl/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pl/figures/denaro.png rename to docs/html/pl/figures/denaro.png diff --git a/docs/html/pl/highlight.pack.js b/docs/html/pl/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/pl/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/pl/import-export.html b/docs/html/pl/import-export.html new file mode 100644 index 000000000..90d978a26 --- /dev/null +++ b/docs/html/pl/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Eksport + + + +
+

Import/Eksport

+
+
+
+

Formaty importu

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Nigdy

      +

      1 - Codziennie

      +

      2 - Tygodniowo

      +

      7 - Co dwa tygodnie

      +

      3 - Miesięcznie

      +

      4 - Kwartalnie

      +

      5 - Rocznie

      +

      6 - Co dwa lata

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Formaty eksportu

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/pl/index.html b/docs/html/pl/index.html new file mode 100644 index 000000000..f59fcabd7 --- /dev/null +++ b/docs/html/pl/index.html @@ -0,0 +1,58 @@ + + + + + +Pomoc Denaro + + + +
+
+
+ diff --git a/docs/html/pl/pl.css b/docs/html/pl/pl.css new file mode 100644 index 000000000..a1fed39fc --- /dev/null +++ b/docs/html/pl/pl.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '”'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/pl/transaction.html b/docs/html/pl/transaction.html new file mode 100644 index 000000000..41e94fdd5 --- /dev/null +++ b/docs/html/pl/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transakcja + + + +
+

Transakcja

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Identyfikator (ID)
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Opis
+

No limit on length. It can't contain semicolon.

+
Kwota
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Rodzaj
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Data
+

Any date can be selected, you can also create transactions for future dates.

+
Interwał powtarzania
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Data końca powtarzania
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Grupa
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Kolor
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tagi
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Potwierdzenie
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Uwagi
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/pl/transfer.html b/docs/html/pl/transfer.html new file mode 100644 index 000000000..85ff132ac --- /dev/null +++ b/docs/html/pl/transfer.html @@ -0,0 +1,67 @@ + + + + + +Przelew + + + +
+

Przelew

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/pl/yelp.js b/docs/html/pl/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/pl/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/pt/account.html b/docs/html/pt/account.html new file mode 100644 index 000000000..16cf0f077 --- /dev/null +++ b/docs/html/pt/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Limite de Lembretes de Transação
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/pt/configuration.html b/docs/html/pt/configuration.html new file mode 100644 index 000000000..92778dab6 --- /dev/null +++ b/docs/html/pt/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/figures/denaro.png b/docs/html/pt/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt/figures/denaro.png rename to docs/html/pt/figures/denaro.png diff --git a/docs/html/pt/highlight.pack.js b/docs/html/pt/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/pt/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/pt/import-export.html b/docs/html/pt/import-export.html new file mode 100644 index 000000000..cf18754ec --- /dev/null +++ b/docs/html/pt/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/pt/index.html b/docs/html/pt/index.html new file mode 100644 index 000000000..6ff52e047 --- /dev/null +++ b/docs/html/pt/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/pt/pt.css b/docs/html/pt/pt.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/pt/pt.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/pt/transaction.html b/docs/html/pt/transaction.html new file mode 100644 index 000000000..966e109df --- /dev/null +++ b/docs/html/pt/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/pt/transfer.html b/docs/html/pt/transfer.html new file mode 100644 index 000000000..f0b1ae7ab --- /dev/null +++ b/docs/html/pt/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/pt/yelp.js b/docs/html/pt/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/pt/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/pt_BR/account.html b/docs/html/pt_BR/account.html new file mode 100644 index 000000000..c2754d768 --- /dev/null +++ b/docs/html/pt_BR/account.html @@ -0,0 +1,134 @@ + + + + + +Conta + + + +
+

Conta

+
+
+

Esta página explica todas as propriedades das contas no Denaro. A maioria deles é mostrada na Caixa de Diálogo de Configurações da Conta. Essa caixa de diálogo também abre automaticamente depois de criar uma nova conta.

+

Cada conta é armazenada em um único arquivo *.nmoney. Os arquivos criados em uma versão estável mais antiga do Denaro podem ser abertos com segurança em uma versão estável mais recente do aplicativo. Embora, o app possa ser executado em diferentes plataformas (Windows e Linux), os arquivos *.nmoney são 100% compatíveis entre as plataformas, desde que sejam da mesma versão do aplicativo (V2023.1.0, por exemplo).

+
+ + +

As versões instáveis (Beta e RC) do aplicativo podem conter bugs ou modificações inacabadas que podem causar perda de dados. NÃO use arquivos de conta que contêm dados reais em versões instáveis do app!

+
+
+
Nome
+

O nome da conta é mostrado na lista de contas recentes e nas abas. Um nome não possui limite de tamanho e pode conter quaisquer caracteres, incluindo emojis.

+
Tipo de Conta
+

Existem 3 tipos de conta disponíveis: 🟣Corrente, 🔵Poupança e 🟢Comercial. O tipo da conta é so um rótulo útil que é mostrado na lista de contas recentes e não afeta o funcionamento do aplicativo ou o que pode ser feito com uma conta. Cada tipo de conta possui sua própria cor. Essas cores podem ser configuradas nas configurações globais.

+
Tipo Padrão das Transações
+

Quando você cria uma nova transação, o seu tipo, por padrão, será o mesmo que nesta configuração.

+
Limite de Lembretes de Transação
+

The threshold used when showing reminders about upcoming transactions.

+
Moeda do Sistema
+
+

Sempre que o aplicativo é iniciado, ele obtém os dados sobre a moeda e formatação de números do seu sistema e os usa para mostrar o símbolo da moeda (a menos que uma moeda personalizada seja usada. Veja abaixo) e para determinar em que formato os números serão aceitos como valor para as transações. Alguns exemplos:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/pt_BR/configuration.html b/docs/html/pt_BR/configuration.html new file mode 100644 index 000000000..1c504c29a --- /dev/null +++ b/docs/html/pt_BR/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/figures/denaro.png b/docs/html/pt_BR/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt_BR/figures/denaro.png rename to docs/html/pt_BR/figures/denaro.png diff --git a/docs/html/pt_BR/highlight.pack.js b/docs/html/pt_BR/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/pt_BR/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/pt_BR/import-export.html b/docs/html/pt_BR/import-export.html new file mode 100644 index 000000000..96930c0c0 --- /dev/null +++ b/docs/html/pt_BR/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/pt_BR/index.html b/docs/html/pt_BR/index.html new file mode 100644 index 000000000..32bd187fa --- /dev/null +++ b/docs/html/pt_BR/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/pt_BR/pt-BR.css b/docs/html/pt_BR/pt-BR.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/pt_BR/pt-BR.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/pt_BR/transaction.html b/docs/html/pt_BR/transaction.html new file mode 100644 index 000000000..8b3f2669c --- /dev/null +++ b/docs/html/pt_BR/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/pt_BR/transfer.html b/docs/html/pt_BR/transfer.html new file mode 100644 index 000000000..5e8da50ba --- /dev/null +++ b/docs/html/pt_BR/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/pt_BR/yelp.js b/docs/html/pt_BR/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/pt_BR/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/ro/account.html b/docs/html/ro/account.html new file mode 100644 index 000000000..da21ae440 --- /dev/null +++ b/docs/html/ro/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Nume
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Tipul contului
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/ro/configuration.html b/docs/html/ro/configuration.html new file mode 100644 index 000000000..5025fb894 --- /dev/null +++ b/docs/html/ro/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/figures/denaro.png b/docs/html/ro/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ro/figures/denaro.png rename to docs/html/ro/figures/denaro.png diff --git a/docs/html/ro/highlight.pack.js b/docs/html/ro/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/ro/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/ro/import-export.html b/docs/html/ro/import-export.html new file mode 100644 index 000000000..1adb1c804 --- /dev/null +++ b/docs/html/ro/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/ro/index.html b/docs/html/ro/index.html new file mode 100644 index 000000000..547423607 --- /dev/null +++ b/docs/html/ro/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/ro/ro.css b/docs/html/ro/ro.css new file mode 100644 index 000000000..a1fed39fc --- /dev/null +++ b/docs/html/ro/ro.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '”'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/ro/transaction.html b/docs/html/ro/transaction.html new file mode 100644 index 000000000..af9977f0b --- /dev/null +++ b/docs/html/ro/transaction.html @@ -0,0 +1,86 @@ + + + + + +Tranzacție + + + +
+

Tranzacție

+
+
+

This page explains all properties of transactions in Denaro.

+
+
ID
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Descriere
+

No limit on length. It can't contain semicolon.

+
Sumă
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Gen
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Data
+

Any date can be selected, you can also create transactions for future dates.

+
Interval de repetare
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Data sfârșitul repetiției
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Grupă
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Etichete
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Chitanță
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Note
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/ro/transfer.html b/docs/html/ro/transfer.html new file mode 100644 index 000000000..0c22de763 --- /dev/null +++ b/docs/html/ro/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/ro/yelp.js b/docs/html/ro/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/ro/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/ru/account.html b/docs/html/ru/account.html new file mode 100644 index 000000000..b7ccea0a0 --- /dev/null +++ b/docs/html/ru/account.html @@ -0,0 +1,134 @@ + + + + + +Счёт + + + +
+

Счёт

+
+
+

На этой странице перечислены все свойства счетов в Denaro. Большинство из них отображены в Диалоге настроек счёта. Этот диалог открывается автоматически, когда вы создаёте новый счёт.

+

Каждый счёт хранится в одном файле *.nmoney. Файлы, созданные в старых стабильных версиях Denaro, могут быть безопасно открыты в более новых стабильных версиях приложения. Приложение поддерживает различные платформы (Windows and Linux), и файлы *.nmoney 100% совместимы между платформами, если используется та же версия приложения (например, V2023.1.0).

+
+ + +

Нестабильные (Beta и RC) версии приложения могут содержать ошибки или незавершённые изменения, который могут привести к потере данных. НЕ ИСПОЛЬЗУЙТЕ файлы счетов, содержащие важные данные, в нестабильных версиях приложения!

+
+
+
Имя
+

Имя счёта отображается в списке недавних счетов и во вкладках. На количество символов в имени нет ограничения, и оно может содержать любые символы, включая эмодзи.

+
Тип счёта
+

Доступно 3 типа счетов: 🟣Расчётный, 🔵Сберегательный и 🟢Бизнес. Тип счёта представляет собой лишь полезную метку, которая отображается в списке недавних счетов, и никак не влияет на работу приложения, не меняет ничего в том, как вы можете использовать счёт. У каждого типа счёта есть свой цвет, цвета можно настроить в глобальной конфигурации.

+
Тип транзакции по умолчанию
+

Когда вы создаёте новую транзакцию, её тип по умолчанию будет тем же, что указан этой настройкой.

+
Порог напоминаний для транзакций
+

Этот порог используется для отображения напоминаний для грядущих транзакций.

+
Системная валюта
+
+

Каждый раз, когда приложение запускается, оно получает данные о валюте и формате чисел из региональных настроек вашей системы, и эти данные используются для отображения символа валюты (если только вы не указали свою валюту, смотрите ниже), а также для определения того, в каком формате числа будут приниматься в качестве значения суммы для транзакций. Несколько примеров:

+
    +
  • Если ваш регион Английский (США), знак $ будет символом валюты, а 1,000.00 будет приниматься как корректное число.

  • +
  • Если ваш регион Итальянский, знак будет символом валюты, а 1.000,00 будет приниматься как корректное число.

  • +
  • Если ваш регион Российский, знак будет символом валюты, а 1000,00 будет приниматься как корректное число.

  • +
+
+ + + + + + + + + + + + + +

В ОС Linux возможно установить разные региональные настройки отдельно для языка и форматов. Способ изменения этих настроек зависит от вашего рабочего окружения. Несмотря на различия в расположении этих настроек, их изменение приводит к модификации системных переменных окружения, таких как LANG (формат языка), LC_TIME (формат дат и времени) и LC_MONETARY (формат чисел и валюты). Denaro попытается использовать форматы для сумм транзакций и дат в соответствии с этими переменными. Если приложение не использует ожидаемые форматы, проверьте корректность значений переменных, используя команду locale в терминале. Если вы нашли ошибку в приложении и хотите сообщить о ней, добавьте вывод команды locale в ваше сообщение, чтобы разработчики смогли воспроизвести ошибку, установив идентичные настройки.

+
+
+
Использование своей валюты
+

Если эта опция включена, свой Символ валюты будет использоваться вместо символа, предоставленного региональными настройками вашей системы.

+
Свой символ валюты
+

До 3 текстовых символов, либо 1 эмодзи. Не может быть числом.

+
Свой код валюты
+
+

До 3 текстовых символов, либо 1 эмодзи.

+

Пример для понимания разницы между символом и кодом: $ — символ, USD — код.

+
+
Свой стиль отображения сумм
+
+

Можно выбрать один из следующих стилей:

+
    +
  • ₽n

  • +
  • n₽

  • +
  • ₽ n

  • +
  • n ₽

  • +
+
+
Десятичный разделитель и разделитель групп разрядов
+

До 2 текстовых символов, либо 1 эмодзи.

+
Цифры в дробной части
+

Размер дробной части значений сумм. При выборе неограниченного размера будет отображаться столько цифр, сколько необходимо для отображения точного значения, но дробной части не будет, если число целое.

+
Пароль
+

Каждый счёт может быть защищён паролем. Добавление пароля делает счёт зашифрованным (доступ к данным невозможно получить, не расшифровав файл с помощью пароля). Будьте осторожны: если вы забудете пароль, вы не сможете восстановить данные! Пароль может быть изменён или удалён в диалоге настроек счёта. Удаление пароля расшифровывает данные.

+
Сортировка по номеру, дате или сумме
+

Каждый счёт хранит информацию о том, должны ли транзакции в главном окне быть отсортированы по номеру, дате или сумме. Каждый раз, когда вы меняете сортировку, она сохраняется для открытого счёта и будет восстановлена, когда вы снова откроете этот счёт.

+
Порядок сортировки
+

Каждый счёт хранит информацию о том, в каком порядке должны отображаться транзакции в главном окне. Каждый раз, когда вы меняете порядок, он сохраняется для открытого счёта и будет восстановлен, когда вы снова откроете этот счёт.

+
Видимость групп
+

Каждый счёт хранит информацию о том, должен ли список групп быть показан в главном окне. Каждый раз, когда вы меняете видимость списка групп, информация об этом сохраняется для открытого счёта и состояние списка групп будет восстановлено, когда вы снова откроете этот счёт.

+
Видимость меток
+

Каждый счёт хранит информацию о том, должен ли список меток быть показан в главном окне. Каждый раз, когда вы меняете видимость списка меток, информация об этом сохраняется для открытого счёта и состояние списка меток будет восстановлено, когда вы снова откроете этот счёт.

+
+
+ +
+
+
+ diff --git a/docs/html/ru/configuration.html b/docs/html/ru/configuration.html new file mode 100644 index 000000000..db03aabd0 --- /dev/null +++ b/docs/html/ru/configuration.html @@ -0,0 +1,73 @@ + + + + + +Конфигурация + + + +
+

Конфигурация

+
+
+

На этой странице перечислены настройки, которые вы можете изменить в конфигурации приложения.

+

В зависимости от вашей ОС, в интерфейсе приложения конфигурация называется другим термином: Параметры или Настройки.

+
+
Тема
+

Установите, должно ли приложение использовать светлую или тёмную тему, либо следовать настройкам вашей системы. Для применения темы в ОС Windows требуется перезапуск программы.

+
Цвет транзакции по умолчанию
+

Цвет, который будет выбран по умолчанию при создании новой транзакции с собственным цветом. Изменение цвета не затронет существующие транзакции, даже если они используют цвет, который ранее был цветом по умолчанию.

+
Цвет перевода средств по умолчанию
+

Цвет, который будет использован для транзакций, созданных с помощью перевода средств. Изменение цвета не затронет существующие транзакции.

+
Цвет группы по умолчанию
+

Цвет, который будет выбран по умолчанию при создании новой группы. Это также цвет группы «Несгруппированные».

+
Вставка десятичного разделителя
+

Установите, нажатия каких кнопок будут вставлять десятичный разделитель в поля сумм: точка на Numpad, любая точка или запятая, либо можно отключить эту функцию. Если десятичный разделитель уже присутствует в строке, он не будет добавлен.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/figures/denaro.png b/docs/html/ru/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ru/figures/denaro.png rename to docs/html/ru/figures/denaro.png diff --git a/docs/html/ru/highlight.pack.js b/docs/html/ru/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/ru/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/ru/import-export.html b/docs/html/ru/import-export.html new file mode 100644 index 000000000..3365b2333 --- /dev/null +++ b/docs/html/ru/import-export.html @@ -0,0 +1,158 @@ + + + + + +Импорт/Экспорт + + + +
+

Импорт/Экспорт

+
+
+
+

Форматы импорта

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Даты должны быть в формате ГГГГММДД.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Даты должны быть в Английском (США) формате (ММ/ДД/ГГГГ).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ Хотя CSV является распространённым форматом, и некоторые банки предоставляют возможность своим клиентам экспортировать данные в формате CSV, такие файлы фактически являются таблицами, которые могут содержать произвольные данные. Импорт CSV файла, созданного в другой программе, не удастся, т.к. данные не будут совместимы с тем, что Denaro ожидает получить из файла. Смысл импорта/экспорта CSV в том, чтобы предоставить возможность добавлять новые данные в счёт, используя сторонние программы, например, текстовые редакторы или офисные приложения. При импорте только создаются новые транзакции, существующие не перезаписываются. Если вы хотите создать CSV файл вручную, заголовок таблицы со всеми столбцами, которые Denaro ожидает найти, выглядит следующим образом:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Номер транзакции, должен быть уникальным для данного счёта. Номера начинаются с 1.

      +
    • +
    • +

      Date

      +

      Дата транзакции (или дата начала для повторяющейся транзакции), должна быть в Английском (США) формате (ММ/ДД/ГГГГ).

      +
    • +
    • +

      Description

      +

      Описание транзакции, может содержать любые символы, кроме точки с запятой.

      +
    • +
    • +

      Type

      +

      Тип транзакции: 0 - доход, 1 - расход.

      +
    • +
    • +

      RepeatInterval

      +

      Число, соответствующее интервалу повтора транзакции:

      +

      0 - Никогда

      +

      1 - Ежедневно

      +

      2 - Еженедельно

      +

      7 - Раз в 2 недели

      +

      3 - Ежемесячно

      +

      4 - Ежеквартально

      +

      5 - Ежегодно

      +

      6 - Раз в два года

      +

      Подробности о повторящихся транзакциях смотрите в описании Интервала Повтора на странице о транзакциях.

      +
    • +
    • +

      RepeatFrom

      +

      Либо номер транзакции-источника, либо 0, если это транзакция-источник, либо -1, если это не повторящаяся транзакция.

      +
    • +
    • +

      RepeatEndDate

      +

      Дата окончания повторяющейся транзакции, должна быть в Английском (США) формате (ММ/ДД/ГГГГ). Оставьте это поле пустым, если транзакция не повторяющаяся.

      +
    • +
    • +

      Amount

      +

      Сумма транзакции в Английском (США) формате (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Цвет транзакции, должен быть в формате rgb(R,G,B), где R (красный), G (зелёный) и B (синий) — это целые числа в диапазоне от 0 до 255.

      +
    • +
    • +

      UseGroupColor

      +

      Должен ли для транзакции использоваться цвет группы: 0 — нет, 1 — да.

      +
    • +
    • +

      Group

      +

      Номер группы транзакции. Номера начинаются с 1. Для транзакции без группы укажите -1 (не 0, это некорректное значение для номера группы).

      +
    • +
    • +

      GroupName

      +

      Имя группы транзакции, должно соответствовать номеру группы. Может содержать любые символы, кроме точки с запятой. Оставьте это поле постым для транзакции без группы, но если транзакция принадлежит к какой-либо группе, имя не должно быть пустым.

      +
    • +
    • +

      GroupDescription

      +

      Описание группы транзакции, должно соответствовать номеру группы. Может содержать любые символы, кроме точки с запятой, и может быть пустым. Оставьте это поле постым для транзакции без группы.

      +
    • +
    • +

      GroupRGBA

      +

      Цвет группы, должен быть в формате rgb(R,G,B), где R (красный), G (зелёный) и B (синий) — это целые числа в диапазоне от 0 до 255.

      +
    • +
    +

    Чек и заметки не присутствуют в формате CSV.

    +
  • +
+
+
+

Форматы экспорта

+
+

Вы можете выбрать, следует ли экспортировать всю информацию или только из текущего вида. Если выберите текущий вид, отображаемые в данный момент транзакции будут экспортированы в том же порядке, в котором они показаны.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    Файл будет содержать информацию о счёте, список транзакций и изображения чеков. Транзакции окрашены цветами так же, как в приложении, но цвета сделаны полупрозрачными, чтобы на них всегда был отчётливо виден чёрный текст. Вы можете защитить экспортируемый файл паролем.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/ru/index.html b/docs/html/ru/index.html new file mode 100644 index 000000000..d6d9fc2a0 --- /dev/null +++ b/docs/html/ru/index.html @@ -0,0 +1,58 @@ + + + + + +Справка Denaro + + + +
+

Справка Denaro

+
+

Эта документация призвана помочь вам понять, как управлять данными в Denaro, чтобы использовать приложение максимально эффективно.

+

Для получения дополнительной помощи посетите раздел проблем или обсуждения на Github, либо наш канал в Matrix.

+ +
+
+
+ diff --git a/docs/html/ru/ru.css b/docs/html/ru/ru.css new file mode 100644 index 000000000..176f46fdf --- /dev/null +++ b/docs/html/ru/ru.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '«'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 0.5em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/ru/transaction.html b/docs/html/ru/transaction.html new file mode 100644 index 000000000..fcba11d17 --- /dev/null +++ b/docs/html/ru/transaction.html @@ -0,0 +1,86 @@ + + + + + +Транзакция + + + +
+

Транзакция

+
+
+

На этой странице перечислены все свойства транзакций в Denaro.

+
+
Номер
+

Каждой транзакции присваивается идентификационный номер, уникальный в пределах счёта. Номера начинаются с 1 и увеличиваются с каждой добавленной транзакцией. Номер нельзя изменить, номера удалённых транзакций не используются повторно.

+
Описание
+

Нет ограничений по длине. Может содержать любые символы, кроме точки с запятой.

+
Сумма
+

Число в формате, корректном для ваших региональных настроек, для подробностей почитайте о Системной валюте на странице о счетах.

+
Тип
+

Доходы или Расходы. По умолчанию при открытии диалога добавления новой транзакции будет выбран тот тип, что указан в настройках счёта.

+
Дата
+

Может быть выбрана любая дата, вы также можете создавать транзакции для будущих дат.

+
Интервал повтора
+

Укажите интервал повтора для создания повторяющихся транзакций. После добавления транзакции с интервалом повтора, эта транзакция становится транзакцией-источником. Denaro автоматически сгенерирует транзакции-повторы вплоть до текущего дня, либо до даты окончания повтора, если она в прошлом. Повторы нельзя редактировать и удалять, только источник может быть изменён. Когда вы внесёте изменения в источник, Denaro спросит, хотите ли вы так же изменить повторы, либо же отвязать их. Если вы отвяжете транзакции-повторы, они станут обычными транзакциями, которые можно будет по отдельности редактировать и удалять.

+
Дата окончания повтора
+

Крайняя дата для транзакции с повтором. Она не может быть раньше или в тот же день что и дата начала.

+
Группа
+

Каждая транзакция может принадлежать только к одной группе, либо быть без группы (т.е. принадлежать к группе «Несгруппированные»).

+
Цвет
+

Цвет транзакции. Можно либо использовать цвет группы, либо указать собственный цвет. При выборе собственного цвета, по умолчанию он будет соответствовать цвету, указанному в конфигурации, но он может быть изменён на любой другой цвет.

+
Метки
+

Список меток для транзакции. У транзакции может быть сколько угодно меток (либо не быть меток вовсе). Метки могут содержать любые символы, кроме запятой (,), и у них может быть любая длина, но предполагается что это буду короткие ключевые слова. Метки предназначены для дополнительной фильтрации, когда использования групп недостаточно. Метки сохраняются в самих транзакциях, в результате чего неиспользованные метки исчезают автоматически при закрытии счёта.

+
Чек
+

Изображение чека транзакции. Вы можете загрузить изображение в формате JPEG или PNG, либо PDF документ, но независимо от формата файл будет конвертирован и сохранён как изображение JPEG. Если вы загрузил PDF, только первая страница будет сохранена. Удалить или загрузить другой файл можно в любой момент.

+
Заметки
+

Текстовая заметка в свободной форме для прикрепления к транзакции.

+
+
+ +
+
+
+ diff --git a/docs/html/ru/transfer.html b/docs/html/ru/transfer.html new file mode 100644 index 000000000..6f5bff3f7 --- /dev/null +++ b/docs/html/ru/transfer.html @@ -0,0 +1,67 @@ + + + + + +Перевод средств + + + +
+

Перевод средств

+
+
+

Перевод средств — это способ перечислить деньги с одного счёта на другой. После выполнения перевода будут созданы 2 транзакции со следующими описаниями:

+
    +
  • «Перевод на Имя целевого счёта» на исходном счёте.

  • +
  • «Перевод с Имя исходного счёта» на целевом счёте.

  • +
+

Транзакции, созданные с помощью перевода средств, являются простыми транзакциями, которые можно свободно редактировать и удалять. Эти транзакции не связаны: изменение транзакции на исходном счёте не изменит транзакцию на целевом счёте, и наоборот.

+

Перевод средств не позволяет создавать повторяющиеся транзакции или задавать какие-либо другие свойства, кроме суммы. Цвет, выбранный в конфигурации, будет использован для созданных транзакций.

+

Если вы производите перевод средств между счетами с разными валютами, Denaro попросит вас указать обменный курс.

+
+ +
+
+
+ diff --git a/docs/html/ru/yelp.js b/docs/html/ru/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/ru/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/sv/account.html b/docs/html/sv/account.html new file mode 100644 index 000000000..4ffb5bfef --- /dev/null +++ b/docs/html/sv/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/sv/configuration.html b/docs/html/sv/configuration.html new file mode 100644 index 000000000..3f4e8674f --- /dev/null +++ b/docs/html/sv/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/figures/denaro.png b/docs/html/sv/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/sv/figures/denaro.png rename to docs/html/sv/figures/denaro.png diff --git a/docs/html/sv/highlight.pack.js b/docs/html/sv/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/sv/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/sv/import-export.html b/docs/html/sv/import-export.html new file mode 100644 index 000000000..76b1a62ea --- /dev/null +++ b/docs/html/sv/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/sv/index.html b/docs/html/sv/index.html new file mode 100644 index 000000000..8b15f3b82 --- /dev/null +++ b/docs/html/sv/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/sv/sv.css b/docs/html/sv/sv.css new file mode 100644 index 000000000..a1fed39fc --- /dev/null +++ b/docs/html/sv/sv.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '”'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/sv/transaction.html b/docs/html/sv/transaction.html new file mode 100644 index 000000000..3ffb554dd --- /dev/null +++ b/docs/html/sv/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/sv/transfer.html b/docs/html/sv/transfer.html new file mode 100644 index 000000000..15940fc30 --- /dev/null +++ b/docs/html/sv/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/sv/yelp.js b/docs/html/sv/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/sv/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/ta/account.html b/docs/html/ta/account.html new file mode 100644 index 000000000..7d29d89b0 --- /dev/null +++ b/docs/html/ta/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/ta/configuration.html b/docs/html/ta/configuration.html new file mode 100644 index 000000000..87509a4d1 --- /dev/null +++ b/docs/html/ta/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/figures/denaro.png b/docs/html/ta/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ta/figures/denaro.png rename to docs/html/ta/figures/denaro.png diff --git a/docs/html/ta/highlight.pack.js b/docs/html/ta/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/ta/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/ta/import-export.html b/docs/html/ta/import-export.html new file mode 100644 index 000000000..55486508a --- /dev/null +++ b/docs/html/ta/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/ta/index.html b/docs/html/ta/index.html new file mode 100644 index 000000000..11e4c81ea --- /dev/null +++ b/docs/html/ta/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/ta/ta.css b/docs/html/ta/ta.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/ta/ta.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/ta/transaction.html b/docs/html/ta/transaction.html new file mode 100644 index 000000000..740b93291 --- /dev/null +++ b/docs/html/ta/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/ta/transfer.html b/docs/html/ta/transfer.html new file mode 100644 index 000000000..b6df13369 --- /dev/null +++ b/docs/html/ta/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/ta/yelp.js b/docs/html/ta/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/ta/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/tr/account.html b/docs/html/tr/account.html new file mode 100644 index 000000000..aa689ed97 --- /dev/null +++ b/docs/html/tr/account.html @@ -0,0 +1,134 @@ + + + + + +Hesap + + + +
+

Hesap

+
+
+

Bu sayfa Denaro hesaplarının tüm özelliklerini açıklar. Bu özelliklerin çoğu Hesap Ayarları Diyaloğu içerisinde gösterilir. Bu diyalog ayrıca yeni bir hesap oluşturulduktan sonra otomatik olarak da açılır.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
İşlem Hatırlatma Eşiği
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/tr/configuration.html b/docs/html/tr/configuration.html new file mode 100644 index 000000000..743ee6f0e --- /dev/null +++ b/docs/html/tr/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Öntanımlı İşlem Rengi
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Öntanımlı Aktarım Rengi
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Öntanımlı Grup Rengi
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/figures/denaro.png b/docs/html/tr/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/tr/figures/denaro.png rename to docs/html/tr/figures/denaro.png diff --git a/docs/html/tr/highlight.pack.js b/docs/html/tr/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/tr/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/tr/import-export.html b/docs/html/tr/import-export.html new file mode 100644 index 000000000..96751154a --- /dev/null +++ b/docs/html/tr/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/tr/index.html b/docs/html/tr/index.html new file mode 100644 index 000000000..2252c66de --- /dev/null +++ b/docs/html/tr/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/tr/tr.css b/docs/html/tr/tr.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/tr/tr.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/tr/transaction.html b/docs/html/tr/transaction.html new file mode 100644 index 000000000..a79caf3bb --- /dev/null +++ b/docs/html/tr/transaction.html @@ -0,0 +1,86 @@ + + + + + +İşlem + + + +
+

İşlem

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Tür
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Tekrarlama Aralığı
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Tekrarlama Bitiş Tarihi
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Etiketler
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/tr/transfer.html b/docs/html/tr/transfer.html new file mode 100644 index 000000000..fe108cd9f --- /dev/null +++ b/docs/html/tr/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/tr/yelp.js b/docs/html/tr/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/tr/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/ur/account.html b/docs/html/ur/account.html new file mode 100644 index 000000000..62935f21b --- /dev/null +++ b/docs/html/ur/account.html @@ -0,0 +1,134 @@ + + + + + +Account + + + +
+

Account

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
Name
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
Account Type
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
Default Transaction Type
+

When you create a new transaction its type by default will be the same as in this setting.

+
Transaction Reminders Threshold
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
Use Custom Currency
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
Password
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/ur/configuration.html b/docs/html/ur/configuration.html new file mode 100644 index 000000000..c7c3f8444 --- /dev/null +++ b/docs/html/ur/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
Theme
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
Transaction Default Color
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
Transfer Default Color
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
Group Default Color
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
Insert Decimal Separator
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/figures/denaro.png b/docs/html/ur/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ur/figures/denaro.png rename to docs/html/ur/figures/denaro.png diff --git a/docs/html/ur/highlight.pack.js b/docs/html/ur/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/ur/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/ur/import-export.html b/docs/html/ur/import-export.html new file mode 100644 index 000000000..06e09bcec --- /dev/null +++ b/docs/html/ur/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/ur/index.html b/docs/html/ur/index.html new file mode 100644 index 000000000..19b645835 --- /dev/null +++ b/docs/html/ur/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/ur/transaction.html b/docs/html/ur/transaction.html new file mode 100644 index 000000000..aa379e7a7 --- /dev/null +++ b/docs/html/ur/transaction.html @@ -0,0 +1,86 @@ + + + + + +Transaction + + + +
+

Transaction

+
+
+

This page explains all properties of transactions in Denaro.

+
+
Id
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
Description
+

No limit on length. It can't contain semicolon.

+
Amount
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
Type
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
Date
+

Any date can be selected, you can also create transactions for future dates.

+
Repeat Interval
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
Repeat End Date
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
Group
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
Color
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
Tags
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
Receipt
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
Notes
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/ur/transfer.html b/docs/html/ur/transfer.html new file mode 100644 index 000000000..f1b53b71e --- /dev/null +++ b/docs/html/ur/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/ur/ur.css b/docs/html/ur/ur.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/ur/ur.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/html/ur/yelp.js b/docs/html/ur/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/ur/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/zh_CN/account.html b/docs/html/zh_CN/account.html new file mode 100644 index 000000000..f864cd562 --- /dev/null +++ b/docs/html/zh_CN/account.html @@ -0,0 +1,134 @@ + + + + + +账户 + + + +
+

账户

+
+
+

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+
+ + +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+
+
名称
+

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
账户类型
+

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
默认的交易类型
+

When you create a new transaction its type by default will be the same as in this setting.

+
交易提醒阈值
+

The threshold used when showing reminders about upcoming transactions.

+
System Currency
+
+

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+
    +
  • If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

  • +
  • If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

  • +
  • If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

  • +
+
+ + + + + + + + + + + + + +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+
使用自定义货币
+

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
Custom Currency Symbol
+

Up to 3 characters or 1 emoji. It can't be a number.

+
Custom Currency Code
+
+

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+
Custom Currency Amount Style
+
+

A choice of displaying an amount in one of the following ways:

+
    +
  • $n

  • +
  • n$

  • +
  • $ n

  • +
  • n $

  • +
+
+
Custom Currency Decimal and Group Separators
+

Up to 2 characters or 1 emoji.

+
Custom Currency Decimal Digits
+

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
密码
+

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
Sort by Id, Date or Amount
+

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Sorting Order
+

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
Groups Visibility
+

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
Tags Visibility
+

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+ +
+
+
+ diff --git a/docs/html/zh_CN/configuration.html b/docs/html/zh_CN/configuration.html new file mode 100644 index 000000000..89646e8c3 --- /dev/null +++ b/docs/html/zh_CN/configuration.html @@ -0,0 +1,73 @@ + + + + + +Configuration + + + +
+

Configuration

+
+
+

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+
+
主题
+

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
默认交易颜色
+

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
默认转账颜色
+

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
群组默认颜色
+

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
插入十进制分隔符
+

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+ +
+
+
+ diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/figures/denaro.png b/docs/html/zh_CN/figures/denaro.png similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/zh_CN/figures/denaro.png rename to docs/html/zh_CN/figures/denaro.png diff --git a/docs/html/zh_CN/highlight.pack.js b/docs/html/zh_CN/highlight.pack.js new file mode 100644 index 000000000..9c2b643ef --- /dev/null +++ b/docs/html/zh_CN/highlight.pack.js @@ -0,0 +1,1342 @@ +/* + Highlight.js 10.6.0 (eb742fd6) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var s=t[n] +;"object"!=typeof s||Object.isFrozen(s)||e(s)})),t}var t=e,n=e;t.default=n +;class s{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data} +ignoreMatch(){this.ignore=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const i=e=>!!e.kind +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!i(e))return;let t=e.kind +;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){ +i(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{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 t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}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,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),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=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){return!0}}function u(e){ +return e?"string"==typeof e?e:e.source:null} +const g="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",h="\\b\\d+(\\.\\d+)?",f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",p="\\b(0b[01]+)",m={ +begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'", +illegal:"\\n",contains:[m]},x={className:"string",begin:'"',end:'"', +illegal:"\\n",contains:[m]},E={ +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/ +},v=(e,t,n={})=>{const s=a({className:"comment",begin:e,end:t,contains:[]},n) +;return s.contains.push(E),s.contains.push({className:"doctag", +begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),s +},w=v("//","$"),N=v("/\\*","\\*/"),y=v("#","$");var R=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:g,UNDERSCORE_IDENT_RE:d, +NUMBER_RE:h,C_NUMBER_RE:f,BINARY_NUMBER_RE:p, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=((...e)=>e.map((e=>u(e))).join(""))(t,/.*\b/,e.binary,/\b.*/)), +a({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{ +0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:b, +QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:E,COMMENT:v,C_LINE_COMMENT_MODE:w, +C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:y,NUMBER_MODE:{className:"number", +begin:h,relevance:0},C_NUMBER_MODE:{className:"number",begin:f,relevance:0}, +BINARY_NUMBER_MODE:{className:"number",begin:p,relevance:0},CSS_NUMBER_MODE:{ +className:"number", +begin:h+"(%|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:[m,{begin:/\[/,end:/\]/, +relevance:0,contains:[m]}]}]},TITLE_MODE:{className:"title",begin:g,relevance:0 +},UNDERSCORE_TITLE_MODE:{className:"title",begin:d,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function _(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function k(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=_,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function O(e,t){ +Array.isArray(e.illegal)&&(e.illegal=((...e)=>"("+e.map((e=>u(e))).join("|")+")")(...e.illegal)) +}function M(e,t){if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function A(e,t){ +void 0===e.relevance&&(e.relevance=1)} +const L=["of","and","for","in","not","or","if","then","parent","list","value"] +;function B(e,t,n="keyword"){const s={} +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(s,B(e[n],t,n))})),s;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;s[n[0]]=[e,I(n[0],n[1])]}))}}function I(e,t){ +return t?Number(t):(e=>L.includes(e.toLowerCase()))(e)?0:1} +function T(e,{plugins:t}){function n(t,n){ +return RegExp(u(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class s{ +constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=(e=>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(((e,t="|")=>{ +const n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;let s=0,r="" +;for(let a=0;a0&&(r+=t),r+="(";o.length>0;){const e=n.exec(o);if(null==e){r+=o;break} +r+=o.substring(0,e.index), +o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+i):(r+=e[0], +"("===e[0]&&s++)}r+=")"}return r})(e),!0),this.lastIndex=0}exec(e){ +this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e) +;if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,s)}}class r{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 t=new s +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,i){const o=s +;if(s.compiled)return o +;[M].forEach((e=>e(s,i))),e.compilerExtensions.forEach((e=>e(s,i))), +s.__beforeBegin=null,[k,O,A].forEach((e=>e(s,i))),s.compiled=!0;let l=null +;if("object"==typeof s.keywords&&(l=s.keywords.$pattern, +delete s.keywords.$pattern), +s.keywords&&(s.keywords=B(s.keywords,e.case_insensitive)), +s.lexemes&&l)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ") +;return l=l||s.lexemes||/\w+/, +o.keywordPatternRe=n(l,!0),i&&(s.begin||(s.begin=/\B|\b/), +o.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin), +s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(s.end)),o.terminatorEnd=u(s.end)||"", +s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:j(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,i),o.matcher=(e=>{const t=new r +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function j(e){ +return!!e&&(e.endsWithParent||j(e.starts))}function S(e){const t={ +props:["language","code","autodetect"],data:()=>({detectedLanguage:"", +unknownLanguage:!1}),computed:{className(){ +return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){ +if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`), +this.unknownLanguage=!0,r(this.code);let t={} +;return this.autoDetect?(t=e.highlightAuto(this.code), +this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals), +this.detectedLanguage=this.language),t.value},autoDetect(){ +return!(this.language&&(e=this.autodetect,!e&&""!==e));var e}, +ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{ +class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{ +Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const P={ +"after:highlightBlock":({block:e,result:t,text:n})=>{const s=C(e) +;if(!s.length)return;const a=document.createElement("div") +;a.innerHTML=t.value,t.value=((e,t,n)=>{let s=0,a="";const i=[];function o(){ +return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){ +a+=""}function u(e){("start"===e.event?l:c)(e.node)} +for(;e.length||t.length;){let t=o() +;if(a+=r(n.substring(s,t[0].offset)),s=t[0].offset,t===e){i.reverse().forEach(c) +;do{u(t.splice(0,1)[0]),t=o()}while(t===e&&t.length&&t[0].offset===s) +;i.reverse().forEach(l) +}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])} +return a+r(n.substr(s))})(s,C(a),n)}};function D(e){ +return e.nodeName.toLowerCase()}function C(e){const t=[];return function e(n,s){ +for(let r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?s+=r.nodeValue.length:1===r.nodeType&&(t.push({ +event:"start",offset:s,node:r}),s=e(r,s),D(r).match(/br|hr|img|input/)||t.push({ +event:"stop",offset:s,node:r}));return s}(e,0),t}const H=e=>{console.error(e) +},U=(e,...t)=>{console.log("WARN: "+e,...t)},$=(e,t)=>{ +console.log(`Deprecated as of ${e}. ${t}`)},z=r,K=a,G=Symbol("nomatch") +;return(e=>{const n=Object.create(null),r=Object.create(null),a=[];let i=!0 +;const o=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",u={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +tabReplace:null,useBR:!1,languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function h(e,t,n,s){const r={code:t,language:e} +;M("before:highlight",r);const a=r.result?r.result:f(r.language,r.code,n,s) +;return a.code=r.code,M("after:highlight",a),a}function f(e,t,r,o){const c=t +;function u(e,t){const n=w.case_insensitive?t[0].toLowerCase():t[0] +;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]} +function d(){null!=R.subLanguage?(()=>{if(""===M)return;let e=null +;if("string"==typeof R.subLanguage){ +if(!n[R.subLanguage])return void O.addText(M) +;e=f(R.subLanguage,M,!0,k[R.subLanguage]),k[R.subLanguage]=e.top +}else e=p(M,R.subLanguage.length?R.subLanguage:null) +;R.relevance>0&&(A+=e.relevance),O.addSublanguage(e.emitter,e.language) +})():(()=>{if(!R.keywords)return void O.addText(M);let e=0 +;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n="";for(;t;){ +n+=M.substring(e,t.index);const s=u(R,t);if(s){const[e,r]=s +;O.addText(n),n="",A+=r;const a=w.classNameAliases[e]||e;O.addKeyword(t[0],a) +}else n+=t[0];e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)} +n+=M.substr(e),O.addText(n)})(),M=""}function h(e){ +return e.className&&O.openNode(w.classNameAliases[e.className]||e.className), +R=Object.create(e,{parent:{value:R}}),R}function m(e,t,n){let r=((e,t)=>{ +const n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){ +const n=new s(e);e["on:end"](t,n),n.ignore&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,n)}function b(e){ +return 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],n=c.substr(e.index),s=m(R,e,n);if(!s)return G;const r=R +;r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),d(),r.excludeEnd&&(M=t));do{ +R.className&&O.closeNode(),R.skip||R.subLanguage||(A+=R.relevance),R=R.parent +}while(R!==s.parent) +;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe), +h(s.starts)),r.returnEnd?0:t.length}let E={};function v(t,n){const a=n&&n[0] +;if(M+=t,null==a)return d(),0 +;if("begin"===E.type&&"end"===n.type&&E.index===n.index&&""===a){ +if(M+=c.slice(n.index,n.index+1),!i){const t=Error("0 width match regex") +;throw t.languageName=e,t.badRule=E.rule,t}return 1} +if(E=n,"begin"===n.type)return function(e){ +const t=e[0],n=e.rule,r=new s(n),a=[n.__beforeBegin,n["on:begin"]] +;for(const n of a)if(n&&(n(e,r),r.ignore))return b(t) +;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")), +n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(n) +;if("illegal"===n.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(R.className||"")+'"') +;throw e.mode=R,e}if("end"===n.type){const e=x(n);if(e!==G)return e} +if("illegal"===n.type&&""===a)return 1 +;if(B>1e5&&B>3*n.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const w=_(e) +;if(!w)throw H(l.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const N=T(w,{plugins:a});let y="",R=o||N;const k={},O=new g.__emitter(g);(()=>{ +const e=[];for(let t=R;t!==w;t=t.parent)t.className&&e.unshift(t.className) +;e.forEach((e=>O.openNode(e)))})();let M="",A=0,L=0,B=0,I=!1;try{ +for(R.matcher.considerAll();;){ +B++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=L +;const e=R.matcher.exec(c);if(!e)break;const t=v(c.substring(L,e.index),e) +;L=e.index+t}return v(c.substr(L)),O.closeAllNodes(),O.finalize(),y=O.toHTML(),{ +relevance:Math.floor(A),value:y,language:e,illegal:!1,emitter:O,top:R}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{ +msg:t.message,context:c.slice(L-100,L+100),mode:t.mode},sofar:y,relevance:0, +value:z(c),emitter:O};if(i)return{illegal:!1,relevance:0,value:z(c),emitter:O, +language:e,top:R,errorRaised:t};throw t}}function p(e,t){ +t=t||g.languages||Object.keys(n);const s=(e=>{const t={relevance:0, +emitter:new g.__emitter(g),value:z(e),illegal:!1,top:u} +;return t.emitter.addText(e),t})(e),r=t.filter(_).filter(O).map((t=>f(t,e,!1))) +;r.unshift(s);const a=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(_(e.language).supersetOf===t.language)return 1 +;if(_(t.language).supersetOf===e.language)return-1}return 0})),[i,o]=a,l=i +;return l.second_best=o,l}const m={"before:highlightBlock":({block:e})=>{ +g.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")) +},"after:highlightBlock":({result:e})=>{ +g.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},b=/^(<[^>]+>|\t)+/gm,x={ +"after:highlightBlock":({result:e})=>{ +g.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\t/g,g.tabReplace))))}} +;function E(e){let t=null;const n=(e=>{let t=e.className+" " +;t+=e.parentNode?e.parentNode.className:"";const n=g.languageDetectRe.exec(t) +;if(n){const t=_(n[1]) +;return t||(U(l.replace("{}",n[1])),U("Falling back to no-highlight mode for this block.",e)), +t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>d(e)||_(e)))})(e) +;if(d(n))return;M("before:highlightBlock",{block:e,language:n}),t=e +;const s=t.textContent,a=n?h(n,s,!0):p(s);M("after:highlightBlock",{block:e, +result:a,text:s}),e.innerHTML=a.value,((e,t,n)=>{const s=t?r[t]:n +;e.classList.add("hljs"),s&&e.classList.add(s)})(e,n,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 v=()=>{ +v.called||(v.called=!0, +$("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."), +document.querySelectorAll("pre code").forEach(E))};let w=!1,N=!1;function y(){ +N?document.querySelectorAll("pre code").forEach(E):w=!0}function _(e){ +return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function k(e,{languageName:t}){ +"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e]=t}))}function O(e){const t=_(e) +;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +N=!0,w&&y()}),!1),Object.assign(e,{highlight:h,highlightAuto:p,highlightAll:y, +fixMarkup:e=>{ +return $("10.2.0","fixMarkup will be removed entirely in v11.0"),$("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"), +t=e, +g.tabReplace||g.useBR?t.replace(o,(e=>"\n"===e?g.useBR?"
":e:g.tabReplace?e.replace(/\t/g,g.tabReplace):e)):t +;var t},highlightBlock:E,configure:e=>{ +e.useBR&&($("10.3.0","'useBR' will be removed entirely in v11.0"), +$("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")), +g=K(g,e)},initHighlighting:v,initHighlightingOnLoad:()=>{ +$("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), +w=!0},registerLanguage:(t,s)=>{let r=null;try{r=s(e)}catch(e){ +if(H("Language definition for '{}' could not be registered.".replace("{}",t)), +!i)throw e;H(e),r=u} +r.name||(r.name=t),n[t]=r,r.rawDefinition=s.bind(null,e),r.aliases&&k(r.aliases,{ +languageName:t})},listLanguages:()=>Object.keys(n),getLanguage:_, +registerAliases:k,requireLanguage:e=>{ +$("10.4.0","requireLanguage will be removed entirely in v11."), +$("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844") +;const t=_(e);if(t)return t +;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))}, +autoDetection:O,inherit:K,addPlugin:e=>{a.push(e)},vuePlugin:S(e).VuePlugin +}),e.debugMode=()=>{i=!1},e.safeMode=()=>{i=!0},e.versionString="10.6.0" +;for(const e in R)"object"==typeof R[e]&&t(R[e]) +;return Object.assign(e,R),e.addPlugin(m),e.addPlugin(P),e.addPlugin(x),e})({}) +}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +hljs.registerLanguage("actionscript",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>({name:"ActionScript",aliases:["as"],keywords:{ +keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with", +literal:"true false null undefined"}, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.C_NUMBER_MODE,{ +className:"class",beginKeywords:"package",end:/\{/,contains:[n.TITLE_MODE]},{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},n.TITLE_MODE]},{className:"meta", +beginKeywords:"import include",end:/;/,keywords:{"meta-keyword":"import include" +}},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0, +illegal:/\S/,contains:[n.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/, +contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,{ +className:"rest_arg",begin:/[.]{3}/,end:/[a-zA-Z_$][a-zA-Z0-9_$]*/,relevance:10 +}]},{begin:e(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},n.METHOD_GUARD], +illegal:/#/})})()); +hljs.registerLanguage("apache",(()=>{"use strict";return e=>{const 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:/<\/?/,end:/>/, +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("xml",(()=>{"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 e=>{ +const t=a(/[A-Z_]/,a("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/, +contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},c=e.inherit(r,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"meta-string"}),g=e.inherit(e.QUOTE_STRING_MODE,{ +className:"meta-string"}),m={endsWithParent:!0,illegal:/`]+/}]}] +}]};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:[r,g,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[r,c,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0}]}]}} +})()); +hljs.registerLanguage("asciidoc",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/ +},{className:"strong", +begin:e(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/), +relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{ +className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{ +className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis", +begin:e(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/), +relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{ +className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis", +begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0 +}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"], +contains:[n.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10 +}),n.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{ +begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section", +relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{ +begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta", +begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta", +begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n", +end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n", +end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$", +contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{ +className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol", +begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{ +begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{ +begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{ +className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{ +className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code", +begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]", +end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{ +begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]", +returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{ +className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string", +begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}] +}}})()); +hljs.registerLanguage("awk",(()=>{"use strict";return e=>({name:"Awk",keywords:{ +keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10" +},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{ +begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE], +variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/, +end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{ +begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{ +begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.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" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})()); +hljs.registerLanguage("clojure",(()=>{"use strict";return e=>{ +const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={ +$pattern:n, +"builtin-name":r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize" +},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?", +relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal", +begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},m={ +className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={ +className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={ +endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n, +relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n, +end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{className:"title",begin:n, +relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)} +;return f.contains=[e.COMMENT("comment",""),b,y,h], +h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj"], +illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()); +hljs.registerLanguage("cmake",(()=>{"use strict";return e=>({name:"CMake", +aliases:["cmake.in"],case_insensitive:!0,keywords:{ +keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined" +},contains:[{className:"variable",begin:/\$\{/,end:/\}/ +},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()); +hljs.registerLanguage("cpp",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(",e,")?") +}return t=>{const n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),r="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+e(r)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",i={ +className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string", +variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n", +contains:[t.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:"."},t.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={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},t.inherit(s,{className:"meta-string"}),{ +className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n" +},n,t.C_BLOCK_COMMENT_MODE]},l={className:"title",begin:e(r)+t.IDENT_RE, +relevance:0},d=e(r)+t.IDENT_RE+"\\s*\\(",u={ +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"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={ +variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{ +beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:m.concat([{ +begin:/\(/,end:/\)/,keywords:u,contains:m.concat(["self"]),relevance:0}]), +relevance:0},_={className:"function",begin:"("+a+"[\\*&\\s]+)+"+d, +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/, +contains:[{begin:"decltype\\(auto\\)",keywords:u,relevance:0},{begin:d, +returnBegin:!0,contains:[l],relevance:0},{className:"params",begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{ +begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:["self",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}] +},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:"C++", +aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"",keywords:u,contains:["self",i]},{begin:t.IDENT_RE+"::",keywords:u},{ +className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/, +contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{ +preprocessor:c,strings:s,keywords:u}}}})()); +hljs.registerLanguage("csharp",(()=>{"use strict";return e=>{var n={ +keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), +built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","unit","ushort"], +literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{ +begin:"[a-zA-Z](\\.?\\w)*"}),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:"string",begin:'@"',end:'"',contains:[{begin:'""'}] +},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/, +keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/, +end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ +},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{ +begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, +contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) +;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], +l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ +illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +},_=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" +}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, +illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" +},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", +relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, +contains:[a,E,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:[{ +beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", +relevance:0},{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:[g,i,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()); +hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{className:"meta",begin:"!important"}, +HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/, +illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]} +}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})()); +hljs.registerLanguage("d",(()=>{"use strict";return e=>{const 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_]*)([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("diff",(()=>{"use strict";return e=>({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:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/ +},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/},{ +begin:/^diff --git/,end:/$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})()); +hljs.registerLanguage("django",(()=>{"use strict";return e=>{const t={ +begin:/\|[A-Za-z]+:?/,keywords:{ +name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone" +},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django", +aliases:["jinja"],case_insensitive:!0,subLanguage:"xml", +contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{ +className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name", +begin:/\w+/,keywords:{ +name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim" +},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{ +className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()); +hljs.registerLanguage("dockerfile",(()=>{"use strict";return e=>({ +name:"Dockerfile",aliases:["docker"],case_insensitive:!0, +keywords:"from maintainer expose env arg user onbuild stopsignal", +contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell", +starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"{"use strict";return e=>{ +const t=e.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10});return{ +name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0, +illegal:/\/\*/,keywords:{ +keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq", +built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del" +},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{ +className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)", +end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{ +begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{ +className:"number",begin:"\\b\\d+",relevance:0},t]}}})()); +hljs.registerLanguage("ducktype",(()=>{"use strict";return e=>{var a={ +endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/>>[^\]\s]+/},{ +className:"attr",begin:/(\.|#|>)?[A-Za-z0-9\._:#-]+/},{begin:/=/,relevance:0, +contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{ +begin:/'/,end:/'/},{begin:/[^\s"'\]]+/}]}]}]};return{aliases:["duck"], +contains:[{className:"section",variants:[{begin:/^=+ /,end:/$/},{begin:/^-+ /, +end:/$/}]},e.COMMENT(/^ *\[--/,/^ *--\]$/,{relevance:10 +}),e.COMMENT(/^ *\[-\]/,/$/,{relevance:10}),{className:"code", +begin:/^ *\[\[\[$/,end:/^ *\]\]\]$/,relevance:10},{className:"tag", +begin:/^ *\[/,end:/\]$/,contains:[{className:"name",begin:/[A-Za-z0-9\._:-]+/, +relevance:0},a]},{className:"tag",begin:/\$[a-zA-Z0-9][a-zA-Z0-9:]*;/},{ +className:"tag",begin:/^ *@[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]},{ +className:"tag",begin:/^ *@/,end:/$/},{className:"tag", +begin:/\$[a-zA-Z][a-zA-Z:]*\[/,end:/\]/,contains:[a]}]}}})()); +hljs.registerLanguage("ruby",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{ +const a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={ +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 __FILE__", +built_in:"proc lambda",literal:"true false nil"},s={className:"doctag", +begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},b=[n.COMMENT("#","$",{contains:[s] +}),n.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),n.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/, +keywords:i},t={className:"string",contains:[n.BACKSLASH_ESCAPE,c],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{ +begin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[n.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",d={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+n.IDENT_RE+"::)?"+n.IDENT_RE,relevance:0}]}].concat(b)},{ +className:"function",begin:e(/def\s*/,(_=a+"\\s*(\\(|;|$)",e("(?=",_,")"))), +relevance:0,keywords:"def",end:"$|;",contains:[n.inherit(n.TITLE_MODE,{begin:a +}),l].concat(b)},{begin:n.IDENT_RE+"::"},{className:"symbol", +begin:n.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},d,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{ +begin:"("+n.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[n.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,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o +;const E=[{begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:o}}];return b.unshift(r),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/, +contains:[n.SHEBANG({binary:"ruby"})].concat(E).concat(b).concat(o)}}})()); +hljs.registerLanguage("erb",(()=>{"use strict";return e=>({name:"ERB", +subLanguage:"xml",contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?", +end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()); +hljs.registerLanguage("fsharp",(()=>{"use strict";return e=>{const n={begin:"<", +end:">",contains:[e.inherit(e.TITLE_MODE,{begin:/'[a-zA-Z0-9_]+/})]};return{ +name:"F#",aliases:["fs"], +keywords:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield", +illegal:/\/\*/,contains:[{className:"keyword",begin:/\b(yield|return|let|do)!/ +},{className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},{ +className:"string",begin:'"""',end:'"""'},e.COMMENT("\\(\\*(\\s)","\\*\\)",{ +contains:["self"]}),{className:"class",beginKeywords:"type",end:"\\(|=|$", +excludeEnd:!0,contains:[e.UNDERSCORE_TITLE_MODE,n]},{className:"meta", +begin:"\\[<",end:">\\]",relevance:10},{className:"symbol", +begin:"\\B('[A-Za-z])\\b",contains:[e.BACKSLASH_ESCAPE] +},e.C_LINE_COMMENT_MODE,e.inherit(e.QUOTE_STRING_MODE,{illegal:null +}),e.C_NUMBER_MODE]}}})()); +hljs.registerLanguage("go",(()=>{"use strict";return e=>{const 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:"{"use strict";return e=>({name:"HAML", +case_insensitive:!0,contains:[{className:"meta", +begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$", +relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",!1,{relevance:0}),{ +begin:"^\\s*(-|=|!=)(?!#)",starts:{end:"\\n",subLanguage:"ruby"}},{ +className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+" +},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class", +begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>", +end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0 +}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=", +end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr", +begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+", +relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,starts:{end:/\}/, +subLanguage:"ruby"}}]})})()); +hljs.registerLanguage("haskell",(()=>{"use strict";return e=>{const 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("http",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("")}return n=>{const a="HTTP/(2|1\\.[01])",s=[{className:"attribute", +begin:e("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{ +className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]} +},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{ +name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})", +end:/$/,contains:[{className:"meta",begin:a},{className:"number", +begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:s}},{ +begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string", +begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{ +className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:s} +}]}}})()); +hljs.registerLanguage("ini",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}return s=>{const a={className:"number", +relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:s.NUMBER_RE}] +},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const 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:[s.BACKSLASH_ESCAPE],variants:[{begin:"'''", +end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"' +},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,a,"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,a]}}]}}})()); +hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{ +var n="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",s={ +className:"meta",begin:"@[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*", +contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const r=a;return{ +name:"Java",aliases:["jsp"],keywords:n,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +className:"class",beginKeywords:"class interface enum",end:/[{;=]/, +excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{className:"class", +begin:"record\\s+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0, +end:/[{;=]/,keywords:n,contains:[{beginKeywords:"record"},{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"function", +begin:"([\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(<[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(", +returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/, +keywords:n,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})()); +hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["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"],a=["true","false","null","undefined","NaN","Infinity"],s=[].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 r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{ +const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a] +;"<"!==s?">"===s&&(((e,{after:n})=>{const a="", +returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{ +begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0 +},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}] +},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{ +variants:[{begin:"<>",end:""},{begin:o.begin,"on:begin":o.isTrulyOpeningTag, +end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0, +contains:["self"]}]}],relevance:0},{className:"function", +beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l, +contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{ +beginKeywords:"while if switch catch for"},{className:"function", +begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{ +begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class", +beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{ +beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/, +end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p] +},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set", +contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}] +}}})()); +hljs.registerLanguage("json",(()=>{"use strict";return n=>{const e={ +literal:"true false null" +},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={ +end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\{/, +end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/, +contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(l,{begin:/:/ +})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(l)], +illegal:"\\S"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:"JSON", +contains:a,keywords:e,illegal:"\\S"}}})()); +hljs.registerLanguage("latex",(()=>{"use strict";return e=>{const n=[{ +begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/ +},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{ +begin:/\^{2}[\u0000-\u007f]/}],a=[{className:"keyword",begin:/\\/,relevance:0, +contains:[{endsParent:!0,begin:((...e)=>"("+e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n +})).join("|")+")")(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])"))) +},{endsParent:!0, +begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|")) +},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{ +begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0, +begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{ +className:"meta",begin:"% !TeX",end:"$",relevance:10},e.COMMENT("%","$",{ +relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,contains:["self",...a] +},t=e.inherit(i,{relevance:0,endsParent:!0,contains:[i,...a]}),r={begin:/\[/, +end:/\]/,endsParent:!0,relevance:0,contains:[i,...a]},s={begin:/\s+/,relevance:0 +},c=[t],l=[r],o=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n} +}),d=(e,n)=>({begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/, +keyword:"\\"+e},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({ +begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{ +$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0 +},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/, +end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({ +className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0, +begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/, +endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]} +});return{name:"LaTeX",aliases:["TeX"], +contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{ +contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{ +contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")] +}),d("href",o(l,{contains:[p("link")] +})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a] +}}})()); +hljs.registerLanguage("lisp",(()=>{"use strict";return e=>{ +var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})()); +hljs.registerLanguage("lua",(()=>{"use strict";return e=>{ +const t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"] +},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n], +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:o.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:o}].concat(o) +},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", +begin:t,end:a,contains:[n],relevance:5}])}}})()); +hljs.registerLanguage("makefile",(()=>{"use strict";return e=>{const i={ +className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", +contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +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:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()); +hljs.registerLanguage("matlab",(()=>{"use strict";return e=>{var a={relevance:0, +contains:[{begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{ +keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while", +built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell " +},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function", +beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{ +className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}] +},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{ +begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number", +begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'", +contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0, +starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{ +begin:'""'}],starts:a +},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()); +hljs.registerLanguage("nginx",(()=>{"use strict";return e=>{const 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",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:"@interface @class @protocol @implementation"};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-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",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(...n){ +return n.map((n=>e(n))).join("")}function t(...n){ +return"("+n.map((n=>e(n))).join("|")+")"}return e=>{ +const r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},o={variants:[{begin:/\$\d/},{ +begin:n(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@][^\s\w{]/,relevance:0}] +},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,s="\\1")=>{ +const i="\\1"===s?s:n(s,t) +;return n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,r) +},d=(e,t,s)=>n(n("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:c,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+\}/,relevance:0},{ +begin:"-?\\w+\\s*=>",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",variants:[{ +begin:l("s|tr|y",t(...g))},{begin:l("s|tr|y","\\(","\\)")},{ +begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{ +className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ +begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",t(...g),/\1/)},{ +begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ +begin:d("m|qr",/\{/,/\}/)}]}]},{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 i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:s, +contains:p}}})()); +hljs.registerLanguage("php",(()=>{"use strict";return e=>{const r={ +className:"variable", +begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={ +className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{ +begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/, +end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null +}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({ +begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, +contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string", +contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'" +}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={ +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},s={ +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 match|0 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","php8"], +case_insensitive:!0,keywords:s, +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"}),t,{className:"keyword",begin:/\$this\b/},r,{ +begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function", +relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0, +illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{begin:"=>"},{ +className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0, +keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class", +beginKeywords:"class interface",relevance:0,end:/\{/,excludeEnd:!0, +illegal:/[:($"]/,contains:[{beginKeywords:"extends implements" +},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";", +illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use", +relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}})()); +hljs.registerLanguage("python",(()=>{"use strict";return e=>{const n={ +keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"], +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"]},a={ +className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, +end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},r={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},t="[0-9](_?[0-9])*",l=`(\\b(${t}))?\\.(${t})|\\b(${t})\\.`,b={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${t})|(${l}))[eE][+-]?(${t})[jJ]?\\b`},{begin:`(${l})[jJ]?`},{ +begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{ +begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{ +begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${t})[jJ]\\b`}]},o={ +className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{ +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n, +contains:["self",a,b,r,e.HASH_COMMENT_MODE]}]};return s.contains=[r,b,a],{ +name:"Python",aliases:["py","gyp","ipython"],keywords:n, +illegal:/(<\/|->|\?)|=>/,contains:[a,b,{begin:/\bself\b/},{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,o,{begin:/->/, +endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/, +end:/(?=#)|$/,contains:[b,o,r]},{begin:/\b(print|exec)\(/}]}}})()); +hljs.registerLanguage("r",(()=>{"use strict";function e(...e){return e.map((e=>{ +return(a=e)?"string"==typeof a?a:a.source:null;var a})).join("")}return a=>{ +const n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;return{name:"R", +illegal:/->/,keywords:{$pattern:n, +keyword:"function if in break next repeat else for while", +literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", +built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" +},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return +;if(a.starts)throw Error("beforeMatch cannot be used with starts") +;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e] +})),a.begin=e(i.beforeMatch,e("(?=",i.begin,")")),a.starts={relevance:0, +contains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch +}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:"doctag", +begin:"@examples",starts:{contains:[{begin:/\n/},{begin:/#'\s*(?=@[a-zA-Z]+)/, +endsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:"doctag", +begin:"@param",end:/$/,contains:[{className:"variable",variants:[{begin:n},{ +begin:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{className:"doctag", +begin:/@[a-zA-Z]+/},{className:"meta-keyword",begin:/\\[a-zA-Z]+/}] +}),a.HASH_COMMENT_MODE,{className:"string",contains:[a.BACKSLASH_ESCAPE], +variants:[a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ +}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', +relevance:0},{begin:"'",end:"'",relevance:0}]},{className:"number",relevance:0, +beforeMatch:/([^a-zA-Z0-9._])/,variants:[{ +match:/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/},{ +match:/0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/},{ +match:/(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/}]},{begin:"%",end:"%"},{ +begin:e(/[a-zA-Z][a-zA-Z_0-9]*/,"\\s+<-\\s+")},{begin:"`",end:"`",contains:[{ +begin:/\\./}]}]}}})()); +hljs.registerLanguage("rust",(()=>{"use strict";return e=>{ +const 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("scala",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}] +},a={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"', +illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{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:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +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("scheme",(()=>{"use strict";return e=>{ +const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t, +"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?" +},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={ +className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{ +begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{ +begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{ +begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{ +relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={ +className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{ +begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)", +contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t, +keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}], +contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{ +endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}], +contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{ +name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()); +hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console"],contains:[{className:"meta", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})()); +hljs.registerLanguage("smalltalk",(()=>{"use strict";return e=>{ +const n="[a-z][a-zA-Z0-9_]*",a={className:"string",begin:"\\$.{1}"},s={ +className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk", +aliases:["st"],keywords:"self super nil true false thisContext", +contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type", +begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0 +},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0, +end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(", +end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()); +hljs.registerLanguage("sml",(()=>{"use strict";return e=>({ +name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while", +built_in:"array bool char exn int list option order real ref string substring vector unit word", +literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/, +contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0 +},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol", +begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{ +className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{ +begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string", +relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/[-=]>/}]})})()); +hljs.registerLanguage("sql",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function r(...r){ +return r.map((r=>e(r))).join("")}function t(...r){ +return"("+r.map((r=>e(r))).join("|")+")"}return e=>{ +const n=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],o=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],c=s,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update ","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!s.includes(e))),u={ +begin:r(/\b/,t(...c),/\s*\(/),keywords:{built_in:c}};return{name:"SQL", +case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/, +keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(l,{when:e=>e.length<3}),literal:a,type:i, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:t(...o),keywords:{$pattern:/[\w\.]+/,keyword:l.concat(o), +literal:a,type:i}},{className:"type", +begin:t("double precision","large object","with timezone","without timezone") +},u,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()); +hljs.registerLanguage("tcl",(()=>{"use strict";return e=>({name:"Tcl", +aliases:["tk"], +keywords:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while", +contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{ +beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title", +begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]", +endsWithParent:!0,excludeEnd:!0}]},{excludeEnd:!0,variants:[{ +begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)", +end:"[^a-zA-Z0-9_\\}\\$]"},{begin:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*", +end:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{className:"string", +contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null})]},{className:"number", +variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]}]})})()); +hljs.registerLanguage("vala",(()=>{"use strict";return e=>({name:"Vala", +keywords:{ +keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var", +built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"}, +contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/, +excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""', +end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{ +className:"meta",begin:"^#",end:"$",relevance:2}]})})()); +hljs.registerLanguage("xquery",(()=>{"use strict";return e=>({name:"XQuery", +aliases:["xpath","xq"],case_insensitive:!1, +illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{ +$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/, +keyword:"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update", +type:"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration", +literal:"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN" +},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in", +variants:[{begin:/\barray:/, +end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/ +},{begin:/\bmap:/, +end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{ +begin:/\bmath:/, +end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/ +},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0 +},{ +begin:/[^/, +end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/, +subLanguage:"xquery"},"self"]}]})})()); +hljs.registerLanguage("yaml",(()=>{"use strict";return 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,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:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\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",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml","YAML"],contains:b}}})()); \ No newline at end of file diff --git a/docs/html/zh_CN/import-export.html b/docs/html/zh_CN/import-export.html new file mode 100644 index 000000000..f07e27867 --- /dev/null +++ b/docs/html/zh_CN/import-export.html @@ -0,0 +1,158 @@ + + + + + +Import/Export + + + +
+

Import/Export

+
+
+
+

Import Formats

+
    +
  • +

    Open Financial Exchange (.ofx)

    +

    Dates should be in YYYYMMDD format.

    +
  • +
  • +

    Quicken Interchange Format (.qif)

    +

    Dates should be in English (US) format (MM/DD/YYYY).

    +
  • +
  • +

    Denaro CSV (.csv)

    +

    ❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

    +

    ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

    +
      +
    • +

      ID

      +

      Transaction Id, should be unique for a given account. Ids start with 1.

      +
    • +
    • +

      Date

      +

      Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

      +
    • +
    • +

      Description

      +

      Transaction description, it can contain any characters except semicolon.

      +
    • +
    • +

      Type

      +

      Transaction type: 0 for income, 1 for expense.

      +
    • +
    • +

      RepeatInterval

      +

      A number representing transaction repeat interval:

      +

      0 - Never

      +

      1 - Daily

      +

      2 - Weekly

      +

      7 - Biweekly

      +

      3 - Monthly

      +

      4 - Quarterly

      +

      5 - Yearly

      +

      6 - Biyearly

      +

      See Repeat Interval in transaction page for details about repeat transactions.

      +
    • +
    • +

      RepeatFrom

      +

      Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

      +
    • +
    • +

      RepeatEndDate

      +

      End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

      +
    • +
    • +

      Amount

      +

      Transaction amount in English (US) format (123,456.78).

      +
    • +
    • +

      RGBA

      +

      Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    • +

      UseGroupColor

      +

      Whether a transaction should use group color: 0 — false, 1 — true.

      +
    • +
    • +

      Group

      +

      Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

      +
    • +
    • +

      GroupName

      +

      Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

      +
    • +
    • +

      GroupDescription

      +

      Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

      +
    • +
    • +

      GroupRGBA

      +

      Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

      +
    • +
    +

    Receipt and notes are not present in CSV.

    +
  • +
+
+
+

Export Formats

+
+

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+
    +
  • +

    Portable Document Format (.pdf)

    +

    A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

    +
  • +
  • Denaro CSV (.csv)

  • +
+
+
+
+ +
+
+
+ diff --git a/docs/html/zh_CN/index.html b/docs/html/zh_CN/index.html new file mode 100644 index 000000000..0937aa28f --- /dev/null +++ b/docs/html/zh_CN/index.html @@ -0,0 +1,58 @@ + + + + + +Denaro Help + + + +
+
+
+ diff --git a/docs/html/zh_CN/transaction.html b/docs/html/zh_CN/transaction.html new file mode 100644 index 000000000..0f4aee298 --- /dev/null +++ b/docs/html/zh_CN/transaction.html @@ -0,0 +1,86 @@ + + + + + +交易 + + + +
+

交易

+
+
+

This page explains all properties of transactions in Denaro.

+
+
ID
+

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
描述
+

No limit on length. It can't contain semicolon.

+
金额
+

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
类型
+

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
日期
+

Any date can be selected, you can also create transactions for future dates.

+
重复间隔
+

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
重复结束日期
+

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
群组
+

Each transaction can belong to only one group or none («Ungrouped» group).

+
顏色
+

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
标签
+

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
收据
+

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
注释
+

A freeform text note to attach to transaction.

+
+
+ +
+
+
+ diff --git a/docs/html/zh_CN/transfer.html b/docs/html/zh_CN/transfer.html new file mode 100644 index 000000000..d30eb545b --- /dev/null +++ b/docs/html/zh_CN/transfer.html @@ -0,0 +1,67 @@ + + + + + +Transfer + + + +
+

Transfer

+
+
+

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+
    +
  • «Transfer to Destination Account Name» on source account.

  • +
  • «Transfer from Source Account Name» on destination account.

  • +
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
+ +
+
+
+ diff --git a/docs/html/zh_CN/yelp.js b/docs/html/zh_CN/yelp.js new file mode 100644 index 000000000..141244fcf --- /dev/null +++ b/docs/html/zh_CN/yelp.js @@ -0,0 +1,450 @@ + +document.addEventListener('DOMContentLoaded', function() { + var yelp_hash_highlight = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + sect.classList.add('yelp-hash-highlight'); + window.setTimeout(function () { + sect.classList.remove('yelp-hash-highlight'); + }, 500); + } + } + } + window.addEventListener('hashchange', yelp_hash_highlight, false); + yelp_hash_highlight(); +}, false); + +var __yelp_generate_id_counter__ = 0; +function yelp_generate_id () { + var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString(); + if (document.getElementById(ret) != null) + return yelp_generate_id(); + else + return ret; +}; +function yelp_ui_expander_init (expander) { + var yelpdata = null; + var innerdiv = null; + var region = null; + var contents = null; + var title = null; + var title_e = null; + var title_c = null; + var titlespan = null; + var issect = false; + for (var i = 0; i < expander.children.length; i++) { + var child = expander.children[i]; + if (child.classList.contains('yelp-data-ui-expander')) { + yelpdata = child; + } + else if (child.classList.contains('inner')) { + innerdiv = child; + } + } + if (innerdiv == null) { + return; + } + for (var i = 0; i < innerdiv.children.length; i++) { + var child = innerdiv.children[i]; + if (child.classList.contains('region')) { + region = child; + } + else if (child.classList.contains('title')) { + title = child; + } + else if (child.classList.contains('hgroup')) { + title = child; + issect = true; + } + } + if (region == null || title == null) { + return; + } + if (!region.hasAttribute('id')) { + region.setAttribute('id', yelp_generate_id()); + } + title.setAttribute('aria-controls', region.getAttribute('id')); + + if (yelpdata != null) { + for (var i = 0; i < yelpdata.children.length; i++) { + var child = yelpdata.children[i]; + if (child.classList.contains('yelp-title-expanded')) { + title_e = child; + } + else if (child.classList.contains('yelp-title-collapsed')) { + title_c = child; + } + } + } + titlespan = title.querySelector('span.title'); + if (titlespan == null) { + return; + } + if (title_e == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-expanded'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_e = node; + } + if (title_c == null) { + var node = document.createElement('div'); + node.className = 'yelp-title-collapsed'; + node.innerHTML = titlespan.innerHTML; + yelpdata.appendChild(node); + title_c = node; + } + + var ui_expander_zoom_region = function (event) { + if (yelpdata.getAttribute('data-yelp-expanded') != 'false') { + ui_expander_toggle(); + event.preventDefault(); + } + } + if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') { + for (var i = 0; i < region.children.length; i++) { + var child = region.children[i]; + if (child.classList.contains('contents')) { + contents = child; + break; + } + } + contents.addEventListener('click', ui_expander_zoom_region, true); + } + else { + region.addEventListener('click', ui_expander_zoom_region, true); + } + + var ui_expander_toggle = function () { + if (yelpdata.getAttribute('data-yelp-expanded') == 'false') { + yelpdata.setAttribute('data-yelp-expanded', 'true'); + expander.classList.remove('ui-expander-e'); + expander.classList.add('ui-expander-c'); + region.setAttribute('aria-expanded', 'false'); + if (title_c != null) + titlespan.innerHTML = title_c.innerHTML; + } + else { + yelpdata.setAttribute('data-yelp-expanded', 'false'); + expander.classList.remove('ui-expander-c'); + expander.classList.add('ui-expander-e'); + region.setAttribute('aria-expanded', 'true'); + if (title_e != null) + titlespan.innerHTML = title_e.innerHTML; + } + }; + expander.yelp_ui_expander_toggle = ui_expander_toggle; + title.addEventListener('click', ui_expander_toggle, false); + ui_expander_toggle(); +} +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('.ui-expander'); + for (var i = 0; i < matches.length; i++) { + yelp_ui_expander_init(matches[i]); + } + var yelp_hash_ui_expand = function () { + if (location.hash != '') { + var sect = document.querySelector(location.hash); + if (sect != null) { + for (var cur = sect; cur instanceof Element; cur = cur.parentNode) { + if (cur.classList.contains('ui-expander')) { + if (cur.classList.contains('ui-expander-c')) { + cur.yelp_ui_expander_toggle(); + } + } + } + sect.scrollIntoView(); + } + } + }; + window.addEventListener('hashchange', yelp_hash_ui_expand, false); + yelp_hash_ui_expand(); +}, false); + +yelp_color_text_light = 'rgb(75,75,73)'; +yelp_color_gray_background = 'rgb(244,244,244)'; +yelp_color_gray_border = '#c0bfbc'; +function yelp_figure_init (figure) { + var zoom = figure.querySelector('a.figure-zoom'); + + var figure_resize = function () { + var zoomed = zoom.classList.contains('figure-zoomed'); + var imgs = figure.querySelectorAll('img'); + for (var i = 0; i < imgs.length; i++) { + var img = imgs[i]; + var mediaDiv = null; + for (var cur = img; cur instanceof Element; cur = cur.parentNode) { + if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') && + cur.classList.contains('media')) { + mediaDiv = cur; + break; + } + } + if (mediaDiv == null) + continue; + if (!img.hasAttribute('data-yelp-original-width')) { + var iwidth = null; + if (img.hasAttribute('width')) + iwidth = parseInt(img.getAttribute('width')); + else + iwidth = img.width; + img.setAttribute('data-yelp-original-width', iwidth); + var iheight = null; + if (img.hasAttribute('height')) + iheight = parseInt(img.getAttribute('height')); + else + iheight = img.height * (iwidth / img.width); + img.setAttribute('data-yelp-original-height', iheight); + } + var owidth = img.width; + var oheight = img.height; + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + var mediaw = mediaDiv.offsetWidth; + img.width = owidth; + img.height = oheight; + if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'none'; + } + else if (zoomed) { + img.width = parseInt(img.getAttribute('data-yelp-original-width')); + img.height = parseInt(img.getAttribute('data-yelp-original-height')); + zoom.style.display = 'block'; + } + else { + img.width = mediaw; + img.height = (parseInt(img.getAttribute('data-yelp-original-height')) * + img.width / + parseInt(img.getAttribute('data-yelp-original-width'))); + zoom.style.display = 'block'; + } + } + } + figure.yelp_figure_resize = figure_resize; + figure.yelp_figure_resize(); + + zoom.onclick = function (e) { + var zoomed = zoom.classList.contains('figure-zoomed'); + if (zoomed) + zoom.classList.remove('figure-zoomed'); + else + zoom.classList.add('figure-zoomed'); + figure.yelp_figure_resize(); + return false; + }; +} +window.addEventListener('load', function() { + var figures = document.querySelectorAll('div.figure'); + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + yelp_figure_init(figures[i]); + } + var timeout = null; + var yelp_figures_resize = function () { + if (timeout != null) + return; + timeout = window.setTimeout(function () { + for (var i = 0; i < figures.length; i++) { + if (figures[i].querySelector('img') != null) + figures[i].yelp_figure_resize(); + } + window.clearTimeout(timeout); + timeout = null; + }, 100); + }; + window.addEventListener('resize', yelp_figures_resize, false); +}, false); +function yelp_media_init (media) { + media.removeAttribute('controls'); + if (media.parentNode.classList.contains('links-tile-img')) { + return; + } + + media.addEventListener('click', function () { + if (media.paused) + media.play(); + else + media.pause(); + }, false); + + var controls = null; + for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) { + if (cur.classList.contains('media-controls')) { + controls = cur; + break; + } + } + if (controls == null) { + media.setAttribute('controls', 'controls'); + return; + } + var playbutton = controls.querySelector('button.media-play'); + playbutton.addEventListener('click', function () { + if (media.paused || media.ended) + media.play(); + else + media.pause(); + }, false); + + var mediachange = function () { + if (media.ended) + media.pause() + if (media.paused) { + playbutton.setAttribute('value', playbutton.getAttribute('data-play-label')); + playbutton.classList.remove('media-play-playing'); + } + else { + playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label')); + playbutton.classList.add('media-play-playing'); + } + } + media.addEventListener('play', mediachange, false); + media.addEventListener('pause', mediachange, false); + media.addEventListener('ended', mediachange, false); + + var mediarange = controls.querySelector('input.media-range'); + mediarange.addEventListener('input', function () { + var pct = this.value; + if (pct < 0) + pct = 0; + if (pct > 100) + pct = 100; + media.currentTime = (pct / 100.0) * media.duration; + }, false); + var curspan = controls.querySelector('span.media-current'); + var durspan = controls.querySelector('span.media-duration'); + var durationUpdate = function () { + if (!isNaN(media.duration)) { + mins = parseInt(media.duration / 60); + secs = parseInt(media.duration - (60 * mins)); + durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + } + }; + media.addEventListener('durationchange', durationUpdate, false); + + var ttmlDiv = null; + var ttmlNodes = null; + for (var i = 0; i < media.parentNode.children.length; i++) { + var child = media.parentNode.children[i]; + if (child.classList.contains('media-ttml')) + ttmlDiv = child; + } + if (ttmlDiv != null) { + ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node'); + } + + var timeUpdate = function () { + var pct = (media.currentTime / media.duration) * 100; + mediarange.value = pct; + var mins = parseInt(media.currentTime / 60); + var secs = parseInt(media.currentTime - (60 * mins)) + curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs); + if (ttmlNodes != null) { + for (var i = 0; i < ttmlNodes.length; i++) { + var ttml = ttmlNodes[i]; + if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) && + (!ttml.hasAttribute('data-ttml-end') || + media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) { + if (ttml.tagName == 'span' || ttml.tagName == 'SPAN') + ttml.style.display = 'inline'; + else + ttml.style.display = 'block'; + } + else { + ttml.style.display = 'none'; + } + } + } + }; + media.addEventListener('timeupdate', timeUpdate, false); +}; +document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('video, audio'); + for (var i = 0; i < matches.length; i++) { + yelp_media_init(matches[i]); + } +}, false); + +document.addEventListener('DOMContentLoaded', function() { + var tiles = document.querySelectorAll('div.links-tile'); + for (var i = 0; i < tiles.length; i++) { + (function (tile) { + if (!tile.parentNode.classList.contains('links-tiles') && + (tile.nextElementSibling && + tile.nextElementSibling.classList.contains('links-tile')) && + !(tile.previousElementSibling && + tile.previousElementSibling.classList.contains('links-tile'))) { + var tilesdiv = document.createElement('div'); + tilesdiv.className = 'links-tiles'; + tile.parentNode.insertBefore(tilesdiv, tile); + var cur = tile; + while (cur && cur.classList.contains('links-tile')) { + var curcur = cur; + cur = cur.nextElementSibling; + tilesdiv.appendChild(curcur); + } + for (j = 0; j < 2; j++) { + var paddiv = document.createElement('div'); + paddiv.className = 'links-tile'; + tilesdiv.appendChild(paddiv); + } + } + })(tiles[i]); + } +}); +document.addEventListener('DOMContentLoaded', function() { + var overlays = document.querySelectorAll('a.ui-overlay'); + for (var i = 0; i < overlays.length; i++) { + (function (ovlink) { + var overlay = ovlink.parentNode.querySelector('div.ui-overlay'); + var ui_overlay_show = function (ev) { + overlay.style.display = 'block'; + overlay.classList.add('ui-overlay-show'); + var screen = document.querySelector('div.ui-overlay-screen'); + if (screen == null) { + screen = document.createElement('div'); + screen.className = 'ui-overlay-screen'; + document.body.appendChild(screen); + } + var inner = overlay.querySelector('div.inner'); + var close = inner.querySelector('a.ui-overlay-close'); + var media = inner.querySelectorAll('audio, video'); + + var overlay_play_func = function () { + for (var j = 0; j < media.length; j++) { + media[j].play(); + } + }; + var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000); + + var ui_overlay_funcs = {}; + ui_overlay_funcs['hide'] = function () { + overlay.style.display = 'none'; + document.body.removeChild(screen); + document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false); + for (var j = 0; j < media.length; j++) { + media[j].pause(); + } + window.clearTimeout(overlay_play_timeout); + }; + ui_overlay_funcs['hideclick'] = function (uiev) { + ui_overlay_funcs['hide'](); + uiev.preventDefault(); + }; + ui_overlay_funcs['keydown'] = function (uiev) { + if (uiev.keyCode == 27) { + ui_overlay_funcs['hide'](); + } + }; + screen.addEventListener('click', ui_overlay_funcs['hideclick'], false); + close.addEventListener('click', ui_overlay_funcs['hideclick'], false); + document.addEventListener('keydown', ui_overlay_funcs['keydown'], false); + ev.preventDefault(); + }; + ovlink.addEventListener('click', ui_overlay_show, false); + })(overlays[i]); + } +}); diff --git a/docs/html/zh_CN/zh-CN.css b/docs/html/zh_CN/zh-CN.css new file mode 100644 index 000000000..767847fe7 --- /dev/null +++ b/docs/html/zh_CN/zh-CN.css @@ -0,0 +1,1457 @@ + +html { height: 100%; } +body { + font-family: sans-serif; + margin: 0; padding: 0; + background-color: #ffffff; + color: #000000; + direction: ltr; +} +article, aside, nav, header, footer, section { + display: block; + margin: 0; + padding: 0; +} +main { + display: flex; + flex-flow: row; +} +main > * { + flex: 0 0 220px; +} +main > div.page { + flex-grow: 1; + margin: 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + min-height: 100vh; +} +div.page > article { flex: 1 0 auto; } +div.page > header, div.page > footer { flex: 0 1 auto; } +.pagewide { + max-width: 1060px; + margin-left: auto; + margin-right: auto; + padding-left: 10px; + padding-right: 10px; +} +aside.sidebar { + width: 300px; + padding: 20px 10px; + background: rgb(244,244,244) +} +@media only screen and (max-width: 720px) { + aside.sidebar { + display: none; + } +} +aside.sidebar-right { order: 3; } +aside.sidebar section { margin-top: 0; } +aside.sidebar * { margin-bottom: 20px; } +aside.sidebar section > div.inner > div.hgroup { + border-bottom: none; +} +aside.sidebar section h2 { + font-size: 1em; + margin-bottom: 0; +} +article { + padding-top: 10px; + padding-bottom: 10px; + min-height: 20em; + background-color: #ffffff; +} +section { + margin-top: 2.4em; + clear: both; +} +section section { + margin-top: 1.44em; +} +.yelp-hash-highlight { + animation-name: yelp-hash-highlight; + animation-duration: 0.5s; + animation-fill-mode: forwards; +} +@keyframes yelp-hash-highlight { + from { transform: translateY(0px) } + 25% { transform: translateY(20px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(10px); } + to { transform: translateY(0px); } +} +div.trails { + margin: 0 -10px 0 -10px; + padding: 0.2em 10px; + background-color: rgb(244,244,244); +} +div.trail { + margin: 0.2em 0; + padding: 0 1em 0 1em; + text-indent: -1em; + color: rgb(75,75,73); +} +a.trail { white-space: nowrap; } +div.hgroup { + margin-bottom: 0.5em; + color: rgb(75,75,73); +} +section > div.inner > div.hgroup { + margin-top: 0; + border-bottom: solid 1px #c0bfbc; +} +section.links > div.inner > div.hgroup { + border-bottom: solid 2px rgb(43,107,185); +} +section section.links > div.inner > div.hgroup { + border: none; +} +h1, h2, h3, h4, h5, h6, h7 { + margin: 0; padding: 0; + font-weight: normal; +} +h1 { font-size: 2.4em; } +h2 { font-size: 1.72em; } +h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.44em; } +h3, h4, h5, h6, h7 { font-size: 1em; } +p { line-height: 1.44em; } +div, pre, p { margin: 0; padding: 0; } +div.contents > * + *, +th > * + *, td > * + *, +dt > * + *, dd > * + *, +li > * + * { margin-top: 1em; } +p img { vertical-align: middle; } +p.lead { font-size: 1.2em; } +div.clear { + margin: 0; padding: 0; + height: 0; line-height: 0; + clear: both; +} +.center { text-align: center; } + +footer { background: #ddd; } +footer div.about { + max-width: 700px; + margin: 0 auto; +} +footer div.about > div.inner > div.hgroup { + margin: 0; padding: 0; + text-align: center; + border: none; +} +footer div.about > div.inner > div.hgroup > h2 { + margin: 0; padding: 0.2em; + font-size: inherit; +} +footer div.about.ui-expander > div.inner > div.hgroup span.title:before { + content: ""; +} +div.copyrights { text-align: center; } +div.copyright { margin: 0; } +div.credits { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + margin: 0 -10px; +} +div.credits > * { + vertical-align: top; + text-align: left; + flex: 1 0 300px; + padding: 10px; +} +div.credits > *:empty { padding: 0; height: 0; } +ul.credits, ul.credits li { + margin: 0; padding: 0; + list-style-type: none; +} +ul.credits li { + margin-left: 1em; + text-indent: -1em; +} +div.license { + padding-bottom: 10px; +} + +table { + border-collapse: collapse; + border-color: #c0bfbc; + border-width: 1px; +} +td, th { + padding: 0.5em; + vertical-align: top; + border-color: #c0bfbc; + border-width: 1px; +} +thead td, thead th, tfoot td, tfoot th { + font-weight: bold; + color: rgb(75,75,73); + background-color: rgb(234,234,233); +} +th { + text-align: left; + font-weight: bold; + color: rgb(75,75,73); +} + +ul, ol, dl { margin: 0; padding: 0; } +li { + margin: 1em 0 0 0; + margin-left: 2.4em; + padding: 0; +} +li:first-child { margin-top: 0; } +@media (max-width: 480px) { + li { + margin-left: 1.44em; + } +} +dt { margin-top: 1em; } +dt:first-child { margin-top: 0; } +dt + dt { margin-top: 0; } +dd { + margin: 0.2em 0 0 0; + margin-left: 1.44em; +} +dd + dd { margin-top: 1em; } +ol.compact li { margin-top: 0.2em; } +ul.compact li { margin-top: 0.2em; } +ol.compact li:first-child { margin-top: 0; } +ul.compact li:first-child { margin-top: 0; } +dl.compact dt { margin-top: 0.2em; } +dl.compact dt:first-child { margin-top: 0; } +dl.compact dt + dt { margin-top: 0; } + +div.tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.tiles > * { + vertical-align: top; + margin: 0; + padding: 10px; + max-width: none; +} +div.tiles > *:empty { padding: 0 10px; height: 0; } +div.tile4 { flex: 1 0 250px; } +div.tile3 { flex: 1 0 340px; } +div.tile2 { flex: 1 0 520px; } +div.tile1 { flex: 1 0 1060px; } + +a { + text-decoration: none; + color: rgb(43,107,185); +} +a:visited { color: rgb(147,64,167); } +a:hover { + border-bottom: dotted 1px rgb(43,107,185); +} +p a { + border-bottom: dotted 1px rgb(43,107,185); +} +a img { border: none; } + +.yelp-svg-fill { + fill: rgb(75,75,73); +} +.yelp-svg-stroke { + stroke: rgb(75,75,73); +} +div.title { + margin: 0 0 0.2em 0; + font-weight: bold; + color: rgb(75,75,73); +} +div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 { + margin: 0; + font-size: inherit; + font-weight: inherit; + color: inherit; +} +div.desc { margin: 0 0 0.2em 0; } +div.contents + div.desc { margin: 0.2em 0 0 0; } +pre.contents { + padding: 0.5em 1em 0.5em 1em; +} +div.links-center { text-align: center; } +div.links .desc { color: rgb(102,102,100); } +div.links > div.inner > div.region > div.desc { font-style: italic; } +div.links ul { margin: 0; padding: 0; } +div.links ul ul { + margin-left: 1em; +} +li.links { + margin: 0.5em 0 0.5em 0; + padding: 0; + list-style-type: none; +} +li.links-head { + margin-top: 1em; + color: rgb(102,102,100); + border-bottom: solid 1px #c0bfbc; +} +div.sectionlinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.sectionlinks ul { margin: 0; } +div.sectionlinks li { padding: 0; } +div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; } +div.sectionlinks div.sectionlinks { + display: block; + margin: 0.5em 0 0 0; + padding: 0; + border: none; +} +div.sectionlinks div.sectionlinks li { + padding-left: 1.44em; +} +nav.prevnext { clear: both; } +div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; } +nav.prevnext > div.inner { float: right; } +nav.prevnext > div.inner > * { + background-color: rgb(244,244,244); + display: inline-block; + position: relative; + height: 1.44em; + padding: 0.2em 0.83em 0 0.83em; + margin-bottom: 1em; + border: solid 1px #c0bfbc; +} +nav.prevnext > div.inner > span { visibility: hidden; } +nav.prevnext > div.inner > a + a { + border-left: none; +} +nav.prevnext > div.inner > a:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +nav.prevnext > div.inner > a:last-of-type { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +div.serieslinks { + display: inline-block; + padding: 0 1em 0 1em; + background-color: rgb(241,246,253); + border: solid 1px rgb(43,107,185); +} +div.serieslinks ul { margin: 0; } +div.serieslinks li { padding: 0; } +div.serieslinks div.title { margin: 0.5em 0 0.5em 0; } +pre.numbered { + margin: 0; + padding: 0.5em; + float: left; + margin-right: 0.5em; + text-align: right; + color: rgb(102,102,100); + background-color: rgb(253,251,233); +} +div.code { + border: solid 1px #c0bfbc; +} +div.example { + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +div.example > div.inner > div.region > div.desc { font-style: italic; } +div.figure { + display: inline-block; + max-width: 100%; + margin-left: 1.72em; +} +div.figure > div.inner { + padding: 4px; + color: rgb(75,75,73); + border: solid 1px #c0bfbc; + background-color: rgb(244,244,244); +} +@media (max-width: 960px) { + div.figure { + margin-left: 0; + } +} +a.figure-zoom { + float: right; +} +a.figure-zoom:hover { border-bottom: none; } +a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; } +a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; } +a.figure-zoom .figure-zoom-out { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; } +a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; } +div.figure > div.inner > div.region > div.contents { + margin: 0; + padding: 0.5em 1em 0.5em 1em; + clear: both; + text-align: center; + color: #000000; + border: solid 1px #c0bfbc; + background-color: #ffffff; +} +div.list > div.inner > div.title { margin-bottom: 0.5em; } +div.listing > div.inner { margin: 0; padding: 0; } +div.listing > div.inner > div.region > div.desc { font-style: italic; } +div.note { + padding: 10px 0; + border: solid 1px rgb(234,234,233); + background-color: rgb(244,244,244); + display: flex; + flex-flow: row; +} +div.note > * { margin: 0 10px; padding: 0; min-height: 24px; min-width: 24px; } +div.note-warning > svg .yelp-svg-fill { + fill: #c01c28; +} +div.note-danger { + border-color: #c01c28; +} +div.note-important > svg .yelp-svg-fill { + fill: #3584e4; +} +div.note-danger > svg .yelp-svg-fill { + fill: #c01c28; + animation-name: yelp-note-danger; + animation-duration: 2s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; +} +@keyframes yelp-note-danger { + from { fill: #c01c28 } + 50% { fill: #c0bfbc } + to { fill: #c01c28 } +} +div.note-sidebar { + float: right; + max-width: 248px; + margin-left: 20px; +} +div.quote { + padding: 0; + min-height: 48px; +} + +div.quote > div.inner > div.title { + margin: 0; + margin-left: 48px; +} +blockquote { + margin: 0; padding: 0; + margin-left: 48px; +} +blockquote > *:first-child { margin-top: 0; } +div.quote > div.inner > div.region > div.cite { + margin-top: 0.5em; + margin-left: 48px; + color: rgb(102,102,100); +} +div.quote > div.inner > div.region > div.cite::before { + + content: '― '; + color: rgb(102,102,100); +} +div.screen { + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; +} +ol.steps, ul.steps { + padding: 0.5em 1em 0.5em 1em; + border: solid 1px rgb(244,244,244); + border-left: solid 4px #f8e45c; +} +ol.steps .steps { + padding: 0; + border: none; + background-color: unset; +} +li.steps { margin-left: 1.44em; } +li.steps li.steps { margin-left: 2.4em; } +div.synopsis > div.inner > div.region > div.contents, +div.synopsis > div.contents, div.synopsis > pre.contents { + padding: 0.5em 1em 0.5em 1em; + border-top: solid 1px; + border-bottom: solid 1px; + border-color: rgb(43,107,185); + background-color: rgb(244,244,244); +} +div.synopsis > div.inner > div.region > div.desc { font-style: italic; } +div.synopsis div.code { + background: unset; + border: none; + padding: 0; +} +div.synopsis div.code > pre.contents { margin: 0; padding: 0; } +div.unknown > div.inner > div.region > div.desc { font-style: italic; } +div.table > div.desc { font-style: italic; } +tr.shade { + background-color: rgb(244,244,244); +} +td.shade { + background-color: rgb(244,244,244); +} +tr.shade td.shade { + background-color: rgb(234,234,233); +} + +span.app { font-style: italic; } +span.cmd { + font-family: monospace,monospace; font-size: 0.83em; + background-color: rgb(244,244,244); + padding: 0 0.2em 0 0.2em; +} +span.cmd span.cmd { background-color: unset; padding: 0; } +pre span.cmd { background-color: unset; padding: 0; } +span.code { + font-family: monospace,monospace; font-size: 0.83em; + border-bottom: solid 1px rgb(234,234,233); +} +span.code span.code { border: none; } +pre span.code { border: none; } +span.em { font-style: italic; } +span.em-bold { + font-style: normal; font-weight: bold; + color: rgb(75,75,73); +} +a span.em-bold { + color: rgb(43,107,185); +} +pre span.error { + color: rgb(173,25,36); +} +span.file { font-family: monospace,monospace; font-size: 0.83em; } +span.gui, span.guiseq { color: rgb(75,75,73); } +a span.gui, a span.guiseq { color: rgb(43,107,185); } +span.input { font-family: monospace,monospace; font-size: 0.83em; } +pre span.input { + font-weight: bold; + color: rgb(75,75,73); +} +kbd { + font-family: inherit; + font-size: inherit; + color: rgb(75,75,73); + background-color: rgb(244,244,244); + border: solid 1px #c0bfbc; + border-radius: 2px; + margin: 0 0.2em 0 0.2em; + padding: 0.2em 0.5em 0 0.5em; + white-space: nowrap; +} +kbd.key-Fn { + font-weight: bold; + color: rgb(43,107,185); +} +span.key a { + border-bottom: none; +} +a kbd { + color: rgb(43,107,185); + border-color: rgb(43,107,185); +} +span.keyseq { + color: rgb(75,75,73); + white-space: nowrap +} +a span.keyseq { color: rgb(43,107,185); } +span.output { font-family: monospace,monospace; font-size: 0.83em; } +pre span.output { + color: #000000; +} +pre span.prompt { + color: rgb(75,75,73); +} +span.sys { font-family: monospace,monospace; font-size: 0.83em; } +span.var { font-style: italic; } + +.ui-tile-img .media-controls { display: none; } +span.media-audio, span.media-video { display: inline-block; } +audio, video { display: block; margin: 0; } +div.media > div.inner { display: inline-block; text-align: center; } +.media-controls { + height: 30px; + margin: 0; padding: 0; + border-left: solid 1px #000000; + border-right: solid 1px #000000; + border-bottom: solid 1px #000000; + background-color: rgb(75,75,73); + color: #ffffff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + display: flex; + align-items: center; +} +.media-controls > * { + flex: 0 1 auto; +} +.media-controls > input.media-range { + flex: 1 0 auto; + background-color: rgb(75,75,73); + margin: 0 10px; + -webkit-appearance: none; +} +input.media-range::-webkit-slider-runnable-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-webkit-slider-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +input.media-range::-webkit-slider-thumb:hover, +input.media-range::-webkit-slider-thumb:focus { + background: rgb(244,244,244); +} +input.media-range::-moz-range-track { + height: 4px; + background: rgb(102,102,100); + border-radius: 2px; +} +input.media-range::-moz-range-thumb { + -webkit-appearance: none; + height: 16px; + width: 16px; + border-radius: 8px; + background: rgb(234,234,233); + border: solid 1px rgb(75,75,73); + margin-top: -6px; +} +.media-controls-audio { + border-top: solid 1px #000000; + border-radius: 4px; +} +button.media-play { + height: 30px; + padding: 0 6px 0 6px; line-height: 0; + background-color: rgb(75,75,73); + border: none; + border-right: solid 1px #000000; +} +button.media-play:hover, button.media-play:focus { + background-color: rgb(43,107,185); +} +button.media-play .yelp-svg-fill { fill: rgb(244,244,244); } +button.media-play .media-pause { display: none; } +button.media-play-playing .media-play { display: none; } +button.media-play-playing .media-pause { display: inline; } +.media-time { + margin: 0; + font-size: 16px; + height: 30px; + line-height: 30px; +} +.media-time > span { + padding-right: 8px; +} +.media-duration { + font-size: 12px; + color: rgb(234,234,233); + opacity: 0.8; +} +.media-controls-ttml { + min-width: 630px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +div.media-ttml { + margin: 0; padding: 6px 0; + background-color: rgb(244,244,244); + border: solid 1px #000000; + min-height: 24px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.media-ttml-pre { white-space: pre; } +.media-ttml-nopre { white-space: normal; } +div.media-ttml-div { + text-align: left; + display: none; + margin: 0; padding: 0; +} +div.media-ttml-p { + text-align: left; + display: none; + margin: 0 auto; + max-width: 560px; + line-height: 1.44em; +} +div.media-ttml-div > * + * { margin-top: 1em; } +div.yelp-data { display: none; } +.ui-expander > div.inner > div.title span.title, +.ui-expander > div.inner > div.hgroup span.title { + cursor: default; +} +.ui-expander > div.inner > div.title span.title:before, +.ui-expander > div.inner > div.hgroup span.title:before { + font-weight: bold; + content: "⌃"; + display: inline-block; + margin: 0; + color: rgb(43,107,185); + transform: translateY(0.2em) rotate(0deg); + -webkit-transform: translateY(0.2em) rotate(0deg); + transition: transform 0.2s linear; + transform-origin: 50% 30%; + -webkit-transform-origin: 50% 30%; + -webkit-transition: -webkit-transform 0.2s linear; + margin: 0 0.2em; +} +.ui-expander-c > div.inner > div.hgroup { border-bottom: none; } + +.ui-expander > div.inner > div.title:hover, +.ui-expander > div.inner > div.hgroup:hover * { + color: rgb(43,107,185); +} +.ui-expander > div.inner > div.hgroup > .subtitle { + margin-left: 2em; +} +.ui-expander-c > div.inner > div.region { + display: none; +} +.ui-expander-e > div.inner > div.region { + animation-name: yelp-ui-expander-e; + animation-duration: 0.2s; + animation-fill-mode: forwards; + transform-origin: 0 0; +} +@keyframes yelp-ui-expander-e { + from { transform: scaleY(0); } + to { transform: scaleY(1); } +} +div.ui-expander-preview > div.inner > div.region { + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; + animation-name: none; +} +div.ui-expander-preview.ui-expander-c > div.inner { + max-height: 100px; + overflow: hidden; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; + transform: scaleY(0.4); + background-color: rgb(244,244,244); +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * { + cursor: zoom-in; +} +div.ui-expander-preview > div.inner > div.region > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +div.ui-expander-preview.ui-expander-c > div.inner > div.region > * { + transform: scaleX(0.4); +} +section.ui-expander-preview > div.inner > div.region > div.contents{ + transform-origin: 0 0; + transition: transform 0.2s linear, background-color 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner { + max-height: 140px; + overflow: hidden; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region { + display: block; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents { + transform: scaleY(0.6); + background-color: rgb(244,244,244); +} +section.ui-expander-preview > div.inner > div.region > div.contents > * { + transform-origin: 0 0; + transition: transform 0.2s linear; +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * { + transform: scaleX(0.6); +} +section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover { + background-color: rgb(241,246,253); + cursor: zoom-in; +} +@media only screen and (max-width: 480px) { + article > div.region > div.contents > div.example, + article > div.region > section > div.inner > div.region > div.contents > div.example { + margin-left: -10px; + margin-right: -10px; + } + div.example { + padding-left: 6px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; + } + article > div.region > div.contents > div.note, + article > div.region > section > div.inner > div.region > div.contents > div.note { + border-left: none; + border-right: none; + } + article > div.region > div.contents > div.steps, + article > div.region > section > div.inner > div.region > div.contents > div.steps { + margin-left: -10px; + margin-right: -10px; + } + div.steps > div.inner > div.title { + margin-left: 10px; + margin-right: 10px; + } + ol.steps, ul.steps { + padding: 0; + padding-left: 6px; + padding-right: 10px; + } +} +@media only screen and (max-width: 540px) { + div.note-sidebar { + float: none; + max-width: none; + margin-left: inherit; + margin-right: inherit; + padding-left: inherit; + padding-right: inherit; + } +} +div.quote > div.inner:before { float: leftcontent: '“'; + font-family: "Century Schoolbook L"; + font-size: {{$icons.size.quote}}px; + font-weight: bold; + line-height: 1em; + margin: 0; padding: 0; + height: {{$icons.size.quote}}px; + width: {{$icons.size.quote}}px; + text-align: center; + color: {{$color.bg.dark}}; +}.ui-expander-e > div.inner > div.title span.title:before, .ui-expander-e > div.inner > div.hgroup span.title:before {transform: translateY(0.2em) rotate(180deg);} +.hljs a { + color: inherit; + border-bottom: dotted 1px rgb(43,107,185); +} +.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); } +.hljs-addition { + color: rgb(46,121,73); + background-color: rgb(227,250,236); +} +.hljs-deletion { + color: rgb(173,25,36); + background-color: rgb(251,243,244); +} +.hljs-emphasis { font-style: italic; } +.hljs-strong { font-weight: bold; } +.hljs-attr { color: rgb(43,107,185); } +.hljs-attribute { color: rgb(107,99,41); } +.hljs-built_in { color: rgb(150,96,43); } +.hljs-bullet { color: rgb(46,121,73); } +.hljs-class { } +.hljs-code { color: rgb(75,75,73); } +.hljs-comment { color: rgb(102,102,100); } +.hljs-doctag { } +.hljs-formula { color: rgb(75,75,73); } +.hljs-function { } +.hljs-keyword { color: rgb(147,64,167); } +.hljs-link { color: rgb(150,96,43); } +.hljs-literal { color: rgb(150,96,43); } +.hljs-meta { color: rgb(150,96,43); } +.hljs-name { color: rgb(173,25,36); } +.hljs-number { color: rgb(150,96,43); } +.hljs-params { color: rgb(150,96,43); } +.hljs-quote { color: rgb(102,102,100); } +.hljs-regexp { color: rgb(173,25,36); } +.hljs-rest_arg { } +.hljs-section { color: rgb(43,107,185); } +.hljs-string { color: rgb(46,121,73); } +.hljs-subst { } +.hljs-symbol { color: rgb(46,121,73); } +.hljs-tag { color: rgb(173,25,36); } +.hljs-title { color: rgb(43,107,185); } +.hljs-type { } +.hljs-variable { } +.hljs-selector-attr { } +.hljs-selector-class { color: rgb(173,25,36); } +.hljs-selector-id { color: rgb(173,25,36); } +.hljs-selector-tag { color: rgb(147,64,167); } +.hljs-template-tag { } +.hljs-template-variable { } + + +div.links .desc a { + color: inherit; +} +div.links .desc a:hover { + color: rgb(43,107,185); +} +a.bold { font-weight: bold; } + + +div.link-button { + font-size: 1.2em; + font-weight: bold; +} +.link-button a { + display: inline-block; + background-color: #3584e4; + color: #ffffff; + text-shadow: rgb(43,107,185) 1px 1px 0px; + border: solid 1px rgb(43,107,185); + padding: 0.2em 0.83em 0.2em 0.83em; + border-radius: 4px; +} +.link-button a:visited { + color: #ffffff; +} +.link-button a:hover { + text-decoration: none; + color: #ffffff; + background-color: rgb(73,144,231); +} +div.link-button a .desc { + display: block; + font-weight: normal; + font-size: 0.83em; + color: rgb(244,244,244); +} + + +div.floatleft { + float: left; + margin-right: 1em; +} +div.floatright { + float: right; + margin-left: 1em; +} +div.floatstart { + float: left; + margin-right: 1em; +} +div.floatend { + float: right; + margin-left: 1em; +} + + +div.title-heading h1, div.title-heading h2, div.title-heading h3, +div.title-heading h4, div.title-heading h5, div.title-heading h6 { + font-size: 1.72em; + font-weight: bold; +} +ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; } +div.links-heading > a { font-size: 1.72em; font-weight: bold; } +ul.links-heading > li > div.desc { margin-top: 0.5em; } + +div.links-uix-hover { + position: relative; + display: flex; + flex-flow: row nowrap; + align-items: stretch; + justify-content: flex-start; +} +ul.links-uix-hover { flex-grow: 1; } +ul.links-uix-hover li { margin: 0; padding: 0; } +ul.links-uix-hover a { + display: block; + padding: 8px 1.2em; + border-bottom: none; +} +ul.links-uix-hover a:hover, ul.links-uix-hover a:focus { + background: rgb(241,246,253); +} +ul.links-uix-hover img { + display: block; + position: absolute; + top: 0; left: 0; + visibility: hidden; + opacity: 0.0; + transition: opacity 0.6s, visibility 0.6s; +} +ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img { + visibility: visible; + opacity: 1.0; + transition: opacity 0.2s, visibility 0.2s; +} +@media only screen and (max-width: 480px) { + div.links-uix-hover-img { display: none; } + ul.links-uix-hover img { display: none; } + ul.links-uix-hover li { + margin-left: -10px; margin-right: -10px; + } + ul.links-uix-hover li a { + padding: 10px; + } +} + + +div.ui-overlay-screen { + position: fixed; + margin: 0; + left: 0; top: 0; + width: 100%; height: 100%; + background: rgb(75,75,73); + animation-name: yelp-overlay-screen; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-screen { + from { opacity: 0.0; } + to { opacity: 0.6; } +} +div.ui-overlay { + display: none; + position: fixed; + text-align: center; + top: 30px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} +div.ui-overlay-show { + animation-name: yelp-overlay-slide; + animation-duration: 0.8s; + animation-fill-mode: forwards; +} +@keyframes yelp-overlay-slide { + from { transform: translateY(-400px) translateX(-50%); } + to { transform: translateY(0) translateX(-50%); } +} +div.ui-overlay > div.inner { + display: inline-block; + padding: 8px; + background-color: rgb(244,244,244); + border-radius: 4px; + text-align: left; +} +div.ui-overlay img, div.ui-overlay video { + max-height: 80vh; + max-width: 90vw; +} +div.ui-overlay > div.inner > div.title { margin-top: -4px; } +a.ui-overlay-close { + display: block; + float: right; + width: 30px; height: 30px; + font-size: 22px; line-height: 30px; + font-weight: bold; + margin-top: -28px; + margin-right: -26px; + padding: 1px 2px 3px 2px; + text-align: center; + border: none; + border-radius: 50%; + background-color: #3584e4; + color: #ffffff; +} + +div.links-tiles { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: stretch; + vertical-align: top; + clear: both; + margin: 0 -10px; +} +div.links-tile { + flex: 1 0 340px; + vertical-align: top; + margin: 0; + padding: 10px; +} +div.links-tiles > div.links-tile { max-width: none; } +div.links-tile:empty { padding: 0 10px; height: 0; } +div.links-tile > a { + display: block; + vertical-align: top; + padding: 10px; + border-radius: 4px; + border: none; +} +div.links-tile > a:hover { + background-color: rgb(241,246,253); +} +div.links-tile > a > span.links-tile-img { + display: block; + text-align: center; +} +div.links-tile > a > span.links-tile-img > img { + width: 100%; + border-radius: 3px; +} +div.links-tile > a > span.links-tile-text > span.title { + display: block; + font-weight: bold; +} +div.links-tile > a > span.links-tile-text > * + span.title { + margin-top: 0.5em; +} +div.links-tile > a > span.links-tile-text > span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + +a.ex-gnome-top { + display: block; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-top:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-top-banner { + display: block; + height: 10px; + background: #57e389; + overflow: hidden; +} +span.ex-gnome-top-title { + color: #000000; + display: block; + margin: 10px 20px; + font-size: 1.2em; +} +span.ex-gnome-top-desc { + color: rgb(102,102,100); + display: block; + margin: 10px 20px; +} + + +a.ex-gnome-tile { + display: flex; + flex-flow: row; + align-items: stretch; + border: solid 1px #c0bfbc; + border-radius: 4px; + transition: box-shadow 0.5s linear; +} +a.ex-gnome-tile:hover { + box-shadow: 0px 2px 4px #c0bfbc; +} +span.ex-gnome-tiles-banner { + display: block; + flex: 0 0 64px; + background: rgb(43,107,185); + overflow: hidden; +} +span.ex-gnome-tiles-banner img { + width: 64px; height: 64px; + margin: 10px 0; + transform: rotate(-10deg); +} +span.ex-gnome-tiles-text { + display: block; + margin: 10px; +} +span.ex-gnome-tiles-title { + color: #000000; + display: block; + margin: 0; + font-size: 1.2em; +} +span.ex-gnome-tiles-desc { + color: rgb(102,102,100); + display: block; + margin-top: 10px; +} + + +div.links-grid-container { + margin-left: -10px; + margin-right: -10px; + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + clear: both; +} +div.links-grid { + flex: 1 0 340px; + padding: 10px; +} +div.links-grid:empty { padding: 0 10px; height: 0; } +div.links-grid-link { font-weight: bold; } +div.links-grid > div.desc { + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} + + + +div.links-norwich { + width: 900px; +} +div.links-norwich-primary { + float: left; + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-big { + vertical-align: top; + display: inline-block; + background: rgb(241,246,253); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4); + margin: 0 20px 20px 0; +} +div.links-norwich-big + div.links-norwich-big { + background: rgb(253,251,233); + background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c); +} +div.links-norwich-big a { + display: block; + width: 230px; + height: 500px; + height: 320px; + padding: 9px; + font-size: 1.2em; + color: #000000; + border: solid 1px #3584e4; + background-repeat: no-repeat; + background-position: right -80px bottom -80px; +} +div.links-norwich-big a:hover { + border: solid 1px #3584e4; + box-shadow: 2px 2px 2px #3584e4; +} +div.links-norwich-big a span.title { + font-size: 1.2em; + font-weight: bold; +} +div.links-norwich-big a .desc { + color: #000000; + font-weight: normal; +} +div.links-norwich-secondary { + vertical-align: top; + margin: 0; padding: 0; +} +div.links-norwich-small { + display: inline-block; + vertical-align: top; + background: rgb(244,244,244); + margin: 0 20px 20px 0; +} +div.links-norwich-small a { + display: block; + width: 140px; + height: 140px; + padding: 9px; + font-weight: bold; + color: #000000; + border: solid 1px #c0bfbc; + background-repeat: no-repeat; + background-position: right 4px bottom 4px; +} +div.links-norwich-small a:hover { + border: solid 1px #c0bfbc; + box-shadow: 2px 2px 2px #3584e4; +} +@media only screen and (max-width: 900px) { + div.links-norwich { + width: 720px; + } +} +@media only screen and (max-width: 720px) { + div.links-norwich { + width: 540px; + } +} +@media only screen and (max-width: 540px) { + div.links-norwich { + width: 100%; + } + div.links-norwich-big { + width: 100%; + margin-right: 0; + } + div.links-norwich-big a { + width: auto; + } +} + + +div.links-divs { + margin-left: -10px; + margin-right: -10px; +} +a.linkdiv { + display: block; + margin: 0; + padding: 10px; + border-bottom: none; +} +a.linkdiv:hover { + text-decoration: none; + background-color: rgb(241,246,253); +} +a.linkdiv span.title { + display: block; + margin: 0; + font-size: 1em; + font-weight: bold; + color: inherit; +} +a.linkdiv span.desc { + display: block; + margin: 0.2em 0 0 0; + color: rgb(75,75,73); +} +span.linkdiv-dash { display: none; } +div.links-twocolumn { + display: flex; + flex-flow: row wrap; + align-items: stretch; + justify-content: flex-start; + vertical-align: top; + margin-left: -10px; + margin-right: -10px; +} +div.links-twocolumn > div.links-divs { + flex: 1 0 360px; + vertical-align: top; + margin: 0; +} + + +div.comment { + padding: 0.5em; + border: solid 2px #c01c28; + background-color: rgb(251,243,244); +} +div.comment div.comment { + margin: 1em 1em 0 1em; +} +div.comment div.cite { + margin: 0 0 0.5em 0; + font-style: italic; +} + + +div.tree > div.inner > div.title { margin-bottom: 0.5em; } +ul.tree { + margin: 0; padding: 0; + list-style-type: none; +} +li.tree { margin: -2px 0 0 0; padding: 0; } +li.tree div { margin: 0; padding: 0; } +ul.tree ul.tree { + margin-left: 1.44em; +} +div.tree-lines ul.tree { margin-left: 0; } + + +span.hi { + background-color: rgb(253,251,233); +} +span.hi.hi-ins { + background-color: rgb(227,250,236); +} +span.hi.hi-del { + background-color: rgb(251,243,244); + text-decoration: line-through; +} +span.hi.hi-ins ins { text-decoration: none; } +span.hi.hi-del del { text-decoration: none; } +span.hi.hi-red { background-color: rgb(251,243,244); } +span.hi.hi-orange { background-color: rgb(255,243,231); } +span.hi.hi-yellow { background-color: rgb(253,251,233); } +span.hi.hi-green { background-color: rgb(227,250,236); } +span.hi.hi-blue { background-color: rgb(241,246,253); } +span.hi.hi-purple { background-color: rgb(249,243,250); } +span.hi.hi-gray { background-color: rgb(244,244,244); } + + +dt.gloss-term { + margin-top: 1.2em; + font-weight: bold; + color: rgb(75,75,73); +} +dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; } +dt.gloss-term + dd { margin-top: 0.2em; } +dd.gloss-link { + margin: 0 0.2em 0 0.2em; + border-left: solid 4px #3584e4; + padding-left: 1em; +} +dd.gloss-def { + margin: 0 0.2em 1em 0.2em; + border-left: solid 4px #c0bfbc; + padding-left: 1em; +} +a.gloss-term { + position: relative; + border-bottom: dashed 1px #3584e4; +} +a.gloss-term:hover { + text-decoration: none; + border-bottom-style: solid; +} +span.gloss-desc { + display: none; + position: absolute; + z-index: 100; + margin: 0; + left: 0; + top: 1.2em; + padding: 0.2em 0.5em 0.2em 0.5em; + min-width: 12em; + max-width: 24em; + overflow: hidden; + color: rgb(75,75,73); + background-color: rgb(253,251,233); + border: solid 1px #f8e45c; + box-shadow: 2px 2px 4px #c0bfbc; +} +a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc { + display: inline-block; + animation-name: yelp-gloss-fade; + animation-duration: 1s; + animation-fill-mode: forwards; +} +@keyframes yelp-gloss-fade { + from { opacity: 0.0; } + to { opacity: 1.0; } +} + + +.if-if { display: none; } +.if-choose, .if-when, .if-else { margin: 0; padding: 0; } +.if-choose > .if-when { display: none; } +.if-choose > .if-else { display: block; } +.if-if.if__not-target-mobile { display: block; } +.if-choose.if__not-target-mobile > .if-when { display: block; } +.if-choose.if__not-target-mobile > .if-else { display: none; } +@media only screen and (max-width: 480px) { + .if-if.if__target-mobile { display: block; } + .if-if.if__not-target-mobile { display: none; } + .if-choose.if__target-mobile > .if-when { display: block; } + .if-choose.if__target-mobile > .if-else { display: none; } + .if-choose.if__not-target-mobile > .if-when { display: none; } + .if-choose.if__not-target-mobile > .if-else { display: block; } +} diff --git a/docs/po/LINGUAS b/docs/po/LINGUAS new file mode 100644 index 000000000..eb4ef2b1c --- /dev/null +++ b/docs/po/LINGUAS @@ -0,0 +1,27 @@ +ar +bg +cs +da +de +es +et +fi +fr +gl +hi +hr +id +it +ja +nl +oc +pl +pt +pt_BR +ro +ru +sv +ta +tr +ur +zh_CN diff --git a/docs/po/ar.po b/docs/po/ar.po new file mode 100644 index 000000000..9df20eba4 --- /dev/null +++ b/docs/po/ar.po @@ -0,0 +1,892 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-12-06 07:04+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\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 ? 4 : 5;\n" +"X-Generator: Weblate 5.3-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "اللون المبدئيُّ للمعاملات" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "اللون المبدئيُّ للتحويلات" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "اللون المبدئيُّ للمجموعات" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "المعاملة" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "المعرِّف" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "المَبلغ" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "النوع" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "مدَّة التكرار" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "تاريخ انتهاء التكرار" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "الوسوم" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Business Account Color" +#~ msgstr "لون حساب الأعمال" + +#~ msgid "Use Native Digits" +#~ msgstr "استخدم أرقام اللغة" diff --git a/docs/po/bg.po b/docs/po/bg.po new file mode 100644 index 000000000..037c4aaa7 --- /dev/null +++ b/docs/po/bg.po @@ -0,0 +1,900 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2024-04-11 20:57+0000\n" +"Last-Translator: twlvnn \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Сметка" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Име" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Вид на сметката" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Стандартен вид на операциите" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Праг на напомнянията за операции" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Използване на собствена валута" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Парола" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Тема" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Стандартен цвят на операциите" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Стандартен цвят на преводите" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Стандартен цвят на групите" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Вмъкване на десетичен знак" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Операция" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "Идентификатор" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Описание" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Сума" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Вид" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Дата" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Интервал на повторение" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Крайна дата на повторение" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Група" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Цвят" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Етикети" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Разписка" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Бележки" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Checking Account Color" +#~ msgstr "Цвят на разплащателната сметка" + +#~ msgid "Savings Account Color" +#~ msgstr "Цвят на спестовната сметка" + +#~ msgid "Business Account Color" +#~ msgstr "Цвят на бизнес сметка" + +#~ msgid "Use Native Digits" +#~ msgstr "Използване на собствени цифри" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Папка за CSV резерв" diff --git a/docs/po/cs.po b/docs/po/cs.po new file mode 100644 index 000000000..0bd672545 --- /dev/null +++ b/docs/po/cs.po @@ -0,0 +1,1125 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-11-16 18:17+0000\n" +"Last-Translator: Fjuro \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 5.2\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Jonáš Loskot , 2023" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Účet 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Účet" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Na této stránce jsou vysvětleny všechny vlastnosti účtů v aplikaci " +"Denaro. Většina z nich je uvedena v dialogovém okně " +"Nastavení účtu. Toto okno se také automaticky otevře po vytvoření " +"nového účtu." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Každý účet je uložen v jednom souboru *.nmoney. Soubory " +"vytvořené ve starší stabilní verzi aplikace Denaro lze " +"bezpečně otevřít v novější stabilní verzi aplikace. Přestože " +"aplikace může běžet na různých platformách (Windows a Linux), soubory " +"*.nmoney jsou mezi platformami 100% kompatibilní, pokud " +"pocházejí ze stejné verze aplikace (např. V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Nestabilní (beta a RC) verze aplikace mohou obsahovat chyby nebo nedokončené " +"úpravy, které mohou způsobit ztrátu dat. NEPOUŽÍVEJTE soubory účtů, které " +"obsahují skutečná data, v nestabilních verzích aplikace!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Název" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"Název účtu se zobrazuje v seznamu posledních účtů a na kartách. Název nemá " +"omezenou délku a může obsahovat libovolné znaky včetně emotikonů." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Typ účtu" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"K dispozici jsou 3 typy účtů: 🟣Běžný, 🔵Spořicí a 🟢" +"Firemní. Typ účtu je pouze užitečné označení, které se zobrazuje v " +"seznamu posledních účtů a nemá vliv na to, jak aplikace funguje nebo co " +"můžete s účtem dělat. Každý typ účtu má svou vlastní barvu, tyto barvy lze " +"nakonfigurovat v globálním nastavení ." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Výchozí typ transakce" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Při vytváření nové transakce bude její typ ve výchozím nastavení stejný jako " +"v tomto nastavení." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Hranice pro připomenutí transakcí" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" +"Hranice použitá při zobrazování připomínek o nadcházejících transakcích." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Systémová měna" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Při každém spuštění získá aplikace údaje o měně a formátování čísel z vašich " +"systémových místních nastavení. Tyto údaje se použijí k zobrazení symbolu " +"měny (pokud není použita vlastní měna, viz níže) a k určení, v jakém formátu " +"budou čísla přijímána jako hodnoty částek transakcí. Několik příkladů:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"Pokud je vaše místní prostředí Angličtina (Spojené státy), symbol " +"měny bude nastaven na $ a 1,000.00 bude akceptováno jako " +"platné číslo." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"Pokud je vaše místní prostředí Čeština, symbol měny bude nastaven " +"na a 1 000,00 bude akceptováno jako platné číslo." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"Pokud je vaše místní prostředí Ruština, symbol měny bude nastaven " +"na a 1000,00 bude akceptováno jako platné číslo." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"V systému Linux je možné nastavit různé místní jazyky a formáty systému. " +"Změna těchto nastavení se liší v závislosti na používaném desktopovém " +"prostředí. Navzdory rozdílům v umístění těchto nastavení jejich změna upraví " +"proměnné systémového prostředí, například LANG, LC_TIME a LC_MONETARY. Denaro se pokusí použít formáty " +"částek a dat podle těchto proměnných. Pokud aplikace očekávané formáty " +"nepoužívá, zkontrolujte, zda jsou proměnné správně nastaveny pomocí příkazu " +"locale v terminálu. Pokud jste našli chybu a chcete ji " +"nahlásit, poskytněte prosím výstup příkazu locale, aby mohli " +"vývojáři reprodukovat váš problém se stejným nastavením." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Použít vlastní měnu" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"Pokud je tato možnost povolena, bude místo symbolu měny, který poskytuje " +"vaše systémové prostředí, použit vlastní symbol měny." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Vlastní symbol měny" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "Až 3 znaky nebo 1 emotikon. Nemůže to být číslo." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Vlastní kód měny" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "Až 3 znaky nebo 1 emotikon." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Příklad pro pochopení rozdílu mezi symbolem a kódem: je symbol, " +"CZK je kód." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Vlastní styl množství měny" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "Výběr mezi zobrazením množství jedním z následujících způsobů:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Vlastní oddělovače desetinných míst a skupin měn" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "Až 2 znaky nebo 1 emotikon." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Vlastní desetinné číslice měny" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"Velikost desetinné části hodnot částek. Při „neomezeném“ počtu číslic bude v " +"desetinné části tolik čísel, kolik je potřeba k zobrazení přesné částky, ale " +"pokud je částka celým číslem, nebude desetinná část žádná." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Heslo" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Každý účet může být chráněn heslem. Přidáním hesla se účet zašifruje (bez " +"dešifrování pomocí hesla není možné data číst). Buďte opatrní: pokud heslo " +"ztratíte, nebudete moci data obnovit! Heslo lze také změnit nebo odstranit " +"pomocí dialogového okna nastavení otevřeného účtu. Odstraněním hesla dojde k " +"dešifrování účtu." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Řazení podle ID, data nebo částky" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"U každého účtu je uloženo, zda se mají transakce v hlavním okně řadit podle " +"ID, data nebo částky. Pokaždé, když toto nastavení změníte, bude uloženo do " +"souboru účtu a obnoví se při jeho opětovném otevření." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Pořadí řazení" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"Každý účet uchovává informace o pořadí transakcí v hlavním okně. Pokaždé, " +"když je změníte, uloží se do souboru účtu a obnoví se při jeho opětovném " +"otevření." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Viditelnost skupin" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Každý účet ukládá informace o tom, zda je seznam skupin v hlavním okně " +"skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu skupin, je tato " +"informace uložena a poté obnovena při opětovném otevření účtu." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Viditelnost štítků" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Každý účet ukládá informace o tom, zda je seznam štítků v hlavním okně " +"skrytý, nebo ne. Pokaždé, když změníte viditelnost seznamu štítků, je tato " +"informace uložena a poté obnovena při opětovném otevření účtu." + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Nastavení 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Nastavení" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "Na této stránce je popsáno, co můžete změnit v nastavení aplikace." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"V závislosti na platformě je konfigurace v rozhraní aplikace označena jako " +"Předvolby nebo Nastavení." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Motiv" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"Nastavte si světlý nebo tmavý motiv, nebo nastavte, aby Denaro " +"následovalo váš systémový motiv. Změna tohoto nastavení v systému Windows " +"vyžaduje restart aplikace, aby se uplatnila." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Výchozí barva transakce" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"Barva, která bude vybrána jako výchozí při přidání nové transakce s jedinečnou barvou. Její změna " +"neovlivní existující transakce, i když používají dříve zvolenou výchozí " +"barvu." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Výchozí barva převodu" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"Barva, která bude použita pro transakce vytvořené pomocí převodu . Změna tohoto parametru neovlivní " +"existující transakce." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Výchozí barva skupiny" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"Barva, která bude ve výchozím nastavení vybrána při přidávání nové skupiny. " +"Je to také barva pro skupinu „Neseskupené“." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Vložení desetinného oddělovače" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"Nastavení, pro které stisknuté klávesy se do pole částky vloží desetinný " +"oddělovač lokálního jazyka: tečka na numerickém bloku, libovolná tečka a " +"čárka nebo žádný. Pokud již je desetinný oddělovač v poli, nebude vložen." + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Import/export 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Import/export" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formáty importu" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Data by měla být ve formátu RRRRMMDD." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" +"Data by měla být v anglickém (americkém) formátu (MM/DD/RRRR)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ Formát CSV je sice běžný a některé banky umožňují svým uživatelům " +"exportovat informace ve formátu CSV, ale tyto soubory jsou ve skutečnosti " +"tabulky, které mohou obsahovat libovolná data. Import souboru CSV " +"vytvořeného v jiném programu selže, protože jeho data nebudou kompatibilní s " +"tím, co se aplikace Denaro snaží ze souboru získat. Účelem " +"importu/exportu CSV je poskytnout způsob, jak přidávat data do účtu pomocí " +"externích programů, jako jsou textové editory a kancelářské balíky. Import " +"přidá pouze nové transakce, aniž by přepsal ty stávající. Pokud chcete " +"soubor CSV vytvořit ručně, toto je hlavička, která obsahuje všechny sloupce, " +"které aplikace Denaro očekává, že najde:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" +"ID transakce, mělo by být pro daný účet jedinečné. ID začínají číslem 1." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"Datum transakce (nebo datum zahájení v případě opakované transakce) by mělo " +"být v anglickém (americkém) formátu (MM/DD/RRRR)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "Popis transakce, může obsahovat libovolné znaky kromě středníku." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "Typ transakce: 0 pro příjem, 1 pro výdaj." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "Číslo představující interval opakování transakce:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Nikdy" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Denně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Týdně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Dvakrát týdně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Měsíčně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Čtvrtletně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Ročně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Dvakrát ročně" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"Podrobnosti o opakovaných transakcích naleznete v části Interval " +"opakování na stránce transakce." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"Mělo by to být buď ID zdrojové transakce nebo 0, pokud se jedná o zdrojovou " +"transakci, nebo -1, pokud se nejedná o opakovanou transakci." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"Datum ukončení opakované transakce by mělo být v anglickém (americkém) " +"formátu (MM/DD/RRRR). Pokud se nejedná o opakovanou transakci, " +"ponechte jej prázdný." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" +"Částka transakce v anglickém (americkém) formátu (123,456.78)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Barva transakce, by měla být ve formátu rgb(R,G,B), kde R, " +"G a B jsou celá čísla v rozsahu 0 až 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "Zda má transakce používat skupinovou barvu: 0 — ne, 1 — ano." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"ID skupiny transakce. ID začíná číslem 1. U neseskupených transakcí by mělo " +"být -1 (ne 0, to je nesprávná hodnota pro ID skupiny)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"Název skupiny transakce, měl by odpovídat ID skupiny. Může obsahovat " +"libovolné znaky kromě středníku. Pro transakce bez skupiny jej ponechte " +"prázdný, v ostatních případech by neměl být prázdný." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"Popis skupiny transakce, měl by odpovídat identifikačnímu číslu skupiny. " +"Může obsahovat libovolné znaky kromě středníku a může být prázdný. Pro " +"transakce bez skupiny jej ponechte prázdný." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Barva skupiny, měla by být ve formátu rgb(R,G,B), kde R, " +"G a B jsou celá čísla v rozsahu 0 až 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "Faktura a poznámky se v souboru CSV nenachází." + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formáty exportu" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"Můžete si vybrat, zda chcete exportovat všechny informace, nebo pouze " +"aktuální zobrazení. Pokud vyberete aktuální zobrazení, budou aktuálně " +"zobrazené transakce exportovány ve stejném pořadí, v jakém jsou zobrazeny." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"Soubor bude obsahovat informace o účtu, seznam transakcí a obrázky faktur. " +"Transakce jsou barevné jako v aplikaci, ale barvy jsou upraveny tak, že jsou " +"poloprůhledné, aby byl černý text vždy dobře viditelný. Pro exportovaný " +"soubor můžete nastavit heslo." + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Nápověda aplikace Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Nápověda aplikace Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Nápověda aplikace Denaro" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"Tato dokumentace vám pomůže pochopit, jak konfigurovat a spravovat data v " +"aplikaci Denaro, abyste z ní mohli vytěžit maximum." + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"Potřebujete-li podporu, použijte problémy nebo diskuze na GitHubu " +"nebo se připojte k našemu kanálu " +"Matrix." + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transakce 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transakce" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" +"Na této stránce jsou vysvětleny všechny vlastnosti transakcí v aplikaci " +"Denaro." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"Každá transakce má ID, které je pro daný účet jedinečné. ID začíná číslem 1 " +"a zvyšuje se s každou přidanou transakcí. ID nelze měnit, identifikátory " +"odstraněných transakcí se znovu nepoužívají." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Popis" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "Délka není omezena. Nesmí obsahovat středník." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Množství" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"Číslo ve formátu platném pro vaše místní prostředí, podrobnosti viz " +"Systémová měna na stránce Účet." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Typ" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"Příjem nebo Výdaj. Ve výchozím nastavení se při otevření " +"dialogu pro přidání nové transakce vybere ta, která byla zvolena v nastavení účtu." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Datum" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"Lze vybrat libovolné datum, můžete také vytvářet transakce pro budoucí data." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Interval opakování" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"Tuto možnost použijte k vytvoření opakující se transakce. Po přidání " +"transakce s intervalem opakování se tato transakce stane zdrojovou " +"transakcí. Aplikace Denaro bude automaticky generovat " +"opakované transakce pro data do dnešního dne nebo zadaného data " +"ukončení, pokud je nastaveno v minulosti. Opakované transakce nelze " +"upravovat ani mazat, upravovat lze pouze zdrojové transakce. Při " +"úpravě zdrojové transakce se aplikace Denaro zeptá, zda " +"chcete upravit nebo zrušit přiřazení opakovaných transakcí. Pokud " +"se rozhodnete pro zrušení přiřazení, opakované transakce se stanou " +"normálními transakcemi a lze je upravovat nebo mazat samostatně." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Datum ukončení opakování" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"Datum ukončení transakce s opakováním. Nemůže být dřívější nebo stejné jako " +"datum zahájení." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Skupina" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"Každá transakce může patřit pouze do jedné skupiny nebo do žádné (skupina " +"„Neseskupené“)." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Barva" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"Barva pro transakce. Lze nastavit použití barvy skupiny nebo jedinečné " +"barvy. Při výběru jedinečné barvy bude ve výchozím nastavení nastavena na " +"barvu vybranou v nastavení, lze ji ale " +"změnit na libovolnou barvu." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Štítky" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"Seznam štítků pro transakci. Transakce může mít neomezený počet štítků (nebo " +"může být bez nich). Štítky mohou obsahovat libovolné znaky kromě čárky " +"(,) a mohou mít libovolnou délku, očekává se však, že se bude " +"jednat o krátká klíčová slova. Štítky jsou určeny k dodatečnému filtrování, " +"pokud nestačí použití skupin. Štítky se ukládají pouze v samotných " +"transakcích, v důsledku čehož nepoužité štítky při uzavření účtu automaticky " +"zmizí." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Faktura" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"Obrázek faktury za transakci. Můžete nahrát obrázek JPEG nebo PNG nebo " +"dokument PDF, ale bez ohledu na formát bude převeden a uložen jako obrázek " +"JPEG. V případě PDF bude uložena pouze první stránka. Soubor můžete kdykoli " +"odstranit nebo nahrát jiný." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Poznámky" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "Volně formulovaná textová poznámka, která se připojí k transakci." + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Převod 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Převod" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"Převod je způsob, jak lze přenést peníze z jednoho účtu na druhý. Po " +"provedení převodu se vytvoří 2 transakce s následujícími popisy:" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "„Převod na Název cílového účtu“ na zdrojovém účtu." + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "„Převod z Název zdrojového účtu“ na cílovém účtu." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"Transakce vytvořené pomocí převodu jsou jednoduché transakce, které lze " +"libovolně upravovat nebo mazat. Tyto transakce nejsou propojené: úprava " +"transakce na zdrojovém účtu neovlivní transakci na cílovém účtu a naopak." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"Převod neumožňuje vytvářet opakující se transakce ani nastavovat jiné " +"vlastnosti než částku. Pro vytvořené transakce se použije barva vybraná v " +"nastavení ." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"Pokud vytváříte převod mezi účty v různých měnách, budete vyzváni k zadání " +"převodního kurzu." + +#~ msgid "Checking Account Color" +#~ msgstr "Barva běžného účtu" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "Barva používaná k označení účtů s typem " +#~ "Běžný v seznamu nedávných účtů." + +#~ msgid "Savings Account Color" +#~ msgstr "Barva spořicího účtu" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "Barva používaná k označení účtů s typem " +#~ "Spořicí v seznamu nedávných účtů." + +#~ msgid "Business Account Color" +#~ msgstr "Barva firemního účtu" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "Barva používaná k označení účtů s typem " +#~ "Firemní v seznamu nedávných účtů." + +#~ msgid "Use Native Digits" +#~ msgstr "Použít nativní číslice" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "Nastavení, zda se mají místo latinských číslic používat číslice, které " +#~ "jsou pro vaši oblast přirozené. Pokud je toto nastavení povoleno, bude " +#~ "například ٠١٢ použito místo 012 pro lokality, které " +#~ "používají východoarabské číslice." + +#~ msgid "CSV Backup Folder" +#~ msgstr "Složka zálohy CSV" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "Složka, do které budou vaše data po každé změně automaticky exportována jako soubor CSV. Tato funkce " +#~ "nefunguje pro účty chráněné heslem, protože soubory CSV nelze chránit " +#~ "heslem." diff --git a/docs/po/da.po b/docs/po/da.po new file mode 100644 index 000000000..81fab0f91 --- /dev/null +++ b/docs/po/da.po @@ -0,0 +1,882 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/de.po b/docs/po/de.po new file mode 100644 index 000000000..d84e4b92f --- /dev/null +++ b/docs/po/de.po @@ -0,0 +1,936 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-09-17 18:01+0000\n" +"Last-Translator: Ettore Atalan \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.2\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Jummit , 2023" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Konto 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Konto" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Auf dieser Seite werden alle Eigenschaften von Konten in Denaro " +"erläutert. Die meisten von ihnen werden im Dialog Kontoeinstellungen angezeigt. Dieser Dialog wird auch automatisch geöffnet, nachdem du ein " +"neues Konto erstellt hast." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Jedes Konto wird in einer einzelnen *.nmoney Datei gespeichert. " +"Dateien, die in einer älteren stabilen Version von Denaro erstellt worden sind, können unbedenklich in einer aktuelleren " +"stabilen Version der Anwendung geöffnet werden. Obwohl die " +"Anwendung auf verschiedenen Betriebssystemen laufen kann (Windows und " +"Linux), sind die *.nmoney Dateien nur dann 100% kompatibel " +"zwischen den Betriebssystemen, wenn sie von derselben Anwendungsversion " +"stammen (z. B. V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Instabile (Beta und RC) Anwendungsversionen können Fehler oder nicht " +"fertiggestellte Anpassungen enthalten, die zu Datenverlust führen können. " +"Benutze KEINE Kontodateien, die echte Daten enthalten, in einer instabilen " +"Version der Anwendung!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Name" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"Der Kontoname wird in der Liste der zuletzt verwendeten Konten und in den " +"Registerkarten angezeigt. Ein Name hat keine Längenbeschränkung und kann " +"beliebige Zeichen enthalten, einschließlich Emojis." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Konto Typ" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Es sind 3 Konto - Typen verfügbar: 🟣Girokonto, 🔵Sparkonto und 🟢Geschäftskonto. Der Konto - Typ ist nur ein nützliches " +"Kennzeichnung, welche keine Auswirkungen auf die Funktion der Anwendung " +"haben. Der Konto - Typ wird in der Liste der kürzlich bearbeiteten Konten " +"angezeigt. Jeder Konto - Typ hat eine eigene Farbe, welche in den Globalen Einstellungen bearbeitet werden " +"können." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Standard-Transaktionsart" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Wenn Sie eine neue Transaktion erstellen, ist ihr Typ standardmäßig derselbe " +"wie in dieser Einstellung." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Schwellenwert für Überweisungserinnerungen" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Systemwährung" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Benutzerdefinierte Währung verwenden" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Benutzerdefiniertes Währungssymbol" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "Bis zu 3 Zeichen oder 1 Emoji. Es darf keine Zahl sein." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Benutzerdefinierter Währungscode" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "Bis zu 3 Zeichen oder 1 Emoji." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Ein Beispiel zum Verständnis des Unterschieds zwischen einem Symbol und " +"einem Code: $ ist ein Symbol, USD ist ein Code." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Benutzerdefinierter Währungsbetragsstil" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Benutzerdefinierte Dezimal- und Gruppentrennzeichen für Währungen" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "Bis zu 2 Zeichen oder 1 Emoji." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Benutzerdefinierte Währungsdezimalziffern" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Passwort" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Jedes Konto kann durch ein Passwort geschützt werden. Das Hinzufügen eines " +"Passworts führt zur Verschlüsselung des Kontos (wodurch es unmöglich wird, " +"die Daten ohne Entschlüsselung mit dem Passwort zu lesen). Vorsicht: Wenn " +"das Passwort verloren geht, können die Daten nicht wiederhergestellt werden! " +"Ein Passwort kann auch über den Kontoeinstellungen-Dialog eines offenen " +"Kontos geändert oder entfernt werden. Das Entfernen eines Passworts " +"entschlüsselt das Konto." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Nach Kennung, Datum oder Betrag sortieren" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Sortierreihenfolge" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Gruppen-Sichtbarkeit" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Schlagwörter-Sichtbarkeit" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Konfiguration 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Konfiguration" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" +"Diese Seite beschreibt, was Sie in der Anwendungskonfiguration ändern können." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Thema" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Standardfarbe für Überweisungen" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Standardfarbe der Gruppe" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Dezimaltrennzeichen einfügen" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Importieren/Exportieren 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Importieren/Exportieren" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Importformate" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Die Daten sollten im Format JJJJMMTT sein." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" +"Die Daten sollten im englischen (US) Format (MM/TT/JJJJ) sein." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Überweisung" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Wiederholungs-Intervall" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Wiederholungs-Ende" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Tags" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Überweisung" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Business Account Color" +#~ msgstr "Geschäftskontofarbe" + +#~ msgid "Use Native Digits" +#~ msgstr "Native Ziffern verwenden" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV-Sicherungsordner" + +#~ msgid "2023" +#~ msgstr "2023" diff --git a/docs/po/denaro.pot b/docs/po/denaro.pot new file mode 100644 index 000000000..16e6de8fe --- /dev/null +++ b/docs/po/denaro.pot @@ -0,0 +1,708 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 +#: docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 +#: docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 +#: docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 +#: docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 +#: docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 +#: docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "When you create a new transaction its type by default will be the same as in this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "The size of decimal part of amount values. With \"Unlimited\" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "A color that will be used for transactions created using transfer. Changing this will not affect existing transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "This documentation will help you understand how to configure and manage data in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "End date for a transaction with repeat. It can't be earlier than or on the same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate." +msgstr "" + diff --git a/docs/po/es.po b/docs/po/es.po new file mode 100644 index 000000000..c484fa784 --- /dev/null +++ b/docs/po/es.po @@ -0,0 +1,1166 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-09-08 17:22+0000\n" +"Last-Translator: Óscar Fernández Díaz \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Óscar Fernández Díaz , 2023" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Cuenta 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Cuenta" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Esta página explica todas las propiedades de las cuentas en Denaro. La mayoría de ellas se muestran en Diálogo de configuración de la " +"cuenta. Este cuadro de diálogo también se abre automáticamente después " +"de crear una cuenta nueva." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Cada cuenta se almacena en un único archivo *.nmoney. Los " +"archivos creados en una versión estable anterior de Denaro pueden abrirse con seguridad en una versión estable más " +"reciente de la aplicación. Aunque la aplicación puede funcionar en " +"diferentes plataformas (Windows y Linux), los archivos *.nmoney " +"son 100% compatibles entre plataformas siempre que sean de la misma versión " +"de la aplicación (p.ej. V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Las versiones inestables (Beta y RC) de la aplicación pueden contener " +"errores o modificaciones inacabadas que pueden causar la pérdida de datos. " +"¡No use archivos de cuenta que contengan datos reales en versiones " +"inestables de la aplicación!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nombre" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"El nombre de la cuenta se muestra en la lista de cuentas recientes y en las " +"pestañas. Un nombre no tiene límite de longitud y puede contener cualquier " +"carácter, incluidos emojis." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Tipo de cuenta" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Hay 3 tipos de cuenta disponibles: 🟣Corriente, 🔵Ahorros " +"y 🟢Empresas. El tipo de cuenta es sólo una etiqueta útil que se " +"muestra en la lista de cuentas recientes y no afecta al funcionamiento de la " +"aplicación ni a lo que se puede hacer con una cuenta. Cada tipo de cuenta " +"tiene su propio color, estos colores se pueden configurar en la configuración global." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Tipo de transacción predeterminado" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Cuando crea una transacción nueva, su tipo predeterminado será el mismo que " +"en esta configuración." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Umbral de recordatorios de las transacciones" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" +"El umbral usado cuando se muestran los recordatorios de las próximas " +"transacciones." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Moneda del sistema" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Cada vez que se inicia la aplicación, obtiene datos sobre el formato de la " +"moneda y los números de la configuración regional de su sistema, y estos " +"datos se usan para mostrar el símbolo de la moneda (a menos que se use una " +"moneda personalizada, consulte a continuación) y para determinar en qué " +"formato se aceptarán los valores para los importes de las transacciones. " +"Algunos ejemplos:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"Si su idioma es inglés (EE. UU.), el símbolo de moneda se " +"establecerá en $ y se aceptará 1,000.00 como un número " +"válido." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"Si su configuración regional es italiana, el símbolo de moneda se " +"establecerá en y se aceptará 1.000,00 como un número " +"válido." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"Si su configuración regional es ruso, el símbolo de moneda se " +"establecerá en y se aceptará 1000,00 como un número " +"válido." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"En Linux, es posible establecer diferentes configuraciones regionales para " +"el idioma y los formatos del sistema. La modificación de estos ajustes varía " +"en función del entorno de escritorio que use. A pesar de las diferencias en " +"la ubicación de estos ajustes en el escritorio, cambiar estos ajustes " +"modifica las variables de entorno del sistema, como LANG, " +"LC_TIME y LC_MONETARY. Denaro intentará " +"usar los formatos de cantidad y fecha de acuerdo a estas variables. Si la " +"aplicación falla al usar los formatos esperados, por favor asegúrese de que " +"las variables están configuradas correctamente a través del comando " +"locale en un terminal. Si ha encontrado un error y desea " +"informar de ello, por favor proporcione la salida del comando locale para permitir a los desarrolladores reproducir su problema con la " +"misma configuración." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Usar moneda personalizada" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"Si esta opción está activada, se usará Símbolo de moneda personalizado en lugar del símbolo de moneda proporcionado por la configuración " +"regional de su sistema." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Símbolo de moneda personalizado" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "Hasta 3 caracteres o 1 emoji. No puede ser un número." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Código de moneda personalizado" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "Hasta 3 caracteres o 1 emoji." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Un ejemplo para entender la diferencia entre un símbolo y un código: $ es un símbolo, USD es un código." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Estilo del total de monedas personalizado" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "Elija entre mostrar las cantidades de una de las siguientes maneras:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Separadores decimales y de grupo personalizados" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "Hasta 2 caracteres o 1 emoji." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Dígitos decimales de moneda personalizados" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"El tamaño de la parte decimal de los valores de importe. Con dígitos " +"\"ilimitados\" habrá tantos números en la parte decimal como sean necesarios " +"para mostrar el importe exacto, pero no habrá parte decimal si el importe es " +"un número entero." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Contraseña" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Cada cuenta puede protegerse con una contraseña. Si añade una contraseña, la " +"cuenta quedará encriptada (por lo que será imposible leer los datos sin " +"desencriptarlos con la contraseña). Cuidado: si pierde la contraseña, no " +"podrá recuperar los datos. La contraseña también puede cambiarse o " +"eliminarse desde el cuadro de diálogo de configuración de una cuenta " +"abierta. Al eliminar la contraseña, la cuenta quedará descifrada." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Ordenar por id, fecha o cantidad" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"Cada cuenta almacena si ordena las transacciones en la ventana principal por " +"su id, fecha o cantidad. Cada vez que cambie esto, se guardará en el archivo " +"de la cuenta y se restaurará cuando vuelva a abrir la cuenta." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Orden de clasificación" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"Cada cuenta almacena información sobre el orden de las transacciones en la " +"ventana principal. Cada vez que cambie esto, se guardará en el archivo de la " +"cuenta y se restaurará cuando vuelva a abrir la cuenta." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Visibilidad de grupos" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Cada cuenta almacena información sobre si la lista de grupos en la ventana " +"principal está oculta o no. Cada vez que cambia la visibilidad de la lista " +"de grupos, se guarda y luego se restaura cuando vuelve a abrir la cuenta." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Visibilidad de las etiquetas" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Cada cuenta almacena información sobre si la lista de las etiquetas de la " +"ventana principal está oculta o no. Cada vez que cambie la visibilidad de la " +"lista de las etiquetas, se guarda y después se restaura cuando vuelva a " +"abrir la cuenta." + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Configuración 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Configuración" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" +"Esta página describe lo que puede cambiar en la configuración de la " +"aplicación." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"Dependiendo de su plataforma, en la interfaz de la aplicación, la " +"configuración se denomina Preferencias o Configuración." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Tema" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"Establezca un tema claro u oscuro, o haga que Denaro siga el tema " +"de su sistema. Cambiar esto en Windows requiere que se reinicie la " +"aplicación para aplicar." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Color de transacción predeterminado" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"Un color que se seleccionará por defecto al agregar una transacción nueva con color único. Cambiar esto " +"no afectará las transacciones existentes, incluso si usa el color " +"predeterminado seleccionado previamente." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Color predeterminado de la transferencia" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"Un color que se usará para transacciones creadas usando transferencia. Cambiar esto no afectará las " +"transacciones existentes." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Color predeterminado del grupo" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"Color que se seleccionará por defecto al añadir un grupo nuevo. También es " +"un color para el grupo \"No agrupado\"." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Insertar separador decimal" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"Establece para qué teclas pulsadas se insertará el separador decimal de la " +"configuración regional en un campo de importe: punto del teclado numérico, " +"cualquier punto y coma, o ninguno. Si el separador decimal ya aparece en un " +"campo, no se insertará." + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Importar/Exportar 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Importar/Exportar" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formatos de importación" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Las fechas deben estar en formato AAAMMDD." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" +"Las fechas deben estar en formato inglés (EE. UU.) (MM/DD/AAAA)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ Si bien CSV es un formato común y algunos bancos permiten a sus usuarios " +"exportar información como CSV, estos archivos son, de hecho, tablas que " +"pueden contener datos arbitrarios. La importación de un archivo CSV creado " +"en otro programa fallará porque sus datos no serán compatibles con lo que " +"Denaro intenta obtener de un archivo. El propósito de importar/" +"exportar CSV es proporcionar una forma de agregar datos a una cuenta " +"mediante programas externos, como editores de texto y paquetes de oficina. " +"La importación solo agregará nuevas transacciones sin anular las existentes. " +"Si desea crear un archivo CSV manualmente, este es el encabezado que incluye " +"todas las columnas que Denaro espera encontrar:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" +"Id de transacción, debe ser único para una cuenta determinada. Los ids " +"empiezan por 1." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"La fecha de la transacción (o fecha de inicio en caso de transacción " +"repetida), debe estar en formato inglés (EE. UU.) (MM/DD/AAAA)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" +"Descripción de la transacción, puede contener cualquier carácter excepto " +"punto y coma." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "Tipo de transacción: 0 para ingresos, 1 para gastos." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "Un número que representa el intervalo de repetición de la transacción:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Nunca" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Diario" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Semanal" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Quincenal" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Mensual" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Trimestral" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Anual" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Bianual" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"Véase Intervalo de repetición en la página de transacción para obtener más información sobre " +"las transacciones repetidas." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"Debe ser un id de transacción de origen o 0 si es una transacción de origen " +"o -1 si no es una transacción repetida." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"Fecha de finalización de la transacción repetida, debe estar en formato " +"inglés (EE. UU.) (MM/DD/AAAA). Déjelo vacío si no es una " +"transacción repetida." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" +"Importe de la transacción en formato inglés (US) (123,456.78)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Color de la transacción, debe estar en formato rgb(R,G,B) donde " +"R, G y B son enteros en un rango entre 0 y 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" +"Si una transacción debe usar el color de grupo: 0 - falso, 1 - verdadero." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"Id de grupo de la transacción. Los ids empiezan por 1. Para una transacción " +"no agrupada debe ser -1 (no 0, este es un valor incorrecto para el id de " +"grupo)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"Nombre del grupo de la transacción, debe coincidir con el id del grupo. " +"Puede contener cualquier carácter excepto punto y coma. Déjelo vacío para " +"transacciones no agrupadas, en cualquier otro caso no debería estar vacío." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"Descripción del grupo de la transacción, debe coincidir con el id del grupo. " +"Puede contener cualquier carácter excepto punto y coma y puede estar vacía. " +"Déjelo vacío para transacciones no agrupadas." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Color del grupo, debe estar en formato rgb(R,G,B) donde R, " +"G y B son números enteros comprendidos entre 0 y 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "Los recibos y notas no están presentes en CSV." + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formatos de exportación" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"Puede seleccionar si desea exportar toda la información o sólo la de la " +"vista actual. Si selecciona la vista actual, las transacciones mostradas " +"actualmente se exportarán en el mismo orden en que se muestran." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"Un archivo contendrá la información de una cuenta, una lista de " +"transacciones e imágenes de recibos. Las transacciones están coloreadas como " +"en la aplicación, pero los colores se modifican haciéndolos " +"semitransparentes para que el texto negro siempre sea claramente visible. " +"Puede establecer una contraseña para un archivo exportado." + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Ayuda de Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Ayuda de Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Ayuda de Denaro" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"Esta documentación lo ayudará a comprender cómo configurar y administrar " +"datos en Denaro para aprovechar al máximo la aplicación." + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"Para obtener soporte, use incidencias o discusiones en Github, o únase a nuestro canal Matrix." + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transacción 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transacción" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" +"Esta página explica todas las propiedades de las transacciones en " +"Denaro." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "Id" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"Cada transacción tiene una identificación que es única para una cuenta " +"determinada. Los identificadores comienzan con 1 y aumentan con cada " +"transacción agregada. Los ID no se pueden cambiar, los ID de las " +"transacciones eliminadas no se reusan." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Descripción" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "Sin límite de longitud. No puede contener punto y coma." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Cantidad" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"Un número en un formato que sea válido para su región, consulte Moneda " +"del sistema en Página de la cuenta para " +"obtener detalles." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Tipo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"Ingresos o Gastos. De forma predeterminada, el elegido en " +"configuración de la cuenta se seleccionará " +"cuando abra un cuadro de diálogo para agregar una transacción nueva." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Fecha" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"Se puede seleccionar cualquier fecha, también puede crear transacciones para " +"fechas futuras." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Intervalo de repetición" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"Use esta opción para crear una transacción recurrente. Después de agregar " +"una transacción con un intervalo de repetición, esta transacción se " +"convertirá en una transacción de origen. Denaro generará " +"automáticamente transacciones repetidas para las fechas hasta hoy o " +"una fecha de finalización proporcionada si se estableció en el pasado. Las " +"transacciones repetidas no se pueden editar ni eliminar, solo se " +"puede modificar origen. Cuando modifique la transacción fuente, Denaro le preguntará si desea modificar o desasociar las " +"transacciones repetidas. Si elige desasociar, las transacciones " +"repetidas se convierten en transacciones normales y se pueden " +"editar o eliminar por separado." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Repetir fecha final" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"Fecha de finalización de una transacción con repetición. No puede ser " +"anterior o el mismo día que la fecha de inicio." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Grupo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"Cada transacción puede pertenecer a un solo grupo o a ninguno (grupo \"No " +"agrupado\")." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Color" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"Un color para la transacción. Puede configurarse para usar un color de grupo " +"o un color único. Al seleccionar un color único, se establecerá por defecto " +"el color seleccionado en la configuración, pero puede cambiarse a cualquier color." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Etiquetas" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"Una lista de etiquetas para la transacción. Una transacción puede tener un " +"número ilimitado de etiquetas (o no tener etiquetas). Las etiquetas pueden " +"contener cualquier carácter excepto una coma (,) y tener " +"cualquier longitud, pero se espera que sean palabras clave cortas. Las " +"etiquetas están destinadas a usarse para el filtrado adicional cuando el uso " +"de los grupos no es suficiente. Las etiquetas solo se guardan en las " +"transacciones mismas y, como un resultado, las etiquetas no usadas " +"desaparecen automáticamente al cerrar la cuenta." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Recibo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"Una imagen de un recibo de transacción. Puede cargar una imagen JPEG o PNG o " +"un documento PDF, pero sin importar el formato, se convertirá y se guardará " +"como una imagen JPEG. En caso de PDF, solo se guardará la primera página. " +"Puede eliminar o cargar otro archivo en cualquier momento." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Notas" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "Una nota de texto libre para adjuntar a la transacción." + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Transferencia 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Transferencia" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"La transferencia es una forma de mover dinero de una cuenta a otra. Después " +"de ejecutar una transferencia, se crearán 2 transacciones con las siguientes " +"descripciones:" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" +"«Transferencia a Nombre de la cuenta de destino» en la cuenta " +"de origen." + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" +"«Transferencia desde Nombre de la cuenta de origen» en la " +"cuenta de destino." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"Las transacciones creadas mediante la transferencia son transacciones " +"simples que se pueden editar o eliminar libremente. Estas transacciones no " +"están conectadas: la modificación de la transacción en la cuenta de origen " +"no afectará la transacción en la cuenta de destino y viceversa." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"La transferencia no le permite crear transacciones repetitivas ni establecer " +"ninguna otra propiedad que no sea la cantidad. El color seleccionado en " +"configuration se usará para las " +"transacciones creadas." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"Si crea una transferencia entre cuentas con divisas diferentes, se le pedirá " +"que indique un tipo de conversión." + +#~ msgid "Checking Account Color" +#~ msgstr "Color de la cuenta corriente" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "Color usado para marcar cuentas con el tipo " +#~ "Corriente en una lista de cuentas recientes." + +#~ msgid "Savings Account Color" +#~ msgstr "Color de la cuenta de ahorros" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "Color usado para marcar cuentas con el tipo " +#~ "Ahorros en una lista de cuentas recientes." + +#~ msgid "Business Account Color" +#~ msgstr "Color de la cuenta de la empresa" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "Color usado para marcar cuentas con el tipo " +#~ "Empresas en una lista de cuentas recientes." + +#~ msgid "Use Native Digits" +#~ msgstr "Usar dígitos nativos" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "Si usar numerales que son nativos para su localización en lugar de " +#~ "dígitos latinos. Por ejemplo, si esta opción está activada ٠١٢ " +#~ "se usará en lugar de 012 para las localizaciones que usan " +#~ "numerales arábigos orientales." + +#~ msgid "CSV Backup Folder" +#~ msgstr "Carpeta de copia de seguridad CSV" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "Una carpeta donde sus datos se exportarán a " +#~ "CSV después de cada cambio. Esta función no funciona con cuentas " +#~ "protegidas con contraseña, ya que los archivos CSV no pueden protegerse " +#~ "con contraseña." + +#~ msgid "2023" +#~ msgstr "2023" diff --git a/docs/po/et.po b/docs/po/et.po new file mode 100644 index 000000000..8e6f08109 --- /dev/null +++ b/docs/po/et.po @@ -0,0 +1,882 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/fi.po b/docs/po/fi.po new file mode 100644 index 000000000..36a39e44a --- /dev/null +++ b/docs/po/fi.po @@ -0,0 +1,885 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-08-24 20:09+0000\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Tunnisteet" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/fr.po b/docs/po/fr.po new file mode 100644 index 000000000..6402fa997 --- /dev/null +++ b/docs/po/fr.po @@ -0,0 +1,1177 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-11-15 11:53+0000\n" +"Last-Translator: rene-coty \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.2-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Irénée Thirion" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Compte 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Compte" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Cette page explique toutes les propriétés des comptes dans Denaro. La plupart sont affichées dans la boîte de dialogue des " +"Paramètres du compte. Cette boîte de dialogue s’ouvre automatiquement " +"à la création d’un nouveau compte." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Chaque compte est enregistré dans un fichier *.nmoney. Les " +"fichiers créés dans une ancienne version stable de Denaro peuvent être ouverts sans risque dans une version stable plus " +"récente de l’application. Bien que l’application puisse être exécutée sous " +"plusieurs plateformes (Windows et Linux), les fichiers *.nmoney " +"sont 100% compatibles entre ces plateformes, tant qu’ils proviennent de la " +"même version de l’application (i.e. V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Les version instables (Beta et RC) de l’application peuvent contenir des " +"bogues ou des modifications inachevées pouvant causer des pertes de données. " +"N'UTILISEZ PAS des fichiers de comptes contenant vos vraies données dans des " +"versions instables de l’application !" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nom" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"Le nom du compte est affiché dans la liste des comptes récents et dans les " +"onglets. Un nom n’a pas de limite de taille et peut contenir n’importe quel " +"caractère, dont des émojis." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Type de compte" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Il y a trois types de comptes possibles : 🟣Chèques, 🔵Épargne et 🟢Affaires. Le type de compte est uniquement une étiquette " +"utile affichée dans la liste des comptes récents et n’affecte ni le " +"fonctionnement de l’application ni les actions possibles avec un compte. " +"Chaque type de compte a sa propre couleur, qui peut être configurée dans les " +"paramètres généraux." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Type de transaction par défaut" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Lorsque vous créerez une nouvelle transaction, son type par défaut sera le " +"même que dans ce paramètre." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Seuil de rappel des transactions" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "Le seuil utilisé pour afficher des rappels des transactions à venir." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Devise du système" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Chaque fois que l’application est lancée, elle récupère les données sur la " +"monnaie et le format numérique de la langue locale de votre système ; ces " +"données sont utilisées pour afficher le symbole monétaire (à moins qu’une " +"devise personnalisée soit spécifiée, voir ci-dessous) et pour déterminer " +"dans quel format les nombres seront acceptés comme des valeurs pour des " +"montants de transactions. Quelques exemples :" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"Si votre langue locale est l’Anglais (US), le symbole monétaire " +"sera $ et 1,000.00 sera accepté comme une valeur numérique " +"valide." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"Si votre langue locale est l’Italien, le symbole monétaire sera " +" et 1.000,00 sera accepté comme une valeur numérique " +"valide." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"Si votre langue locale est le Russe, le symbole monétaire sera " +" et 1000,00 sera accepté comme une valeur numérique " +"valide." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"Sous Linux il est possible de définir plusieurs langues locales et formats " +"numériques. La manière de modifier ce paramètre varie selon l’environnement " +"de bureau utilisé. Malgré ces différences dans l’emplacement de ces " +"paramètres, les modifier affecte des variables de l’environnement du " +"système, comme LANG, LC_TIME, et " +"LC_MONETARY. Denaro essaiera d’utiliser les formats " +"numériques et de langue selon ces variables. Si l’application échoue à " +"utiliser les formats attendus, assurez-vous que les variables sont " +"correctement définies via la commande locale dans un terminal. " +"Si vous trouvez un bogue et souhaitez le signaler, veillez fournir le " +"résultat donné par la commande locale pour permettre aux " +"développeurs de reproduire votre problème avec les mêmes paramètres." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Utiliser une devise personnalisée" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"Si cette option est activée, un Symbole monétaire personnalisé " +"sera utilisé à la place de celui fourni par la langue locale de votre " +"système." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Symbole monétaire personnalisé" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "Jusqu’à trois caractères ou 1 émoji. Il ne peut s’agir d’un nombre." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Code de devise personnalisé" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "Jusqu’à trois caractères ou 1 émoji." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Un exemple pour comprendre la différence entre un symbole et un code : " +"$ est un symbole, USD est un code." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Style d’affichage personnalisé des montants de devises" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" +"Un choix entre plusieurs affichages possibles pour les montants de devises :" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Séparateur de décimales et de groupes personnalisé" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "Jusqu’à 2 caractères ou 1 émoji." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Chiffres des décimales personnalisés" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"La taille des décimales de la valeur d’un montant. Avec des chiffres " +"« Illimités » la taille des décimales sera celle requise pour afficher le " +"montant précis, mais il n’y aura pas de décimales si le montant est un " +"nombre entier." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Mot de passe" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Chaque compte peut être protégé par un mot de passe. Ajouter un mot de passe " +"cryptera le compte (ce qui rendra la lecture des données impossible sans " +"décryptage avec le bon mot de passe). Soyez prudent⋅e : si le mot de passe " +"est perdu, vous ne pourrez pas récupérer les données ! Un mot de passe peut " +"également être changé ou supprimé en utilisant la boîte de dialogue des " +"paramètres du compte. Supprimer un mot de passe décryptera le compte." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Trier par identifiant, date ou montant" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"Au sein de chaque compte vous pouvez trier les transactions dans la fenêtre " +"principale par identifiant, date ou montant. Chaque fois que vous le " +"modifierez, le tri sera enregistré dans le fichier du compte et restauré à " +"la prochaine ouverture." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Ordre de tri" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"Au sein de chaque compte vous pouvez modifier l’ordre des transactions dans " +"la fenêtre principale. Chaque fois que vous modifierez l’ordre de tri, celui-" +"ci sera enregistré dans le fichier du compte et restauré à la prochaine " +"ouverture." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Visibilité des groupes" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Chaque compte enregistre l’état affiché ou masqué de la liste des groupes " +"dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de " +"la liste des groupes, ce paramètre sera enregistré puis restauré à la " +"prochaine ouverture." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Visibilité des étiquettes" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Chaque compte enregistre l’état affiché ou masqué de la liste des étiquettes " +"dans la fenêtre principale. Chaque fois que vous modifierez la visibilité de " +"la liste des étiquettes, ce paramètre sera enregistré puis restauré à la " +"prochaine ouverture." + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Configuration 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Configuration" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" +"Cette page décrit ce que vous pouvez modifier dans la configuration de " +"l’application." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"Dépendant de votre plateforme, la configuration apparaît dans l’interface de " +"l’application sous le vocable Préférences ou Paramètres." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Thème" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"Définissez un thème sombre ou clair, ou faites en sorte que Denaro suive celui du système. Le changement de ce paramètre sous Windows " +"requiert un redémarrage de l’application." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Couleur par défaut des transactions" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"Une couleur qui sera sélectionnée par défaut lors de l’ajout d’une nouvelle " +"transaction avec une couleur unique. " +"Changer ce paramètre n’affectera pas les transactions existantes, même si " +"elles utilisaient la couleur par défaut précédemment sélectionnée." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Couleur par défaut des transferts" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"Une couleur qui sera utilisée pour les transactions créées par un transfert. Changer ce paramètre n’affectera pas les " +"transactions existantes." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Couleur de groupe par défaut" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"Couleur sélectionnée par défaut lorsqu’un nouveau groupe sera ajouté. C’est " +"également la couleur du groupe « Sans groupe »." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Insérer un séparateur de décimales" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"Définissez pour quelles touches pressées le séparateur décimal de la langue " +"locale sera inséré lors de la saisie d’un montant : point du pavé numérique, " +"n’importe quel point ou virgule du clavier, ou aucune. Si le séparateur des " +"décimales est déjà présent dans le champ de saisie, il ne sera pas inséré." + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Importer / Exporter 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Importer / Exporter" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formats d’importation" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Les dates devraient être au format AAAAMMJJ." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "Les dates devraient être au format Anglais (US) (MM/JJ/AAAA)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ Bien que le format CSV soit courant et que certaines banques permettent à " +"leurs utilisateurs d’exporter des informations au format CSV, ces fichiers " +"sont en fait des tableaux qui peuvent contenir n’importe quelles données. " +"L’importation d’un fichier CSV créé dans un autre programme échouera, car " +"ses données ne seront pas compatibles avec ce que Denaro tentera " +"d’obtenir du fichier. L’objectif de l’importation/exportation de fichiers " +"CSV est de fournir un moyen d’ajouter des données à un compte à l’aide de " +"programmes externes tels que des éditeurs de texte et des suites " +"bureautiques. L’importation n’ajoutera que les nouvelles transactions sans " +"remplacer les transactions existantes. Si vous souhaitez créer un fichier " +"CSV manuellement, voici l’en-tête qui inclut toutes les colonnes que " +"Denaro s’attend à trouver :" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" +"Identification de transaction, devrait être unique pour un compte donné. Les " +"identifiants commencent à 1." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"La date de la transaction (ou la date de départ dans le cas d’une " +"transaction répétée), devrait être au format américain (MM/JJ/AAAA)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" +"Description de la transaction, elle peut contenir n’importe quel caractère " +"sauf des points-virgules." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "Type de transaction : 0 pour un revenu, 1 pour une dépense." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "Un nombre représentant un intervalle de répétition de la transaction :" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Jamais" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Quotidien" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Hebdomadaire" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Bi-hebdomadaire" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Mensuel" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Trimestriel" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Annuel" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Bi-annuel" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"Voir Intervalle de répétition dans la page des transactions pour des détails sur les " +"transactions répétées." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"Devrait être soit un identifiant de transaction source, ou 0 si c’est une " +"transaction source, ou -1 si ce n’est pas une transaction répétée." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"Date de fin pour la transaction répétée ; elle devrait être au format " +"américain (MM/JJ/AAAA). Laissez-la vide si ce n’est pas une " +"transaction répétée." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "Montant de la transaction au format américain (123,456.78)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Couleur de la transaction ; elle devrait être au format rgb (R,G,B)) où R, G et B sont des nombres entiers " +"compris entre 0 et 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" +"Indique si une transaction devrait utiliser le groupe de couleur : 0 — non, " +"1 — oui." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"Identifiant du groupe de transactions. Les identifiant commencent à 1. Pour " +"les transactions sans groupe, ce devrait être -1 (et non pas 0 qui est une " +"valeur incorrecte pour un identifiant de groupe)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"Nom du groupe de transactions ; il devrait correspondre à l’identifiant du " +"groupe. Il peut contenir n’importe quel caractère, à l’exception des points-" +"virgules. Laissez-le vide pour les transactions sans groupe ; dans tous les " +"autres cas il ne devrait pas être vide." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"Description du groupe de transactions ; elle devrait correspondre à " +"l’identifiant du groupe. Elle peut contenir n’importe quel caractère à " +"l’exception des points-virgules. Laissez-la vide pour les transactions sans " +"groupe." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Couleur du groupe ; elle devrait être au format rgb(R,G,B) où " +"R, G et B sont des nombres entiers compris entre " +"0 et 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "Les reçus et les notes ne sont pas présents dans le fichier CSV." + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formats d’exportation" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"Vous pouvez choisir d’exporter toutes les informations ou seulement celles " +"de la vue actuelle. Si vous sélectionnez cette dernière option, les " +"transactions actuellement affichées seront exportées dans le même ordre que " +"celui dans lequel elles apparaissent." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"Un fichier contiendra les informations du compte, une liste des transactions " +"et les images des reçus. Les transactions seront colorées comme dans " +"l’application, mais les couleurs seront modifiées en étant rendues à moitié " +"transparentes pour que le texte en noir reste toujours visible. Vous pouvez " +"définir un mot de passe pour le fichier exporté." + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Aide de Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Aide de Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Aide de Denaro" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"Cette documentation vous aidera à comprendre comment configurer et gérer vos " +"données dans Denaro pour tirer le meilleur parti de l’application." + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"Pour obtenir de l’assistance, utilisez les signalements ou discussions sur " +"Github, ou rejoignez notre salon " +"Matrix." + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transaction 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transaction" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" +"Cette page explique toutes les propriétés des transactions dans Denaro." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "Identifiant" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"Chaque transaction a un identifiant unique pour un compte donné. Les " +"identifiants commencent avec 1 et augmentent pour chaque transaction " +"ajoutée. Les identifiants ne peuvent être modifiés, et les identifiants des " +"transactions supprimées ne sont pas réutilisés." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Description" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "Pas de limite de taille. Elle ne peut contenir des points-virgules." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Montant" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"Un nombre dans un format valide pour votre langue locale, voir Devise du " +"système dans la page du compte pour plus " +"de détails." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Type" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"Revenu ou Dépense. Par défaut la valeur choisie dans les " +"Paramètres du compte sera sélectionnée lorsque " +"vous ouvrirez une boîte de dialogue pour ajouter une nouvelle transaction." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Date" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"N’importe quelle date peut être sélectionnée, vous pouvez aussi créer des " +"transactions pour des dates futures." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Intervalle de répétition" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"Utilisez cette option pour créer une transaction récurrente. Après avoir " +"ajouté la transaction avec l’intervalle de répétition, celle-ci deviendra " +"une transaction source. Denaro générera automatiquement " +"des transactions répétées pour les dates indiquées à partir " +"d’aujourdhui ou jusqu’à la date de fin définie. Les transactions " +"répétées ne peuvent pas être modifiées ou supprimées, mais " +"seulement leur source. Lorsque vous modifierez la transaction " +"source, Denaro vous demandera si vous souhaiter modifier " +"ou dissocier les transactions répétées. Si vous choisissez la " +"dissociation, les transactions répétées deviendront des " +"transactions normales et pourront être modifiées ou supprimées séparément." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Date de fin de répétition" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"Date de fin d’une transaction récurrente. Elle ne peut pas être avant ou le " +"même jour que la date de début." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Groupe" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"Chaque transaction peut appartenir à un ou bien à aucun groupe (groupe " +"« Sans groupe »)." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Couleur" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"Une couleur pour les transactions. Elle peut être définie pour utiliser un " +"groupe de couleur ou une couleur unique. Lors de la sélection d’une couleur " +"unique, elle sera définie par défaut comme la couleur sélectionnée dans la " +"configuration, mais peut être modifiée " +"en n’importe quelle couleur." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Étiquettes" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"Une liste d’étiquettes pour les transactions. Une transaction peut avoir un " +"nombre illimité d’étiquettes (ou ne pas en avoir). Les étiquettes peuvent " +"contenir n’importe quel caractère sauf des virgules (,), et " +"peuvent avoir n’importe quelle longueur, bien qu’elles soient conçues pour " +"de courts mots-clés. Les étiquettes sont conçues pour être utilisées pour " +"obtenir un filtrage additionnel quand l’utilisation des groupes ne suffit " +"pas. Les étiquettes sont uniquement enregistrées dans les transactions elles-" +"mêmes, et ainsi celles non utilisées disparaissent automatiquement à la " +"fermeture du compte." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Reçu" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"Image d’un reçu pour une transaction. Vous pouvez téléverser des images " +"JPEG, PNG ou un document PDF, mais peut importe le format il sera converti " +"et enregistré en tant qu’image JPEG. Dans le cas d’un PDF, seule la première " +"page sera enregistrée. Vous pouvez supprimer le fichier ou en téléverser un " +"autre à tout moment." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Notes" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "Un texte de forme libre qui peut être joint à la transaction." + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Transfert 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Transfert" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"Le transfert est un moyen de déplacer de l’argent d’un compte à un autre. " +"Après avoir opéré un transfert, 2 transactions seront créées avec les " +"descriptions suivantes :" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" +"« Transfert vers Nom du compte récipiendaire » dans le compte " +"source." + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" +"« Transfert depuis Nom du compte source » dans le compte " +"destinataire." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"Les transactions créées par un transfert sont de simples transactions qui " +"peuvent être supprimées ou modifiées sans risque. Ces transactions ne sont " +"pas connectées : la modification de la transaction sur le compte source " +"n’affectera pas la celle sur le compte destinataire, et vice versa." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"Le transfert ne vous permet pas de créer des transactions répétées ou de " +"définir une autre propriété que le montant. La couleur sélectionnée dans la " +"configuration sera utilisée pour les " +"transactions créées." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"Si vous créez un transfert entre des comptes avec différentes devises, il " +"vous sera demander de fournir un taux de change." + +#~ msgid "Checking Account Color" +#~ msgstr "Couleur des comptes de chèques" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "Couleur utilisée pour marquer les comptes " +#~ "avec le type Chèques dans une liste des comptes récents." + +#~ msgid "Savings Account Color" +#~ msgstr "Couleur des comptes d’épargne" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "Couleur utilisée pour marquer les comptes " +#~ "avec le type Épargne dans une liste des comptes récents." + +#~ msgid "Business Account Color" +#~ msgstr "Couleur du compte d’affaires" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "Couleur utilisée pour marquer les comptes " +#~ "avec le type affaires dans une liste des comptes récents." + +#~ msgid "Use Native Digits" +#~ msgstr "Utiliser des chiffres natifs" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "Indique s’il faut utiliser des chiffres natifs de votre langue à la place " +#~ "de chiffres latins. Par exemple, si ce paramètre est activé ٠١٢ " +#~ "sera utilisé à la place de 012 pour les langues locales " +#~ "utilisant des chiffres de l’arabe oriental." + +#~ msgid "CSV Backup Folder" +#~ msgstr "Dossier de sauvegarde CSV" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "Un dossier où vos données seront automatiquement exportées au format CSV après chaque modification. Cette " +#~ "fonctionnalité ne fonctionne pas pour les comptes protégés par mot de " +#~ "passe, car les fichiers CSV ne peuvent être protégés par un mot de passe." + +#~ msgid "2023" +#~ msgstr "2023" diff --git a/docs/po/gl.po b/docs/po/gl.po new file mode 100644 index 000000000..9875589e7 --- /dev/null +++ b/docs/po/gl.po @@ -0,0 +1,885 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-10-20 04:03+0000\n" +"Last-Translator: Nicolás Vieites Sueiro \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.1\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nome" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Tipo de conta" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Descrición" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Importe" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Data" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Grupo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Apuntamentos" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/hi.po b/docs/po/hi.po new file mode 100644 index 000000000..bc40195ae --- /dev/null +++ b/docs/po/hi.po @@ -0,0 +1,1101 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2024-03-29 13:01+0000\n" +"Last-Translator: Scrambled777 \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Scrambled777 " + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "खाता 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "फ्योडोर सोबोलेव" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "निकोलस लोगोज़ो" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "खाता" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"यह पृष्ठ Denaro में खातों की सभी संपत्तियों की व्याख्या करता है। उनमें से " +"अधिकांश खाता सेटिंग डायलॉग में दिखाए गए हैं। नया खाता बनाने के बाद यह संवाद " +"भी स्वतः खुल जाता है।" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"प्रत्येक खाता एक एकल *.nmoney फ़ाइल में संग्रहीत है। Denaro के " +"पुराने स्थिर वर्शन में बनाई गई फाइलें एप्लिकेशन के नवीनतम स्थिर वर्शन में " +"सुरक्षित रूप से खोली जा सकती हैं। हालाँकि ऐप विभिन्न प्लेटफ़ॉर्म (Windows और Linux) पर " +"चल सकता है, *.nmoney फाइलें प्लेटफ़ॉर्म के बीच 100% संगत हैं, जब तक कि वे " +"एक ही एप्लिकेशन वर्शन (यानी V2023.1.0) से हैं।" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"एप्लिकेशन के अस्थिर (Beta और RC) वर्शन में बग या अधूरे संशोधन हो सकते हैं जो डेटा हानि का " +"कारण बन सकते हैं। ऐप के अस्थिर वर्शन में वास्तविक डेटा वाली खाता फाइलों का उपयोग न करें!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "नाम" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"खाते का नाम हाल के खातों की सूची और टैब में दिखाया गया है। नाम की लंबाई की कोई सीमा " +"नहीं होती और इसमें इमोजी सहित कोई भी अक्षर हो सकता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "खाते का प्रकार" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"3 खाता प्रकार उपलब्ध हैं: 🟣चेकिंग, 🔵बचत और 🟢व्यवसाय। " +"खाता प्रकार केवल एक उपयोगी लेबल है जो हाल के खातों की सूची में दिखाया गया है और यह " +"प्रभावित नहीं करता है कि एप्लिकेशन कैसे काम करता है या आप किसी खाते के साथ क्या कर सकते " +"हैं। प्रत्येक खाता प्रकार का अपना रंग होता है, इन रंगों को वैश्विक सेटिंग्स में कॉन्फ़िगर किया जा सकता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "डिफ़ॉल्ट लेनदेन प्रकार" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"जब आप कोई नया लेनदेन बनाते हैं तो डिफ़ॉल्ट रूप से उसका प्रकार इस सेटिंग के समान ही होगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "लेन-देन अनुस्मारक सीमा" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "आगामी लेनदेन के बारे में अनुस्मारक दिखाते समय उपयोग की जाने वाली सीमा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "सिस्टम मुद्रा" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"हर बार जब एप्लिकेशन शुरू होता है, तो उसे आपके सिस्टम लोकेल से मुद्रा और संख्या स्वरूपण के बारे " +"में डेटा मिलता है, और इस डेटा का उपयोग मुद्रा प्रतीक दिखाने के लिए किया जाता है (जब तक " +"कि कस्टम मुद्रा का उपयोग नहीं किया जाता है, नीचे देखें) और यह निर्धारित करने के लिए कि " +"संख्याओं को किस प्रारूप में स्वीकार किया जाएगा लेन-देन की रकम के लिए मान. कुछ उदाहरण:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"यदि आपका स्थान अंग्रेजी (US) है, तो मुद्रा प्रतीक $ पर सेट किया " +"जाएगा और 1,000.00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"यदि आपका स्थान इतालवी है, तो मुद्रा प्रतीक पर सेट किया जाएगा " +"और 1.000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"यदि आपका स्थान रूसी है, तो मुद्रा प्रतीक पर सेट किया जाएगा और " +"1000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"Linux पर, सिस्टम भाषा और प्रारूपों के लिए अलग-अलग स्थान सेट करना संभव है। इन सेटिंग्स को " +"बदलना आपके द्वारा उपयोग किए जा रहे डेस्कटॉप वातावरण के आधार पर भिन्न होता है। डेस्कटॉप " +"पर इन सेटिंग्स के स्थान में अंतर के बावजूद, इन सेटिंग्स को बदलने से सिस्टम पर्यावरण चर, जैसे " +"LANG, LC_TIME, और LC_MONETARY को " +"संशोधित किया जाता है। Denaro इन चरों के अनुसार राशि और दिनांक प्रारूपों का " +"उपयोग करने का प्रयास करेगा। यदि ऐप अपेक्षित प्रारूपों का उपयोग करने में विफल रहता है, तो " +"कृपया सुनिश्चित करें कि टर्मिनल में लोकेल कमांड के माध्यम से वेरिएबल सही ढंग से " +"सेट किए गए हैं। यदि आपको कोई बग मिला है और आप इसकी रिपोर्ट करना चाहते हैं, तो कृपया " +"लोकेल कमांड का आउटपुट प्रदान करें ताकि डेवलपर्स उसी सेटिंग्स के साथ आपकी " +"समस्या को पुन: उत्पन्न कर सकें।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "कस्टम मुद्रा का प्रयोग करें" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"यदि यह विकल्प सक्षम है, तो आपके सिस्टम लोकेल द्वारा प्रदान किए गए मुद्रा प्रतीक के बजाय " +"कस्टम मुद्रा प्रतीक का उपयोग किया जाएगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "कस्टम मुद्रा चिह्न" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "अधिकतम 3 अक्षर या 1 इमोजी. यह कोई संख्या नहीं हो सकती।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "कस्टम मुद्रा कोड" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "अधिकतम 3 अक्षर या 1 इमोजी।" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"प्रतीक और कोड के बीच अंतर को समझने के लिए एक उदाहरण: $ एक प्रतीक है, " +"USD एक कोड है।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "कस्टम मुद्रा राशि शैली" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "निम्नलिखित तरीकों में से किसी एक में राशि प्रदर्शित करने का विकल्प:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "कस्टम मुद्रा दशमलव और समूह विभाजक" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "अधिकतम 2 अक्षर या 1 इमोजी।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "कस्टम मुद्रा दशमलव अंक" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"राशि मानों के दशमलव भाग का आकार. \"असीमित\" अंकों के साथ दशमलव भाग में उतनी ही " +"संख्याएँ होंगी जितनी सटीक राशि दिखाने के लिए आवश्यक हैं, लेकिन यदि राशि एक पूर्णांक संख्या " +"है तो कोई दशमलव भाग नहीं होगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "पासवर्ड" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"प्रत्येक खाते को पासवर्ड से सुरक्षित किया जा सकता है। पासवर्ड जोड़ने से खाता एन्क्रिप्ट हो " +"जाता है (पासवर्ड का उपयोग करके डिक्रिप्ट किए बिना डेटा को पढ़ना असंभव हो जाता है)। " +"सावधान रहें: यदि पासवर्ड खो गया है, तो आप डेटा पुनर्स्थापित नहीं कर पाएंगे! किसी खुले खाते " +"के खाता सेटिंग संवाद का उपयोग करके पासवर्ड को बदला या हटाया भी जा सकता है। पासवर्ड " +"हटाने से खाता डिक्रिप्ट हो जाएगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Id, दिनांक या राशि के अनुसार क्रमबद्ध करें" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"प्रत्येक खाता यह संग्रहीत करता है कि लेन-देन को उनकी आईडी, दिनांक या राशि के आधार पर " +"मुख्य विंडो में क्रमबद्ध किया जाए या नहीं। हर बार जब आप इसे बदलते हैं, तो यह खाता फाइल में " +"सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो जाएगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "छँटाई क्रम" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"प्रत्येक खाता मुख्य विंडो में लेनदेन के क्रम के बारे में जानकारी संग्रहीत करता है। हर बार जब आप " +"इसे बदलते हैं, तो यह खाता फाइल में सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो " +"जाएगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "समूह दृश्यता" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में समूह सूची छिपी हुई है या " +"नहीं। हर बार जब आप समूह सूची की दृश्यता बदलते हैं, तो इसे सहेजा जाता है और फिर जब आप " +"खाता दोबारा खोलते हैं तो इसे बहाल कर दिया जाता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "टैग दृश्यता" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में टैग सूची छिपी हुई है या " +"नहीं। हर बार जब आप टैग सूची दृश्यता बदलते हैं, तो इसे सहेजा जाता है और फिर खाता दोबारा " +"खोलने पर इसे पुनर्स्थापित कर दिया जाता है।" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "कॉन्फ़िगरेशन 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "कॉन्फ़िगरेशन" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "यह पृष्ठ वर्णन करता है कि आप एप्लिकेशन कॉन्फ़िगरेशन में क्या बदल सकते हैं।" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"आपके प्लेटफ़ॉर्म के आधार पर, एप्लिकेशन इंटरफ़ेस में कॉन्फ़िगरेशन को प्राथमिकताएं या " +"सेटिंग्स के रूप में संदर्भित किया जाता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "थीम" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"प्रकाश या गहरे रंग की थीम सेट करें, या Denaro को अपने सिस्टम थीम का अनुसरण " +"करें। विंडोज़ पर इसे बदलने के लिए आवेदन को पुनः आरंभ करने की आवश्यकता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "लेन-देन डिफ़ॉल्ट रंग" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"एक रंग जो अद्वितीय रंग के साथ एक नया transaction जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। इसे बदलने से मौजूदा लेनदेन प्रभावित नहीं होंगे, " +"भले ही वे पहले से चयनित डिफ़ॉल्ट रंग का उपयोग करें।" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "डिफ़ॉल्ट रंग स्थानांतरित करें" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"एक रंग जिसका उपयोग transfer का उपयोग करके किए " +"गए लेनदेन के लिए किया जाएगा। इसे बदलने से मौजूदा लेनदेन पर कोई असर नहीं पड़ेगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "समूह डिफ़ॉल्ट रंग" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"एक रंग जो नया समूह जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। यह «अनग्रुप्ड» समूह के लिए भी एक " +"रंग है।" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "दशमलव विभाजक डालें" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"सेट करें कि कौन सी कुंजी दबाए जाने पर लोकेल का दशमलव विभाजक राशि फ़ील्ड में डाला जाएगा: " +"संख्यापैड अवधि, कोई भी अवधि और अल्पविराम, या कोई नहीं। यदि दशमलव विभाजक पहले से ही " +"किसी फ़ील्ड में प्रस्तुत किया गया है, तो इसे सम्मिलित नहीं किया जाएगा।" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "आयात/निर्यात 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "आयात/निर्यात" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "प्रारूप आयात करें" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "तिथियाँ YYYYMMDD प्रारूप में होनी चाहिए।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "तारीखें अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ जबकि CSV एक सामान्य प्रारूप है और कुछ बैंक अपने उपयोगकर्ताओं को CSV के रूप में जानकारी " +"निर्यात करने की अनुमति देते हैं, ये फाइलें वास्तव में तालिकाएं हैं जिनमें मनमाना डेटा हो सकता " +"है। अन्य प्रोग्राम में बनाई गई CSV फाइल को आयात करना विफल हो जाएगा, क्योंकि इसका डेटा " +"Denaro किसी फाइल से प्राप्त करने का प्रयास करने के साथ संगत नहीं होगा। CSV " +"आयात/निर्यात का उद्देश्य टेक्स्ट एडिटर्स और ऑफिस सुइट्स जैसे इक्स्टर्नल प्रोग्रामों का उपयोग " +"करके किसी खाते में डेटा जोड़ने का एक तरीका प्रदान करना है। आयात केवल मौजूदा लेन-देन को " +"ओवरराइड किए बिना नए लेन-देन जोड़ेगा। यदि आप मैन्युअल रूप से एक CSV फाइल बनाना चाहते हैं, " +"तो यह वह हेडर है जिसमें वे सभी कॉलम शामिल हैं जिन्हें Denaro ढूंढने की अपेक्षा " +"करता है:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "लेनदेन Id, किसी दिए गए खाते के लिए अद्वितीय होनी चाहिए। Ids 1 से शुरू होती हैं।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"लेन-देन की तारीख (या दोबारा लेन-देन के मामले में आरंभ की तारीख), अंग्रेजी (US) प्रारूप " +"(MM/DD/YYYY) में होनी चाहिए।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "लेन-देन विवरण, इसमें अर्धविराम को छोड़कर कोई भी वर्ण हो सकता है।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "लेन-देन प्रकार: आय के लिए 0, व्यय के लिए 1।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "लेन-देन दोहराव अंतराल का प्रतिनिधित्व करने वाली एक संख्या:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - कभी नहीं" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - प्रतिदिन" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - साप्ताहिक" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - द्विसाप्ताहिक" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - मासिक" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - त्रैमासिक" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - वार्षिक" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - द्विवार्षिक" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"बार-बार होने वाले लेनदेन के विवरण के लिए transaction पेज में Repeat Interval देखें।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"या तो स्रोत लेनदेन की Id होनी चाहिए या यदि यह स्रोत लेनदेन है तो 0 या यदि यह दोहराव " +"लेनदेन नहीं है तो -1 होना चाहिए।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"दोबारा लेन-देन की अंतिम तिथि अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी " +"चाहिए। यदि यह दोबारा लेनदेन नहीं है तो इसे खाली छोड़ दें।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "अंग्रेजी (US) प्रारूप में लेनदेन राशि (123,456.78)।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"लेन-देन का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "क्या लेन-देन में समूह रंग का उपयोग किया जाना चाहिए: 0 - गलत, 1 - सत्य।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"लेन-देन का समूह Id. Ids 1 से शुरू होती हैं। असमूहीकृत लेनदेन के लिए यह -1 होना चाहिए (0 " +"नहीं, यह समूह Id के लिए गलत मान है)।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"लेन-देन का समूह नाम, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर कोई भी वर्ण " +"हो सकता है। असमूहीकृत लेन-देन के लिए इसे खाली छोड़ दें, किसी भी अन्य स्थिति में यह खाली " +"नहीं होना चाहिए।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"लेन-देन का समूह विवरण, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर कोई भी " +"अक्षर हो सकता है और यह खाली हो सकता है। असमूहीकृत लेनदेन के लिए इसे खाली छोड़ दें।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"समूह का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, G " +"और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "रसीद और नोट्स CSV में मौजूद नहीं हैं।" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "निर्यात प्रारूप" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"आप चुन सकते हैं कि सारी जानकारी निर्यात करनी है या केवल वर्तमान दृश्य से। यदि आप वर्तमान " +"दृश्य का चयन करते हैं, तो वर्तमान में प्रदर्शित लेनदेन उसी क्रम में निर्यात किए जाएंगे जिसमें वे " +"दिखाए गए हैं।" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"एक फाइल में खाते की जानकारी, लेनदेन की एक सूची और प्राप्तियों की छवियां होंगी। लेन-देन " +"एप्लिकेशन की तरह रंगीन होते हैं, लेकिन काले पाठ को हमेशा स्पष्ट रूप से दिखाई देने के लिए रंगों " +"को आधा-पारदर्शी बनाकर संशोधित किया जाता है। आप किसी निर्यातित फाइल के लिए पासवर्ड " +"सेट कर सकते हैं।" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Denaro सहायता" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Denaro सहायता" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Denaro सहायता" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"यह दस्तावेज़ आपको यह समझने में सहायता करेगा कि एप्लिकेशन का अधिकतम लाभ उठाने के लिए " +"Denaro में डेटा को कैसे कॉन्फ़िगर और प्रबंधित किया जाए।" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"समर्थन पाने के लिए, समस्याएँ या चर्चाएँका उपयोग करें Github पर, या हमारे Matrix चैनल से जुड़ें।" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "लेनदेन 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "लेन-देन" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "यह पृष्ठ Denaro में लेनदेन के सभी गुणों की व्याख्या करता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "Id" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"प्रत्येक लेनदेन में एक Id होती है जो किसी दिए गए खाते के लिए अद्वितीय होती है। Id 1 से शुरू " +"होती हैं और जोड़े गए प्रत्येक लेनदेन के लिए बढ़ती हैं। Id को बदला नहीं जा सकता, हटाए गए " +"लेनदेन की Id का पुन: उपयोग नहीं किया जाता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "विवरण" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "लंबाई की कोई सीमा नहीं. इसमें अर्धविराम नहीं हो सकता।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "राशि" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"प्रारूप में एक संख्या जो आपके स्थान के लिए मान्य है, विवरण के लिए खाता पृष्ठ में सिस्टम मुद्रा देखें।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "प्रकार" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"आय या व्यय. जब आप नया लेन-देन जोड़ने के लिए एक संवाद खोलेंगे तो " +"डिफ़ॉल्ट रूप से खाता सेटिंग में से एक चुना जाएगा।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "तारीख" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"कोई भी तारीख चुनी जा सकती है, आप भविष्य की तारीखों के लिए लेनदेन भी बना सकते हैं।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "अंतराल दोहराएँ" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"आवर्ती लेनदेन बनाने के लिए इस विकल्प का उपयोग करें। आपके द्वारा दोहराव अंतराल के साथ " +"लेनदेन जोड़ने के बाद, यह लेनदेन एक स्रोत लेनदेन बन जाएगा। Denaro " +"स्वचालित रूप से आज तक की तारीखों के लिए या अतीत में सेट की गई अंतिम तिथि के लिए " +"दोहराया लेनदेन उत्पन्न करेगा। दोहराएँ लेनदेन को संपादित या हटाया " +"नहीं जा सकता, केवल स्रोत को संशोधित किया जा सकता है। जब आप स्रोत " +"लेनदेन को संशोधित करते हैं तो Denaro आपसे पूछेगा कि क्या आप दोहराएँ " +"लेनदेन को संशोधित या अलग करना चाहते हैं। यदि आप अलग होना चुनते हैं, तो दोहराएँ " +"लेनदेन सामान्य लेनदेन बन जाते हैं और इन्हें अलग से संपादित या हटाया जा सकता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "समाप्ति तिथि दोहराएँ" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"दोहराव वाले लेन-देन की समाप्ति तिथि। यह प्रारंभ दिनांक से पहले या उसी दिन नहीं हो सकता।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "समूह" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"प्रत्येक लेन-देन केवल एक समूह से संबंधित हो सकता है या किसी से भी नहीं («अनग्रुप्ड» समूह) से " +"संबंधित हो सकता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "रंग" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"लेन-देन के लिए एक रंग. समूह रंग या अद्वितीय रंग का उपयोग करने के लिए सेट किया जा सकता " +"है। अद्वितीय रंग का चयन करते समय, इसे डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन में चयनित रंग पर सेट किया जाएगा, लेकिन इसे " +"किसी भी रंग में बदला जा सकता है।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "टैग्स" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"लेन-देन के लिए टैग की एक सूची. किसी लेन-देन में असीमित संख्या में टैग हो सकते हैं (या कोई टैग " +"नहीं)। टैग में अल्पविराम (,) को छोड़कर कोई भी वर्ण हो सकता है, और उनकी " +"लंबाई कोई भी हो सकती है, लेकिन उनसे छोटे कीवर्ड होने की उम्मीद की जाती है। टैग का " +"उपयोग अतिरिक्त फ़िल्टरिंग के लिए किया जाता है जब समूहों का उपयोग पर्याप्त नहीं होता है। " +"टैग केवल लेनदेन में ही सहेजे जाते हैं, और परिणामस्वरूप अप्रयुक्त टैग खाता बंद होने पर स्वचालित " +"रूप से गायब हो जाते हैं।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "रसीद" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"लेन-देन की रसीद की एक छवि. आप JPEG या PNG छवि या PDF दस्तावेज़ अपलोड कर सकते हैं, " +"लेकिन प्रारूप कोई भी हो, इसे JPEG छवि के रूप में परिवर्तित और सहेजा जाएगा। PDF के मामले " +"में, केवल पहला पृष्ठ ही सहेजा जाएगा। आप किसी भी समय दूसरी फाइल को हटा या अपलोड कर " +"सकते हैं।" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "नोट्स" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "लेन-देन के साथ संलग्न करने के लिए एक फ्रीफॉर्म टेक्स्ट नोट।" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "स्थानांतरण 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "स्थानांतरण" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"ट्रांसफर पैसे को एक खाते से दूसरे खाते में स्थानांतरित करने का एक तरीका है। स्थानांतरण चलाने के " +"बाद निम्नलिखित विवरण के साथ 2 लेनदेन बनाए जाएंगे:" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "स्रोत खाते पर गंतव्य खाता नाम पर स्थानांतरण करें।" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "गंतव्य खाते पर स्रोत खाता नाम से स्थानांतरण।" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"स्थानांतरण का उपयोग करके बनाए गए लेनदेन सरल लेनदेन हैं जिन्हें स्वतंत्र रूप से संपादित या " +"हटाया जा सकता है। ये लेनदेन जुड़े नहीं हैं: स्रोत खाते पर लेनदेन को संशोधित करने से गंतव्य खाते " +"पर लेनदेन प्रभावित नहीं होगा, और इसके विपरीत।" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"स्थानांतरण आपको बार-बार लेनदेन करने या राशि के अलावा कोई संपत्ति निर्धारित करने की " +"अनुमति नहीं देता है। कॉन्फ़िगरेशन में चयनित रंग का " +"उपयोग बनाए गए लेनदेन के लिए किया जाएगा।" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"यदि आप विभिन्न मुद्राओं वाले खातों के बीच स्थानांतरण करते हैं, तो आपसे रूपांतरण दर प्रदान " +"करने के लिए कहा जाएगा।" + +#~ msgid "Checking Account Color" +#~ msgstr "खाते का रंग जांचा जा रहा है" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "हाल की खातों की सूची में खातों को चेकिंग " +#~ "प्रकार से चिह्नित करने के लिए उपयोग किया जाने वाला रंग।" + +#~ msgid "Savings Account Color" +#~ msgstr "बचत खाते का रंग" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "हाल की खातों की सूची में खातों को बचत " +#~ "प्रकार से चिह्नित करने के लिए उपयोग किया जाने वाला रंग।" + +#~ msgid "Business Account Color" +#~ msgstr "बिजनेस अकाउंट का रंग" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "हाल की खातों की सूची में खातों को व्यवसाय प्रकार से चिह्नित करने के लिए उपयोग किया जाने वाला रंग।" + +#~ msgid "Use Native Digits" +#~ msgstr "मूल अंकों का प्रयोग करें" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "क्या लैटिन अंकों के बजाय उन अंकों का उपयोग करना चाहिए जो आपके स्थान के मूल निवासी हैं। " +#~ "उदाहरण के लिए, यदि यह सेटिंग सक्षम है तो पूर्वी अरबी अंकों का उपयोग करने वाले स्थानों " +#~ "के लिए 012 के बजाय ٠١٢ का उपयोग किया जाएगा।" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV बैकअप फोल्डर" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "एक फोल्डर जहां आपका डेटा प्रत्येक परिवर्तन के बाद स्वचालित रूप से CSV में निर्यात किया जाएगा। यह सुविधा पासवर्ड-" +#~ "सुरक्षित खातों के लिए काम नहीं करती, क्योंकि CSV फाइलें पासवर्ड-सुरक्षित नहीं की जा " +#~ "सकतीं।" diff --git a/docs/po/hr.po b/docs/po/hr.po new file mode 100644 index 000000000..5858bca64 --- /dev/null +++ b/docs/po/hr.po @@ -0,0 +1,1129 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-09-26 13:22+0000\n" +"Last-Translator: Milo Ivir \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.1-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Milo Ivir , 2023" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Račun 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Račun" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Ova stranica objašnjava sva svojstva računa u aplikaciji Denaro. " +"Većina se prikazuju u Dijalog postavki računa. Ovaj se dijalog " +"također automatski otvara nakon stvaranja novog računa." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Svaki račun se sprema u yasebnu *.nmoney datoteku. Datoteke " +"stvorene u starijoj stabilnoj verziji Denaro aplikacije " +"mogu se sigurno otvoriti u novijoj stabilnoj verziji aplikacije. " +"Iako aplikacija radi na različitim platformama (Windows i Linux), *." +"nmoney datoteke su 100 % kompatibilne između platformi sve dok su " +"stvorene s istom verzijom aplikacije (tj. V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Nestabilne verzije aplikacije (beta i kandidati za izdanje) mogu sadržati " +"greške ili nedovršene promjene i mogu uzrokovati gubitak podataka. U " +"nestabilnim verzijama aplikacije NEMOJ koristiti datoteke računa koje sadrže " +"stvarne podatke!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Ime" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"Ime računa se prikazuje u popisu nedavnih računa i na karticama. Dužina " +"imena nije ograničena i može sadržati bilo koje znakove, uključujući emojije." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Vrsta računa" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Postoje 3 vrste računa: 🟣žiro račun, 🔵štedni račun i 🟢" +"poslovni račun. Vrsta računa je samo korisna oznaka koja se " +"prikazuje u popisu nedavnih računa i ne utječe na to kako aplikacija radi " +"ili što možeš učiniti s računom. Svaka vrsta računa ima vlastitu boju. Boje " +"se mogu odrediti u globalnim postavkama." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Standardna vrsta transakcije" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Kada stvoriš novu transakciju, njezina će vrsta standardno biti ista kao u " +"ovoj postavci." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Prag podsjetnika za transakcije" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" +"Prag koji se koristi prilikom prikazivanja podsjetnika o nadolazećim " +"transakcijama." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Valuta sustava" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Svaki put kada se aplikacija pokrene, ona dobiva podatke o valuti i formatu " +"brojeva iz postavke jezičnog područja tvog sustava. Ti se podaci koriste za " +"prikaz simbola valute (osim ako se koristi prilagođena valuta, pogledaj " +"dolje) i za određivanje formata brojeva koji će se prihvatiti kao " +"vrijednosti za iznose transakcija. Par primjera:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"Ako je tvoje jezično područje engleski (SAD), simbol valute će biti " +"$ i 1,000.00 će se prihvatiti kao valjani broj." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"Ako je tvoje jezično područje hrvatski, simbol valute će biti " +" i 1.000,00 će se prihvatiti kao valjani broj." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"Ako je tvoje jezično područje ruski, simbol valute će biti i 1000,00 će se prihvatiti kao valjani broj." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"Na Linuxu je moguće postaviti različita jezična područja za jezik sustava i " +"formate. Mijenjanje ovih postavki razlikuje se ovisno o radnoj površini. " +"Unatoč razlikama u smještaju ovih postavki u okruženju, mijenjanje tih " +"postavki mijenja varijable okruženja sustava, kao što su LANG, " +"LC_TIME i LC_MONETARY. Denaro će " +"pokušati koristiti formate iznosa i datuma u skladu s tim varijablama. Ako " +"aplikacija ne uspije koristiti očekivane formate, provjeri jesu li varijable " +"ispravno postavljene putem naredbe locale u terminalu. Ako " +"naiđeš na grešku i želiš je prijaviti, pošalji rezultat naredbe " +"locale kako bi programeri mogli reproducirati problem s istim " +"postavkama." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Koristi prilagođenu valutu" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"Ako je ova opcija aktivirana, umjesto simbola valute jezičnog područja tvog " +"sustava koristit će se Prilagođeni simbol valute." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Simbol prilagođene valute" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "Do 3 znaka ili 1 emoji. Ne može biti broj." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Kȏd prilagođene valute" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "Do 3 znaka ili 1 emoji." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Primjer za razumijevanje razlike između simbola i koda: $ je " +"simbol, USD je kod." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Prilagođeni stil iznosa valute" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "Izbor prikaza iznosa na jedan od sljedećih načina:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Prilagođeni decimalni znakovi i znakovi tisućica valute" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "Do 2 znaka ili 1 emoji." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Prilagođeni broj decimala valute" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"Broj decimala za iznose. S opcijom „Neograničeno” prikazat će se onoliko " +"decimala koliko je potrebno za prikaz točnog iznosa. Decimale se neće " +"koristiti ako je iznos cijeli broj." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Lozinka" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Svaki račun se može zaštititi lozinkom. Dodavanje lozinke uzrokuje " +"šifriranje računa (što onemogućuje čitanje podataka bez dešifriranja pomoću " +"lozinke). Oprez: ako izgubiš lozinku, nećeš moći obnoviti podatke! Lozinka " +"se također može promijeniti ili ukloniti pomoću dijaloga postavki računa " +"jednog otvorenog računa. Uklanjanje lozinke će dešifrirati račun." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Razvrstaj prema ID-u, datumu ili iznosu" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"Svaki račun sprema razvrstavanje transakcija u glavnom prozoru prema ID-u, " +"datumu ili iznosu. Pri svakoj promjeni će se razvrstavanje spremiti u " +"datoteku računa i obnoviti kada ponovo otvoriš račun." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Redoslijed" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"Svaki račun sprema podatke o redoslijedu transakcija u glavnom prozoru. Pri " +"svakoj promjeni će se redoslijed spremiti u datoteku računa i obnoviti kada " +"ponovo otvoriš račun." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Vidljivost grupa" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Svaki račun sprema podatke o prikazivanju ii skrivanju popisa grupa u " +"glavnom prozoru. Pri svakoj promjeni će se vidljivost popisa grupa spremiti " +"i obnoviti kada ponovo otvoriš račun." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Vidljivost oznaka" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Svaki račun sprema podatke o prikazivanju ii skrivanju popisa oznaka u " +"glavnom prozoru. Pri svakoj promjeni vidljivosti popisa oznaka, promjena će " +"se spremiti i obnoviti kada ponovo otvoriš račun." + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Konfiguracija 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Konfiguracija" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "Ova stranica opisuje što možeš promijeniti u konfiguraciji aplikacije." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"Ovisno o platformi, u sučelju aplikacije se konfiguracija zove " +"Osobitosti ili Postavke." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Tema" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"Postavi svijetlu ili tamnu temu ili neka Denaro slijedi temu tvog " +"sustava. Za primjenu promjene teme u Windows sustavu zahtijeva ponovno " +"pokretanje aplikacije." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Standardna boja transakcija" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"Standardna boja prilikom dodavanja nove transakcije s jedinstvenom bojom. Mijenjanje " +"boje neće utjecati na postojeće transakcije, čak i ako koriste prethodno " +"odabranu standardnu boju." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Standardna boja transfera" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"Standardna boja za transakcije stvorene pomoću transfera. Mijenjanje boje neće utjecati na " +"postojeće transakcije." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Standardna boja grupa" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"Standardna boja prilikom dodavanja nove grupe. Koristi se i za „negrupirane” " +"grupe." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Umetni decimalni znak" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa: " +"točka na numeričkoj tipkovnici, bilo koja točka i zarez ili ništa. Ako " +"decimalni znak već postoji u polju onda se on neće umetnuti." + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Uvoz/Izvoz 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Uvoz/Izvoz" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formati uvoza" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Datumi bi trebali biti u formatu YYYYMMDD." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" +"Datumi bi trebali biti u engleskom (SAD) formatu (MM/DD/YYYY)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ Iako je CSV uobičajeni format i neke banke dopuštaju svojim korisnicima " +"izvoz podataka u CSV formatu, te su datoteke zapravo tablice koje mogu " +"sadržati proizvoljne podatke. Uvoz CSV datoteke stvorene u jednom drugom " +"programu neće uspjeti jer njezini podaci neće biti kompatibilni s onim što " +"Denaro pokušava dobiti iz datoteke. Svrha uvoza/izvoza CSV " +"datoteka je omogućiti način dodavanja podataka računu pomoću programa kao " +"što su uređivači teksta i uredski paketi. Uvoz će samo dodati nove " +"transakcije bez prepisivanja postojećih. Ako želiš ručno izraditi CSV " +"datoteku, ovo je zaglavlje koje uključuje sve stupce koje Denaro " +"očekuje pronaći:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" +"ID transakcije. Mora biti jedinstven za određeni račun. ID-ovi počinju s 1." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"Datum transakcije (ili početni datum u slučaju ponovljajuće transakcije). " +"Mora biti u engleskom (SAD) formatu (MM/DD/YYYY)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" +"Opis transakcije. Može sadržati bilo koje znakove osim točke sa zarezom (;)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "Vrsta transakcije: 0 za prihod, 1 za rashod." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "Broj koji predstavlja interval ponavljanja transakcije:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 – Nikada" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 – Dnevno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 – Tjedno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 – Dvotjeno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 – Mjesečno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 – Kvartalno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 – Godišnje" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 – Dvogodišnje" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"Za detalje o ponovljajućim transakcijama pogledaj Interval ponavljanja na stranici transakcija." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"Treba biti ID izvorne transakcije ili 0 ako je izvorna transakcija ili -1 " +"ako nije ponavljajuća transakcija." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"Krajnji datum ponavljajuće transakcije. Mora biti u engleskom (SAD) formatu " +"(MM/DD/YYYY). Ostavi polje praznim ako nije ponavljajuća " +"transakcija." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "Iznos transakcije u engleskom (SAD) formatu (123,456.78)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Boja transakcije u rgb(R,G,B) formatu, gdje su R, G i B cijeli brojevi od 0 do 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "Treba li transakcija koristiti boju grupe: 0 – ne, 1 – da." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"ID grupe transakcije. ID-ovi počinju s brojem 1. Za negrupirane transakcije " +"trebao bi biti -1 (ne 0, jer to nije valjana vrijednost za ID grupe)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"Ime grupe transakcije treba odgovarati ID-u grupe. Može sadržati bilo koje " +"znakove osim točke sa zarezom (;). Ostavi polje prazno za negrupirane " +"transakcije. U svim drugim slučajevima polje ne bi trebalo biti prazno." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"Opis grupe transakcije trebao bi odgovarati ID-u grupe. Može sadržati bilo " +"koje znakove osim točke sa zarezom (;) i može biti prazan. Ostavi polje " +"prazno za negrupiranu transakciju." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Boja grupe u rgb(R,G,B) formatu, gdje su R, G i " +"B cijeli brojevi od 0 do 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "CSV datoteka ne sadrži podatke o priznanici i bilješke." + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formati izvoza" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"Odaberi želiš li izvesti sve podatke ili samo podatke iz trenutačnog " +"prikaza. Ako odabereš trenutačni prikaz, trenutačno prikazane transakcije će " +"se izvesti u prikazanom redoslijedu." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"Datoteka će sadržati podatke o računu, popis transakcija i slike priznanica. " +"Transakcije su obojene kao u aplikaciji, ali su boje poluprozirne, kako bi " +"crni tekst uvijek bio jasno vidljiv. Za izvezenu datoteku možeš postaviti " +"lozinku." + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Denaro pomoć" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Denaro pomoć" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Denaro pomoć" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"Ova dokumentacija će ti pomoći konfigurirati i upravljati podacima u " +"aplikaciji Denaro za najbolje iskorištavanje aplikacije." + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"Za dobivanje pomoći koristi probleme ili rasprave na Githubu ili se pridruži našem Matrix kanalu." + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transakcija 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transakcija" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" +"Ova stranica objašnjava sva svojstva transakcija u aplikaciji Denaro." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"Svaka transakcija ima ID koji je jedinstven za određeni račun. ID-ovi " +"počinju s 1 i povećavaju se sa svakom dodanom transakcijom. ID-ovi se ne " +"mogu mijenjati. ID-ovi uklonjenih transakcija se ne koriste ponovo." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Opis" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" +"Dužina opisa nije ograničena. Ne smije sadržati znak točke sa zarezom (;)." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Iznos" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"Broj u ispravnom formatu za tvoje jezično područje. Za detalje pogledaj " +"Valuta sustava u Stranica računa." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Vrsta" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"Prihod ili Rashod. Odabrana opcija u postavkama računa će se standardno odabrati kada " +"otvoriš dijalog za dodavanje nove transakcije." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Datum" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"Možeš odabrati bilo koji datum. Također možeš stvoriti transakcije za buduće " +"datume." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Interval ponavljanja" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"Koristi ovu opciju za stvaranje ponavljajuće transakcije. Nakon što dodaš " +"transakciju s intervalom ponavljanja, ova će transakcija postati " +"izvorna transakcija. Denaro će automatski generirati " +"ponovljajuće transakcije za datume do danas ili za navedeni krajnji " +"datum ako je postavljen u prošlosti. Ponovljajuće transakcije se ne " +"mogu uređivati ili izbrisati, samo se izvor može promijeniti. Kada " +"promijeniš izvornu transakciju, Denaro će te pitati " +"želiš li promijeniti ili poništiti vezu ponovljajućih transakcija. " +"Ako odlučiš poništiti vezu, ponovljajuće transakcije postaju " +"normalne transakcije i mogu se zasebno uređivati ili brisati." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Krajnji datum ponavljanja" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"Krajnji datum za ponavljajuću transakciju. Ne može biti prije ili na isti " +"dan kao početni datum." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Grupa" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"Svaka transakcija može pripadati samo jednoj grupi ili nijednoj " +"(„Negrupirana” grupa)." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Boja" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"Boja za transakciju. Može se postaviti da koristi boju grupe ili jedinstvene " +"boje. Prilikom biranja jedinstvene boje, boja će se standardno postaviti na " +"odabranu boju u konfiguraciji, ali se " +"može promijeniti u bilo koju boju." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Oznake" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"Popis oznaka za transakciju. Transakcija može imati neograničen broj oznaka " +"(ili ne imati oznake). Oznake mogu sadržati bilo koje znakove osim zareza " +"(,) i imati bilo koju dužinu, ali se očekuje da budu kratke " +"ključne riječi. Oznake su namijenjene za dodatno filtriranje kada korištenje " +"grupa nije dovoljno. Oznake se spremaju samo u samim transakcijama, a kao " +"rezultat toga nekorištene oznake automatski nestaju pri zatvaranju računa." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Priznanica" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"Slika priznanice za transakciju. Možeš učitati JPEG ili PNG sliku ili PDF " +"dokument, ali bez obzira na format slika će se pretvorit i spremiti kao JPEG " +"slika. U slučaju PDF-a će se spremiti samo prva stranica. U bilo kojem " +"trenutku možeš izbrisati ili prenijeti jednu drugu datoteku." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Bilješke" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "Tekstna bilješka za prilaganje transakciji." + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Transfer 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Transfer" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"Transfer je način premještanja novca s jednog računa na drugi. Nakon " +"pokretanja transfera stvorit će se 2 transakcije sa sljedećim opisima:" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "„Transfer na Ime odredišnog računa” na izvornom računu." + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "„Transfer iz Ime izvornog računa” na odredišni račun." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"Transakcije koje su stvorene korištenjem tranfera su jednostavne transakcije " +"koje se mogu slobodno urediti ili izbrisati. Ove transakcije nisu povezane: " +"mijenjanje transakcije u izvornom računu neće utjecati na transakciju u " +"odredišnom računu, i obratno." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"Transfer ne dozvoljava stvaranje ponavljajućih transakcija niti postavljanje " +"bilo kojih svojstava osim iznosa. Za stvaranje transakcije će se koristiti " +"boja koja je odabrana u konfiguraciji." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"Ako stvoriš transfer između računa s različitim valutama morat ćeš zadati " +"stopu konverzije." + +#~ msgid "Checking Account Color" +#~ msgstr "Boja žiro računa" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "Boja za označavanje računa vrste žiro " +#~ "račun u popisu nedavnih računa." + +#~ msgid "Savings Account Color" +#~ msgstr "Boja štednog računa" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "Boja za označavanje računa vrste štedni " +#~ "račun u popisu nedavnih računa." + +#~ msgid "Business Account Color" +#~ msgstr "Boja poslovnog računa" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "Boja za označavanje računa vrste " +#~ "poslovni račun u popisu nedavnih računa." + +#~ msgid "Use Native Digits" +#~ msgstr "Koristi brojke jezika" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "Da li umjesto arapskih brojki koristiti brojke tvog tvoje jezičnog " +#~ "područja. Na primjer, ako je ova postavka deaktivirana, umjesto 012 će se koristiti ٠١٢ za jezična područja koja koriste " +#~ "istočnoarapske brojeve." + +#~ msgid "CSV Backup Folder" +#~ msgstr "Mapa sigurnosnih kopija u CSV formatu" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "Mapa u kojoj će se tvoji podaci automatski izvesti u CSV datoteku nakon svake promjene. Ova funkcija " +#~ "ne radi za račune koji su zaštićeni lozinkom jer CSV datoteke ne mogu " +#~ "biti zaštićene lozinkom." diff --git a/docs/po/id.po b/docs/po/id.po new file mode 100644 index 000000000..2a5c58bc7 --- /dev/null +++ b/docs/po/id.po @@ -0,0 +1,888 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-06-07 19:40+0000\n" +"Last-Translator: Krindog7337 \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.18-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Catatan" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Use Native Digits" +#~ msgstr "Gunakan Digit Bawaan" diff --git a/docs/po/it.po b/docs/po/it.po new file mode 100644 index 000000000..96f3ba1bf --- /dev/null +++ b/docs/po/it.po @@ -0,0 +1,1167 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-09-10 21:21+0000\n" +"Last-Translator: albanobattistella \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" +"Albano Battistella\n" +"Davide Ferracin " + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Conti 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Conti" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"In questa pagina vengono spiegate tutte le proprietà degli account in " +"Denaro. La maggior parte di esse è mostrata nella finestra di " +"dialogo Impostazioni conto. Questa finestra viene aperta " +"automaticamente alla creazione di un nuovo conto." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Ciascun conto è registrato in un singolo file *.nmoney. I file " +"creati da una vecchia versione stabile di Denaro possono " +"essere aperti senza rischi con una versione stabile più recente " +"dell'applicazione. Anche se l'applicazione può girare su più piattaforme " +"(Windows e Linux), i file *.nmoney sono compatibili al 100% tra " +"le piattaforme purché provengano dalla stessa versione dell'applicazione " +"(per esempio V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Le versioni instabili (beta ed RC) dell'applicazione possono contenere " +"errori o modifiche non terminate, che possono causare la perdita di dati. È " +"sconsigliato usare versioni instabili l'applicazione con file conto che " +"contengono i propri dati veri." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nome" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"Il nome del conto viene mostrato nella lista dei conti più recenti e nelle " +"schede. I nomi non hanno un limite di lunghezza e possono contenere " +"qualsiasi carattere, anche gli emoji." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Tipo di conto" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Sono disponibili tre tipi di conto: 🟣conto corrente, " +"🔵deposito and 🟢aziendale. Il tipo di conto è solo " +"un'etichetta, mostrata nella lista dei conti recenti, che non influisce sul " +"funzionamento dell'applicazione o sulle azioni disponibili per ciascun " +"conto. Ciascun tipo di conto ha il suo colore, che può essere configurato " +"nelle impostazioni generali." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Tipo di transazione predefinito" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Questo parametro determina il tipo predefinito di una nuova transazione alla " +"sua creazione." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Soglia per i promemoria delle transazioni" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" +"La soglia utilizzata quando vengono visualizzati promemoria sulle " +"transazioni imminenti." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Valuta di sistema" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Ad ogni avvio, l'applicazione recupera i dati sulla valuta e la " +"formattazione dei numeri dai formati di sistema, e usa questi dati per " +"mostrare i simboli delle valute (a meno che sia stata scelta una valuta " +"personalizzata, vedere più sotto) e per determinare in quale formato " +"accettare i valori per l'ammontare delle transazioni. Alcuni esempi:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"Se il proprio formato è Inglese (US), il simbolo della valuta sarà " +"impostato su $ e 1,000.00 verrà accettato come un valore " +"numerico valido." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"Se il proprio formato è Italiano, il simbolo della valuta sarà " +"impostato su e 1.000,00 verrà accettato come un valore " +"numerico valido." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"Se il proprio formato è Russo, il simbolo della valuta sarà " +"impostato su e 1000,00 verrà accettato come un valore " +"numerico valido." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"Su Linux è possibile impostare diversi formati per la lingua e i valori " +"numerici. Il modo per modificare queste impostazioni varia a seconda " +"dell'ambiente desktop usato. Nonostante queste impostazioni si possano " +"trovare in luoghi diversi del desktop, la loro modifica influisce su alcune " +"variabili d'ambiente di sistema come LANG, LC_TIME, e LC_MONETARY. Denaro tenterà di usare i " +"formati numerici e di data specificati da queste variabili. Se non vengono " +"usati i formati che ci si aspetta, assicurarsi che le variabili siano " +"impostate correttamente usando il comando locale in un " +"terminale. Se si verifica un errore e lo si vuole segnalare, fornire " +"l'output del comando locale per permettere agli sviluppatori di " +"riprodurre tale errore con le medesime impostazioni." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Usa valuta personalizzata" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"Se abilitata, simbolo valuta personalizzato verrà usato al posto " +"del simbolo fornito dalle impostazioni del proprio sistema." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Simbolo valuta personalizzato" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "Fino a tre caratteri oppure un emoji. Non può essere un numero." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Codice valuta personalizzato" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "Fino a tre caratteri oppure un emoji." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Un esempio per capire la differenza tra simbolo e codice: $ è un " +"simbolo, USD è un codice." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Stile importo valuta personalizzato" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "Possibilità di visualizzare un importo in uno dei seguenti modi:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Separatore decimale e dei gruppi personalizzato" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "Fino a due caratteri oppure un emoji." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Cifre decimali personalizzate" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"La dimensione della parte decimale degli importi. Con «Illimitata» ci " +"potranno essere tante cifre decimali quante ne serviranno per mostrare " +"l'importo esatto, ma non verrà mostrata la parte decimale se l'importo è un " +"numero intero." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Password" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Ciascun conto può essere protetto da una password. Aggiungere una password " +"rende il conto cifrato (rendendo impossibile leggerne i dati senza " +"decifrarlo con la password). Attenzione: se la password viene dimenticata, " +"non sarà possibile ripristinare i dati. È possibile rimuovere o cambiare la " +"password tramite le impostazioni del conto, una volta aperto. Rimuovere la " +"password decifrerà il conto." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Ordinare per Id, data o importo" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"Ogni conto registra se ordina le transazioni nella finestra principale per " +"il loro ID, la data o l'importo. Quando si modifica la modalità di " +"ordinamento, viene salvata nel file del conto e riprisrinata alla riapertura." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Verso dell'ordinamento" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"Ogni conto registra il modo in cui ordina le transazioni nella finestra " +"principale. Quando si modifica la modalità di ordinamento, viene salvata nel " +"file del conto e ripristinata alla riapertura." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Visibilità dei gruppi" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Ogni conto registra se la lista dei gruppi nella finestra principale è " +"nascosta o no. Quando si modifica la visibilità dei gruppi, viene salvata e " +"ripristinata alla riapertura del conto." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Visibilità dei tag" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Ogni account memorizza informazioni sul fatto che l'elenco dei tag nella " +"finestra principale sia nascosto o meno. Ogni volta che modifichi la " +"visibilità dell'elenco dei tag, questo viene salvato e quindi ripristinato " +"quando riapri l'account." + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Configurazione 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Configurazione" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" +"Questa pagina descrive cosa è possibile cambiare nella configurazione " +"dell'applicazione." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"A seconda della propria piattaforma, è possibile trovare la configurazione " +"nell'interfaccia dell'applicazione sotto Preferenze oppure " +"Impostazioni." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Stile" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"Impostare lo stile chiaro o scuro, oppure dire a Denaro di " +"seguire lo stile di sistema. Cambiare lo stile su Windows richiede il " +"riavvio dell'applicazione per applicare le modifiche." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Colore predefinito delle transazioni" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"Un colore che verrà selezionato inizialmente all'aggiunta di una nuova transazione con colore speciale. Cambiare questo " +"colore non avrà effetto sulle transazioni esistenti, anche se usavano un " +"colore predefinito precedentemente selezionato." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Colore predefinito dei trasferimenti" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"Un colore che verrà usato per le transazioni create usando i trasferimenti. Cambiare questo colore non avrà " +"effetto sulle transazioni esistenti." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Colore dei gruppi predefinito" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"Un colore che verrà selezionato inizialmente all'aggiunta di un nuovo " +"gruppo. È anche il colore per il gruppo «Senza gruppo»." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Inserimento separatore decimale" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"Imposta per quali tasti, quando premuti, verrà inserito al loro posto il " +"separatore decimale durante la digitazione di un importo: il punto del " +"tastierino numerico, un punto qualsiasi e una virgola, o nessuno di essi. Se " +"il separatore decimale è già presente nel campo di inserimento, non verrà " +"inserito nuovamente." + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Importazione ed esportazione 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Importazione ed esportazione" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formati per l'importazione" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Le date devono essere in formato YYYYMMDD." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "Le date devono essere nel formato americano (MM/DD/YYYY)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ Per quanto CSV sia un formato comune e alcune banche permettano ai loro " +"utenti di esportare le informazioni in file CSV, tali file sono a tutti gli " +"effetti tabelle che possono contenere dati arbitrari. Importare un file CSV " +"creato con altri programmi non sarà possibile, perché i dati non saranno " +"compatibili con ciò che Denaro tenta di leggere in un file. Lo " +"scopo dell'importazione ed esportazione in CSV è quello di fornire un modo " +"di aggiungere dati ad un conto usando programmi esterni come editor di testo " +"e suite per ufficio. L'importazione aggiungerà soltanto nuove transazioni, " +"senza sovrascrivere quelle già esistenti. Per creare un file CSV a mano, " +"questa è la riga dei titoli delle colonne che Denaro si aspetta " +"di trovare:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" +"L'ID della transazione, che deve essere univoco all'interno di ciascun " +"conto. Gli ID partono da 1." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"La data della transazione (o la data d'inizio per quelle ricorrenti) deve " +"essere in formato americano (MM/DD/YYYY)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" +"La descrizione della transizione; può contenere qualsiasi carattere tranne " +"il punto e virgola." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "Tipo di transazione: 0 per le entrate, 1 per le uscite." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" +"Un numero che rappresenta la frequenza di ripetizione della transazione:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Mai" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Ogni giorno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Ogni settimana" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Ogni due settimane" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Ogni mese" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Ogni tre mesi" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Ogni anno" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Ogni due anni" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"Consultare Frequenza in transazioni per dettagli sulle transazioni ricorrenti." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"Deve essere o l'ID di una transazione originale, oppure 0 se è una " +"transazione “sorgente” o -1 se non è ricorrente." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"La data di termine per una transazione ricorrente, in formato americano " +"(MM/DD/YYYY). Lasciare vuoto per le transazioni non ricorrenti." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "Importo della transazione in formato americano (123,456.78)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Il colore della transazione, in formato rgb(R,G,B) dove R, " +"G e B sono numeri interi tra 0 e 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" +"Se una transazione deve usare il colore del gruppo: 0 — falso, 1 — vero." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"L'ID del gruppo della transazione. Gli ID partono da 1. Usare il valore -1 " +"per le transazioni che non sono in alcun gruppo (non si usi 0, è un valore " +"incorretto per l'ID del gruppo)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"Il nome del gruppo della transazione, che deve corrispondere all'ID del " +"gruppo. Può contenere qualsiasi carattere tranne il punto e virgola. " +"Lasciare vuoto per una transazione che non è in alcun gruppo; in tutti gli " +"altri casi non deve essere vuoto." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"La descrizione del gruppo della transazione, che deve corrispondere all'ID " +"del gruppo. Può contenere qualsiasi carattere tranne il punto e virgola, e " +"può anche essere vuota. Lasciarla vuota per una transazione che non è in " +"alcun gruppo." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Il colore del gruppo, in formato rgb(R,G,B) dove R, G e B sono numeri interi tra 0 e 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "Ricevute e annotazioni non si trovano nel file CSV." + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formati per l'esportazione" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"È possibile selezionare se esportare tutte le informazioni oppure solo " +"quelle nella vista corrente. Se si seleziona la vista corrente, le " +"transazioni visualizzare verranno esportate nello stesso ordine in cui sono " +"mostrate." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"Un file conterrà le informazioni sul conto, una lista di transazioni e le " +"immagini delle ricevute. Le transazioni sono colorate come " +"nell'applicazione, ma i colori sono resi semitrasparenti in modo che il " +"testo nero sia sempre visibile chiaramente. È possibile impostare una " +"password per il file esportato." + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Aiuto di Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Aiuto di Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Aiuto di Denaro" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"Questa guida aiuta gli utenti a capire come configurare e gestire i dati in " +"Denaro per sfruttare l'applicazione al meglio." + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"Per ottenere supporto, usare le issues o le discussioni su Github, " +"oppure unirsi al nostro canale di " +"Matrix." + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transazioni 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transazione" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" +"Questa pagina spiega tutte le proprietà delle transazioni in Denaro." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"Ciascuna transazione possiede un ID, che è univoco all'interno di ciascun " +"conto. L'ID parte da 1 e viene incrementato ad ogni transazione aggiunta. " +"Gli ID non possono essere cambiati, e quelli delle transazioni rimosse non " +"vengono riusati." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Descrizione" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "Nessun limite di lunghezza. Non può contenere punti e virgola." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Importo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"Un numero valido per le proprie impostazioni regionali; si veda Valuta " +"di sistema nella pagina Conti per " +"dettagli." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Tipo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"Entrate o Uscite. All'apertura della finestra per creare " +"una nuova transazione, sarà selezionata l'opzione predefinita scelta nelle " +"impostazioni conto." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Data" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"Si può selezionare qualsiasi data, e creare transazioni anche per date " +"future." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Frequenza" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"Usare questa opzione per creare una transazione ricorrente. Una volta " +"aggiunta una transazione impostando una frequenza di ricorsione, essa " +"diventerà una transazione sorgente. Denaro genererà " +"automaticamente le transazioni collegate per le date fino ad oggi o " +"fino alla data di termine indicata se è nel passato. Le transazioni " +"collegate non possono essere modificate o eliminate, solo la " +"sorgente può esserlo. Quando si modifica la transazione " +"sorgente, Denaro chiederà se si desidera modificare " +"anche le transazioni collegate o se scollegarle. Se si sceglie di " +"scollegarle, esse diventeranno delle normali transazioni e potranno essere " +"modificate o eliminate individualmente." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Fine ripetizione" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"La data di termine di una transazione ricorrente. Non può essere uguale alla " +"data di inizio o precederla." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Gruppo" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"Ciascuna transazione può appartenere a un solo gruppo, oppure nessuno (cioè " +"appartiene al gruppo «Senza gruppo»)." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Colore" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"Un colore per la transazione. Si può impostare affinché la transazione usi " +"il colore del gruppo a cui appartiene, oppure un colore speciale. Se si " +"sceglie il secondo, verrà inizialmente impostato al colore predefinito " +"selezionato nella configurazione, ma può " +"essere cambiato in qualsiasi altro colore." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Etichette" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"Un elenco di tag per la transazione. Una transazione può avere un numero " +"illimitato di tag (o non avere tag). I tag possono contenere qualsiasi " +"carattere tranne la virgola (,) e avere qualsiasi lunghezza, ma " +"si prevede che siano parole chiave brevi. I tag sono pensati per essere " +"utilizzati per ulteriori filtri quando l'utilizzo dei gruppi non è " +"sufficiente. I tag vengono salvati solo nelle transazioni stesse e, di " +"conseguenza, i tag non utilizzati scompaiono automaticamente alla chiusura " +"del conto." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Ricevuta" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"L'immagine di una ricevuta per la transazione. È possibile caricare immagini " +"in formato JPEG o PNG, oppure documenti PDF, ma a prescindere dal formato " +"verrà convertita e salvata come immagine JPEG. Nel caso del PDF, verrà " +"salvata solo la prima pagina. È possibile eliminare o caricare un altro file " +"in qualsiasi momento." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Annotazioni" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "Un testo libero da allegare alla transazione." + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Trasferimenti 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Trasferimenti" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"I trasferimenti sono un modo per spostare denaro da un conto all'altro. Una " +"volta creato un trasferimento, verranno create due transazioni con le " +"seguenti descrizioni:" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" +"«Trasferimento a Conto di destinazione» sul conto di origine." + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" +"«Trasferimento da Conto di origine» sul conto di destinazione." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"Le transazioni create da un trasferimento sono delle semplici transazioni " +"che possono essere modificate o eliminate liberamente. Non sono connesse tra " +"loro: modificare la transazione sul conto di origine non avrà effetto sul " +"conto di destinazione, e viceversa." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"I trasferimenti non permettono di creare transazioni ricorrenti o di " +"impostare altre proprietà oltre all'importo. Il colore scelto nella configurazione sarà usato per le transazioni " +"generate." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"Se si crea un trasferimento tra conti in valute diverse, verrà chiesto di " +"specificare un tasso di conversione." + +#~ msgid "Checking Account Color" +#~ msgstr "Colore dei conti correnti" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "Un colore usato per contrassegnare i conti " +#~ "del tipo conto corrente nella lista dei conti recenti." + +#~ msgid "Savings Account Color" +#~ msgstr "Colore dei conti deposito" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "Un colore usato per contrassegnare i conti " +#~ "del tipo conto deposito nella lista dei conti recenti." + +#~ msgid "Business Account Color" +#~ msgstr "Colore dei conti aziendali" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "Un colore usato per contrassegnare i conti " +#~ "del tipo conto azientale nella lista dei conti recenti." + +#~ msgid "Use Native Digits" +#~ msgstr "Usa cifre native" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "Se usare delle cifre che sono native della propria regione anziché quelle " +#~ "latine. Per esempio, per sistemi che usano i numeri indo-arabi, se questa " +#~ "opzione è attiva verrà usato ٠١٢ invece di 012." + +#~ msgid "CSV Backup Folder" +#~ msgstr "Cartella di backup in CSV" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "Una cartella in cui i propri dati verranno automaticamente esportati in formato CSV dopo ogni " +#~ "modifica. Questa funzionalità non è attiva per i file protetti da " +#~ "password, poiché i file CSV non possono essere protetti in tale modo." + +#~ msgid "2023" +#~ msgstr "2023" diff --git a/docs/po/ja.po b/docs/po/ja.po new file mode 100644 index 000000000..02fddef3f --- /dev/null +++ b/docs/po/ja.po @@ -0,0 +1,885 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-07-09 22:27+0000\n" +"Last-Translator: Luci Draws \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "テーマ" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "デーツ" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/nl.po b/docs/po/nl.po new file mode 100644 index 000000000..f8b8d45eb --- /dev/null +++ b/docs/po/nl.po @@ -0,0 +1,904 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-12-31 00:09+0000\n" +"Last-Translator: Philip Goto \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Philip Goto https://flipflop97.github.io/" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Account 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Account" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Naam" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Accounttype" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Standaaardtransactietype" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Drempelwaarde voor transactie­herinneringen" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Systeemvaluta" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Aangepaste valuta gebruiken" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Aangepast valutasymbool" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Aangepaste valutacode" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +#, fuzzy +msgid "Custom Currency Amount Style" +msgstr "Aangepast valutasymbool" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Wachtwoord" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Sorteervolgorde" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Groepszichtbaarheid" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Label­zichtbaarheid" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Configuratie 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Configuratie" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Thema" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Standaard­transactiekleur" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Standaard­overdrachtkleur" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Standaard­groepskleur" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Decimaal scheidings­teken invoegen" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Importeren/exporteren 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Importeren/exporteren" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formaten importeren" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Nooit" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Dagelijks" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Wekelijks" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Twee­wekelijks" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Maandelijks" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Eén keer per kwartaal" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Jaarlijks" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Twee­jaarlijks" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formaten exporteren" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Hulp voor Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Hulp voor Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Denaro-hulp" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transactie 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transactie" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Omschrijving" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Hoeveelheid" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Type" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Datum" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Herhalingsinterval" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Einddatum herhalen" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Groep" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Kleur" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Tags" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Factuur" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Aantekeningen" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Overdracht 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Overdracht" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Checking Account Color" +#~ msgstr "Kleur van betaal­rekening" + +#~ msgid "Savings Account Color" +#~ msgstr "Kleur van spaar­rekening" + +#~ msgid "Business Account Color" +#~ msgstr "Kleur van bedrijfs­rekening" + +#~ msgid "Use Native Digits" +#~ msgstr "Lokale decimale notatie gebruiken" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV-back-up­map" + +#~ msgid "2023" +#~ msgstr "2023" diff --git a/docs/po/oc.po b/docs/po/oc.po new file mode 100644 index 000000000..49d26f4b0 --- /dev/null +++ b/docs/po/oc.po @@ -0,0 +1,882 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/pl.po b/docs/po/pl.po new file mode 100644 index 000000000..b64a48617 --- /dev/null +++ b/docs/po/pl.po @@ -0,0 +1,901 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-11-15 13:38+0000\n" +"Last-Translator: Eryk Michalak \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.2-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "ewm" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Konto 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Konto" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nazwa" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Rodzaj konta" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Rodzaj domyślnej transakcji" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Częstotliwość przypomnień o transakcji" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Użyj własnej waluty" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Niestandardowy symbol waluty" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Niestandardowy kod waluty" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "$n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n$" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "$ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n $" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Hasło" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Kolejność sortowania" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Widzialność grup" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Widoczność tagów" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Konfiguracja 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Domyślny kolor transakcji" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Domyślny kolor przelewu" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Domyślny kolor grupy" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Wstawianie separatora dziesiętnego" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Import/Eksport 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Import/Eksport" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Formaty importu" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Nigdy" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Codziennie" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Tygodniowo" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Co dwa tygodnie" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Miesięcznie" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Kwartalnie" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Rocznie" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Co dwa lata" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Formaty eksportu" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Pomoc Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Pomoc Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Pomoc Denaro" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Transakcja 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Transakcja" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "Identyfikator (ID)" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Opis" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Kwota" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Rodzaj" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Data" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Interwał powtarzania" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Data końca powtarzania" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Grupa" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Kolor" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Tagi" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Potwierdzenie" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Uwagi" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Przelew 💸" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Przelew" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Checking Account Color" +#~ msgstr "Kolor konta bieżącego" + +#~ msgid "Savings Account Color" +#~ msgstr "Kolor konta oszczędnościowego" + +#~ msgid "Business Account Color" +#~ msgstr "Kolor konta firmowego" + +#~ msgid "Use Native Digits" +#~ msgstr "Używaj cyfr rodzimych" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Folder kopii zapasowych CSV" diff --git a/docs/po/pt.po b/docs/po/pt.po new file mode 100644 index 000000000..02fae2712 --- /dev/null +++ b/docs/po/pt.po @@ -0,0 +1,885 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2024-03-24 18:44+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Conta 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Limite de Lembretes de Transação" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Tags" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/pt_BR.po b/docs/po/pt_BR.po new file mode 100644 index 000000000..77a71c375 --- /dev/null +++ b/docs/po/pt_BR.po @@ -0,0 +1,915 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2024-01-08 06:00+0000\n" +"Last-Translator: Cassio Gomes Pereira \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "creditos-aos-tradutores" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Conta 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Conta" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Esta página explica todas as propriedades das contas no Denaro. A " +"maioria deles é mostrada na Caixa de Diálogo de Configurações da Conta. Essa caixa de diálogo também abre automaticamente depois de criar uma " +"nova conta." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Cada conta é armazenada em um único arquivo *.nmoney. Os " +"arquivos criados em uma versão estável mais antiga do Denaro podem ser abertos com segurança em uma versão estável mais " +"recente do aplicativo. Embora, o app possa ser executado em diferentes " +"plataformas (Windows e Linux), os arquivos *.nmoney são 100% " +"compatíveis entre as plataformas, desde que sejam da mesma versão do " +"aplicativo (V2023.1.0, por exemplo)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"As versões instáveis (Beta e RC) do aplicativo podem conter bugs ou " +"modificações inacabadas que podem causar perda de dados. NÃO use arquivos de " +"conta que contêm dados reais em versões instáveis do app!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nome" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"O nome da conta é mostrado na lista de contas recentes e nas abas. Um nome " +"não possui limite de tamanho e pode conter quaisquer caracteres, incluindo " +"emojis." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Tipo de Conta" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Existem 3 tipos de conta disponíveis: 🟣Corrente, 🔵Poupança e 🟢Comercial. O tipo da conta é so um rótulo útil que é " +"mostrado na lista de contas recentes e não afeta o funcionamento do " +"aplicativo ou o que pode ser feito com uma conta. Cada tipo de conta possui " +"sua própria cor. Essas cores podem ser configuradas nas configurações globais." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Tipo Padrão das Transações" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Quando você cria uma nova transação, o seu tipo, por padrão, será o mesmo " +"que nesta configuração." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Limite de Lembretes de Transação" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Moeda do Sistema" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Sempre que o aplicativo é iniciado, ele obtém os dados sobre a moeda e " +"formatação de números do seu sistema e os usa para mostrar o símbolo da " +"moeda (a menos que uma moeda personalizada seja usada. Veja abaixo) e para " +"determinar em que formato os números serão aceitos como valor para as " +"transações. Alguns exemplos:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Tags" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/ro.po b/docs/po/ro.po new file mode 100644 index 000000000..a419c8c75 --- /dev/null +++ b/docs/po/ro.po @@ -0,0 +1,886 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-08-27 17:36+0000\n" +"Last-Translator: Victor Mihalache \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Nume" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Tipul contului" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Tranzacție" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Descriere" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Sumă" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Gen" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Data" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Interval de repetare" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Data sfârșitul repetiției" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Grupă" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Etichete" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Chitanță" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Note" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/ru.po b/docs/po/ru.po new file mode 100644 index 000000000..0381facbf --- /dev/null +++ b/docs/po/ru.po @@ -0,0 +1,1151 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2023-08-24 10:19+0000\n" +"Last-Translator: Fyodor Sobolev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Счёт 🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Фёдор Соболев" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Счёт" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"На этой странице перечислены все свойства счетов в Denaro. " +"Большинство из них отображены в Диалоге настроек счёта. Этот " +"диалог открывается автоматически, когда вы создаёте новый счёт." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" +"Каждый счёт хранится в одном файле *.nmoney. Файлы, созданные в " +"старых стабильных версиях Denaro, могут быть безопасно " +"открыты в более новых стабильных версиях приложения. Приложение " +"поддерживает различные платформы (Windows and Linux), и файлы *." +"nmoney 100% совместимы между платформами, если используется та же " +"версия приложения (например, V2023.1.0)." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" +"Нестабильные (Beta и RC) версии приложения могут содержать ошибки или " +"незавершённые изменения, который могут привести к потере данных. НЕ " +"ИСПОЛЬЗУЙТЕ файлы счетов, содержащие важные данные, в нестабильных версиях " +"приложения!" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "Имя" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" +"Имя счёта отображается в списке недавних счетов и во вкладках. На количество " +"символов в имени нет ограничения, и оно может содержать любые символы, " +"включая эмодзи." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "Тип счёта" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" +"Доступно 3 типа счетов: 🟣Расчётный, 🔵Сберегательный и 🟢" +"Бизнес. Тип счёта представляет собой лишь полезную метку, которая " +"отображается в списке недавних счетов, и никак не влияет на работу " +"приложения, не меняет ничего в том, как вы можете использовать счёт. У " +"каждого типа счёта есть свой цвет, цвета можно настроить в глобальной конфигурации." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "Тип транзакции по умолчанию" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" +"Когда вы создаёте новую транзакцию, её тип по умолчанию будет тем же, что " +"указан этой настройкой." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "Порог напоминаний для транзакций" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" +"Этот порог используется для отображения напоминаний для грядущих транзакций." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "Системная валюта" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" +"Каждый раз, когда приложение запускается, оно получает данные о валюте и " +"формате чисел из региональных настроек вашей системы, и эти данные " +"используются для отображения символа валюты (если только вы не указали свою " +"валюту, смотрите ниже), а также для определения того, в каком формате числа " +"будут приниматься в качестве значения суммы для транзакций. Несколько " +"примеров:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" +"Если ваш регион Английский (США), знак $ будет символом " +"валюты, а 1,000.00 будет приниматься как корректное число." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" +"Если ваш регион Итальянский, знак будет символом валюты, " +"а 1.000,00 будет приниматься как корректное число." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" +"Если ваш регион Российский, знак будет символом валюты, " +"а 1000,00 будет приниматься как корректное число." + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" +"В ОС Linux возможно установить разные региональные настройки отдельно для " +"языка и форматов. Способ изменения этих настроек зависит от вашего рабочего " +"окружения. Несмотря на различия в расположении этих настроек, их изменение " +"приводит к модификации системных переменных окружения, таких как LANG (формат языка), LC_TIME (формат дат и времени) и " +"LC_MONETARY (формат чисел и валюты). Denaro " +"попытается использовать форматы для сумм транзакций и дат в соответствии с " +"этими переменными. Если приложение не использует ожидаемые форматы, " +"проверьте корректность значений переменных, используя команду locale в терминале. Если вы нашли ошибку в приложении и хотите сообщить о " +"ней, добавьте вывод команды locale в ваше сообщение, чтобы " +"разработчики смогли воспроизвести ошибку, установив идентичные настройки." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "Использование своей валюты" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" +"Если эта опция включена, свой Символ валюты будет использоваться " +"вместо символа, предоставленного региональными настройками вашей системы." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "Свой символ валюты" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "До 3 текстовых символов, либо 1 эмодзи. Не может быть числом." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "Свой код валюты" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "До 3 текстовых символов, либо 1 эмодзи." + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" +"Пример для понимания разницы между символом и кодом: $ — символ, " +"USD — код." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "Свой стиль отображения сумм" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "Можно выбрать один из следующих стилей:" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "₽n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "n₽" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "₽ n" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "n ₽" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "Десятичный разделитель и разделитель групп разрядов" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "До 2 текстовых символов, либо 1 эмодзи." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "Цифры в дробной части" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" +"Размер дробной части значений сумм. При выборе неограниченного размера будет " +"отображаться столько цифр, сколько необходимо для отображения точного " +"значения, но дробной части не будет, если число целое." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "Пароль" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" +"Каждый счёт может быть защищён паролем. Добавление пароля делает счёт " +"зашифрованным (доступ к данным невозможно получить, не расшифровав файл с " +"помощью пароля). Будьте осторожны: если вы забудете пароль, вы не сможете " +"восстановить данные! Пароль может быть изменён или удалён в диалоге настроек " +"счёта. Удаление пароля расшифровывает данные." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "Сортировка по номеру, дате или сумме" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" +"Каждый счёт хранит информацию о том, должны ли транзакции в главном окне " +"быть отсортированы по номеру, дате или сумме. Каждый раз, когда вы меняете " +"сортировку, она сохраняется для открытого счёта и будет восстановлена, когда " +"вы снова откроете этот счёт." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "Порядок сортировки" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" +"Каждый счёт хранит информацию о том, в каком порядке должны отображаться " +"транзакции в главном окне. Каждый раз, когда вы меняете порядок, он " +"сохраняется для открытого счёта и будет восстановлен, когда вы снова " +"откроете этот счёт." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "Видимость групп" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Каждый счёт хранит информацию о том, должен ли список групп быть показан в " +"главном окне. Каждый раз, когда вы меняете видимость списка групп, " +"информация об этом сохраняется для открытого счёта и состояние списка групп " +"будет восстановлено, когда вы снова откроете этот счёт." + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "Видимость меток" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" +"Каждый счёт хранит информацию о том, должен ли список меток быть показан в " +"главном окне. Каждый раз, когда вы меняете видимость списка меток, " +"информация об этом сохраняется для открытого счёта и состояние списка меток " +"будет восстановлено, когда вы снова откроете этот счёт." + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "Конфигурация 🔧" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "Конфигурация" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" +"На этой странице перечислены настройки, которые вы можете изменить в " +"конфигурации приложения." + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" +"В зависимости от вашей ОС, в интерфейсе приложения конфигурация называется " +"другим термином: Параметры или Настройки." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "Тема" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" +"Установите, должно ли приложение использовать светлую или тёмную тему, либо " +"следовать настройкам вашей системы. Для применения темы в ОС Windows " +"требуется перезапуск программы." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Цвет транзакции по умолчанию" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" +"Цвет, который будет выбран по умолчанию при создании новой транзакции с собственным цветом. Изменение цвета " +"не затронет существующие транзакции, даже если они используют цвет, который " +"ранее был цветом по умолчанию." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Цвет перевода средств по умолчанию" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" +"Цвет, который будет использован для транзакций, созданных с помощью перевода средств. Изменение цвета не затронет " +"существующие транзакции." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Цвет группы по умолчанию" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" +"Цвет, который будет выбран по умолчанию при создании новой группы. Это также " +"цвет группы «Несгруппированные»." + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "Вставка десятичного разделителя" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" +"Установите, нажатия каких кнопок будут вставлять десятичный разделитель в " +"поля сумм: точка на Numpad, любая точка или запятая, либо можно отключить " +"эту функцию. Если десятичный разделитель уже присутствует в строке, он не " +"будет добавлен." + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "Импорт/Экспорт 📤" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "Импорт/Экспорт" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "Форматы импорта" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "Даты должны быть в формате ГГГГММДД." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "Даты должны быть в Английском (США) формате (ММ/ДД/ГГГГ)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" +"❗ Хотя CSV является распространённым форматом, и некоторые банки " +"предоставляют возможность своим клиентам экспортировать данные в формате " +"CSV, такие файлы фактически являются таблицами, которые могут содержать " +"произвольные данные. Импорт CSV файла, созданного в другой программе, не " +"удастся, т.к. данные не будут совместимы с тем, что Denaro " +"ожидает получить из файла. Смысл импорта/экспорта CSV в том, чтобы " +"предоставить возможность добавлять новые данные в счёт, используя сторонние " +"программы, например, текстовые редакторы или офисные приложения. При импорте " +"только создаются новые транзакции, существующие не перезаписываются. Если вы " +"хотите создать CSV файл вручную, заголовок таблицы со всеми столбцами, " +"которые Denaro ожидает найти, выглядит следующим образом:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" +"Номер транзакции, должен быть уникальным для данного счёта. Номера " +"начинаются с 1." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" +"Дата транзакции (или дата начала для повторяющейся транзакции), должна быть " +"в Английском (США) формате (ММ/ДД/ГГГГ)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" +"Описание транзакции, может содержать любые символы, кроме точки с запятой." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "Тип транзакции: 0 - доход, 1 - расход." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "Число, соответствующее интервалу повтора транзакции:" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "0 - Никогда" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "1 - Ежедневно" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "2 - Еженедельно" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "7 - Раз в 2 недели" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "3 - Ежемесячно" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "4 - Ежеквартально" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "5 - Ежегодно" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "6 - Раз в два года" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" +"Подробности о повторящихся транзакциях смотрите в описании Интервала " +"Повтора на странице о транзакциях." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" +"Либо номер транзакции-источника, либо 0, если это транзакция-источник, либо " +"-1, если это не повторящаяся транзакция." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" +"Дата окончания повторяющейся транзакции, должна быть в Английском (США) " +"формате (ММ/ДД/ГГГГ). Оставьте это поле пустым, если транзакция не " +"повторяющаяся." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "Сумма транзакции в Английском (США) формате (123,456.78)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Цвет транзакции, должен быть в формате rgb(R,G,B), где R " +"(красный), G (зелёный) и B (синий) — это целые числа в " +"диапазоне от 0 до 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "Должен ли для транзакции использоваться цвет группы: 0 — нет, 1 — да." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" +"Номер группы транзакции. Номера начинаются с 1. Для транзакции без группы " +"укажите -1 (не 0, это некорректное значение для номера группы)." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" +"Имя группы транзакции, должно соответствовать номеру группы. Может содержать " +"любые символы, кроме точки с запятой. Оставьте это поле постым для " +"транзакции без группы, но если транзакция принадлежит к какой-либо группе, " +"имя не должно быть пустым." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" +"Описание группы транзакции, должно соответствовать номеру группы. Может " +"содержать любые символы, кроме точки с запятой, и может быть пустым. " +"Оставьте это поле постым для транзакции без группы." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" +"Цвет группы, должен быть в формате rgb(R,G,B), где R " +"(красный), G (зелёный) и B (синий) — это целые числа в " +"диапазоне от 0 до 255." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "Чек и заметки не присутствуют в формате CSV." + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "Форматы экспорта" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" +"Вы можете выбрать, следует ли экспортировать всю информацию или только из " +"текущего вида. Если выберите текущий вид, отображаемые в данный момент " +"транзакции будут экспортированы в том же порядке, в котором они показаны." + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" +"Файл будет содержать информацию о счёте, список транзакций и изображения " +"чеков. Транзакции окрашены цветами так же, как в приложении, но цвета " +"сделаны полупрозрачными, чтобы на них всегда был отчётливо виден чёрный " +"текст. Вы можете защитить экспортируемый файл паролем." + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "Справка Denaro" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "Справка Denaro" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "<_:media-1/> Справка Denaro" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" +"Эта документация призвана помочь вам понять, как управлять данными в " +"Denaro, чтобы использовать приложение максимально эффективно." + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" +"Для получения дополнительной помощи посетите раздел проблем или обсуждения на Github, либо наш канал в " +"Matrix." + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "Транзакция 🧾" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "Транзакция" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" +"На этой странице перечислены все свойства транзакций в Denaro." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "Номер" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" +"Каждой транзакции присваивается идентификационный номер, уникальный в " +"пределах счёта. Номера начинаются с 1 и увеличиваются с каждой добавленной " +"транзакцией. Номер нельзя изменить, номера удалённых транзакций не " +"используются повторно." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "Описание" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" +"Нет ограничений по длине. Может содержать любые символы, кроме точки с " +"запятой." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "Сумма" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" +"Число в формате, корректном для ваших региональных настроек, для " +"подробностей почитайте о Системной валюте на странице о счетах." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Тип" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" +"Доходы или Расходы. По умолчанию при открытии диалога " +"добавления новой транзакции будет выбран тот тип, что указан в настройках счёта." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "Дата" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" +"Может быть выбрана любая дата, вы также можете создавать транзакции для " +"будущих дат." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Интервал повтора" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" +"Укажите интервал повтора для создания повторяющихся транзакций. После " +"добавления транзакции с интервалом повтора, эта транзакция становится " +"транзакцией-источником. Denaro автоматически сгенерирует " +"транзакции-повторы вплоть до текущего дня, либо до даты окончания " +"повтора, если она в прошлом. Повторы нельзя редактировать и " +"удалять, только источник может быть изменён. Когда вы внесёте " +"изменения в источник, Denaro спросит, хотите ли вы так " +"же изменить повторы, либо же отвязать их. Если вы отвяжете " +"транзакции-повторы, они станут обычными транзакциями, которые можно " +"будет по отдельности редактировать и удалять." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Дата окончания повтора" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" +"Крайняя дата для транзакции с повтором. Она не может быть раньше или в тот " +"же день что и дата начала." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "Группа" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" +"Каждая транзакция может принадлежать только к одной группе, либо быть без " +"группы (т.е. принадлежать к группе «Несгруппированные»)." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "Цвет" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" +"Цвет транзакции. Можно либо использовать цвет группы, либо указать " +"собственный цвет. При выборе собственного цвета, по умолчанию он будет " +"соответствовать цвету, указанному в конфигурации, но он может быть изменён на " +"любой другой цвет." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Метки" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" +"Список меток для транзакции. У транзакции может быть сколько угодно меток " +"(либо не быть меток вовсе). Метки могут содержать любые символы, кроме " +"запятой (,), и у них может быть любая длина, но предполагается " +"что это буду короткие ключевые слова. Метки предназначены для дополнительной " +"фильтрации, когда использования групп недостаточно. Метки сохраняются в " +"самих транзакциях, в результате чего неиспользованные метки исчезают " +"автоматически при закрытии счёта." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "Чек" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" +"Изображение чека транзакции. Вы можете загрузить изображение в формате JPEG " +"или PNG, либо PDF документ, но независимо от формата файл будет " +"конвертирован и сохранён как изображение JPEG. Если вы загрузил PDF, только " +"первая страница будет сохранена. Удалить или загрузить другой файл можно в " +"любой момент." + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "Заметки" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "Текстовая заметка в свободной форме для прикрепления к транзакции." + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "Перевод средств" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "Перевод средств" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" +"Перевод средств — это способ перечислить деньги с одного счёта на другой. " +"После выполнения перевода будут созданы 2 транзакции со следующими " +"описаниями:" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "«Перевод на Имя целевого счёта» на исходном счёте." + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "«Перевод с Имя исходного счёта» на целевом счёте." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" +"Транзакции, созданные с помощью перевода средств, являются простыми " +"транзакциями, которые можно свободно редактировать и удалять. Эти транзакции " +"не связаны: изменение транзакции на исходном счёте не изменит транзакцию на " +"целевом счёте, и наоборот." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" +"Перевод средств не позволяет создавать повторяющиеся транзакции или задавать " +"какие-либо другие свойства, кроме суммы. Цвет, выбранный в конфигурации, будет использован для созданных " +"транзакций." + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" +"Если вы производите перевод средств между счетами с разными валютами, " +"Denaro попросит вас указать обменный курс." + +#~ msgid "Checking Account Color" +#~ msgstr "Цвет расчётного счёта" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Checking type in a recent accounts list." +#~ msgstr "" +#~ "Цвет, которым отмечаются Расчётные счета в списке недавних счетов." + +#~ msgid "Savings Account Color" +#~ msgstr "Цвет сберегательного счёта" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Savings type in a recent accounts list." +#~ msgstr "" +#~ "Цвет, которым отмечаются Сберегательные счета в списке недавних счетов." + +#~ msgid "Business Account Color" +#~ msgstr "Цвет бизнес счёта" + +#~ msgid "" +#~ "A color used to mark accounts with the " +#~ "Business type in a recent accounts list." +#~ msgstr "" +#~ "Цвет, которым отмечаются Бизнес счета в списке недавних счетов." + +#~ msgid "Use Native Digits" +#~ msgstr "Использовать местные цифры" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits. For example, if this setting is enabled ٠١٢ will be used " +#~ "instead of 012 for locales that use Eastern Arabic numerals." +#~ msgstr "" +#~ "Должно ли приложение использовать цифры, родные для вашего региона, " +#~ "вместо арабских цифр. Например, если эта настройка включена, ٠١٢ " +#~ "будут отображаться вместо 012 при региональных настройках, " +#~ "которые используют восточные арабские цифры." + +#~ msgid "CSV Backup Folder" +#~ msgstr "Папка резервных копий CSV" + +#~ msgid "" +#~ "A folder where your data will be automatically exported to CSV after every change. This feature doesn't " +#~ "work for password-protected accounts, because CSV files can't be password-" +#~ "protected." +#~ msgstr "" +#~ "Папка, в которую ваши данные будут автоматически экспортироваться в формате CSV после каждого изменения. " +#~ "Эта функция не работает для счетов, защищённых паролем, т.к. CSV файлы не " +#~ "могут быть защищены паролем." diff --git a/docs/po/sv.po b/docs/po/sv.po new file mode 100644 index 000000000..53545cf33 --- /dev/null +++ b/docs/po/sv.po @@ -0,0 +1,882 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/ta.po b/docs/po/ta.po new file mode 100644 index 000000000..943088ef4 --- /dev/null +++ b/docs/po/ta.po @@ -0,0 +1,882 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/tr.po b/docs/po/tr.po new file mode 100644 index 000000000..0bb7024da --- /dev/null +++ b/docs/po/tr.po @@ -0,0 +1,895 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2024-04-21 16:07+0000\n" +"Last-Translator: Ahmed selim üzüm \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "Hesap🏦" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "Hesap" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" +"Bu sayfa Denaro hesaplarının tüm özelliklerini açıklar. Bu " +"özelliklerin çoğu Hesap Ayarları Diyaloğu içerisinde gösterilir. " +"Bu diyalog ayrıca yeni bir hesap oluşturulduktan sonra otomatik olarak da " +"açılır." + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "İşlem Hatırlatma Eşiği" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "Öntanımlı İşlem Rengi" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "Öntanımlı Aktarım Rengi" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "Öntanımlı Grup Rengi" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "İşlem" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "Tür" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "Tekrarlama Aralığı" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "Tekrarlama Bitiş Tarihi" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "Etiketler" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Business Account Color" +#~ msgstr "Kurumsal Hesap Rengi" + +#~ msgid "Use Native Digits" +#~ msgstr "Yerel Rakamları Kullan" diff --git a/docs/po/ur.po b/docs/po/ur.po new file mode 100644 index 000000000..f3bc9303c --- /dev/null +++ b/docs/po/ur.po @@ -0,0 +1,882 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" diff --git a/docs/po/zh_CN.po b/docs/po/zh_CN.po new file mode 100644 index 000000000..ad82d2129 --- /dev/null +++ b/docs/po/zh_CN.po @@ -0,0 +1,902 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-05-24 01:58-0400\n" +"PO-Revision-Date: 2024-02-02 03:01+0000\n" +"Last-Translator: aerowolf \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.4-dev\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "" +"翻译者荣誉榜\n" +"Yuanlijie" + +#. (itstool) path: info/title +#: docs/yelp/C/account.page:8 +msgctxt "link" +msgid "Account 🏦" +msgstr "账户" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:10 docs/yelp/C/configuration.page:10 +#: docs/yelp/C/import-export.page:10 docs/yelp/C/index.page:10 +#: docs/yelp/C/transaction.page:10 docs/yelp/C/transfer.page:10 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#. (itstool) path: credit/name +#: docs/yelp/C/account.page:14 docs/yelp/C/configuration.page:14 +#: docs/yelp/C/import-export.page:14 docs/yelp/C/index.page:14 +#: docs/yelp/C/transaction.page:14 docs/yelp/C/transfer.page:14 +msgid "Nicholas Logozzo" +msgstr "Nicholas Logozzo" + +#. (itstool) path: page/title +#: docs/yelp/C/account.page:20 +msgid "Account" +msgstr "账户" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:21 +msgid "" +"This page explains all properties of accounts in Denaro. Most of " +"them are shown in Account Settings Dialog. This dialog also opens " +"automatically after you create a new account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/account.page:22 +msgid "" +"Each account is stored in a single *.nmoney file. Files created " +"in an older stable version of Denaro can be safely " +"opened in a more recent stable version of the application. Although " +"the app can run on different platforms (Windows and Linux), the *." +"nmoney files are 100% compatible between platforms as long as they " +"are from the same application version (i.e. V2023.1.0)." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:24 +msgid "" +"Unstable (Beta and RC) versions of the application can contain bugs or " +"unfinished modifications that can cause data loss. DO NOT use account files " +"that contain real data in unstable versions of the app!" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:29 +msgid "Name" +msgstr "名称" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:30 +msgid "" +"Account name is shown in the list of recent accounts and in tabs. A name " +"doesn't have a length limit and it can contain any characters, including " +"emojis." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:33 +msgid "Account Type" +msgstr "账户类型" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:34 +msgid "" +"There are 3 account types available: 🟣Checking, 🔵Savings " +"and 🟢Business. Account type is only a useful label that is shown " +"in the list of recent accounts and doesn't affect how the application works " +"or what you can do with an account. Each account type has its own color, " +"these colors can be configured in global " +"settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:37 +msgid "Default Transaction Type" +msgstr "默认的交易类型" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:38 +msgid "" +"When you create a new transaction its type by default will be the same as in " +"this setting." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:41 +msgid "Transaction Reminders Threshold" +msgstr "交易提醒阈值" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:42 +msgid "The threshold used when showing reminders about upcoming transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:45 +msgid "System Currency" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:46 +msgid "" +"Every time the application starts, it gets data about currency and numbers " +"formatting from your system locale, and this data is used to show currency " +"symbol (unless custom currency is used, see below) and to determine in what " +"format the numbers will be accepted as values for transaction amounts. A few " +"examples:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:48 +msgid "" +"If your locale is English (US), currency symbol will be set to " +"$ and 1,000.00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:49 +msgid "" +"If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:50 +msgid "" +"If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number." +msgstr "" + +#. (itstool) path: note/p +#: docs/yelp/C/account.page:53 +msgid "" +"On Linux, it is possible to set different locales for system language and " +"formats. Changing these settings varies depending on the desktop environment " +"you are using. Despite differences in the location of these settings on the " +"desktop, changing these settings modify system environment variables, such " +"as LANG, LC_TIME, and LC_MONETARY. " +"Denaro will try to use amount and date formats according to these " +"variables. If the app fails to use the expected formats, please make sure " +"the variables are set correctly via the locale command in a " +"terminal. If you found a bug and want to report it, please provide the " +"output of the locale command to allow developers to reproduce " +"your issue with the same settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:57 +msgid "Use Custom Currency" +msgstr "使用自定义货币" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:58 +msgid "" +"If this option is enabled, Custom Currency Symbol will be used " +"instead of currency symbol provided by your system locale." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:61 +msgid "Custom Currency Symbol" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:62 +msgid "Up to 3 characters or 1 emoji. It can't be a number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:65 +msgid "Custom Currency Code" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:66 +msgid "Up to 3 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:67 +msgid "" +"An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:70 +msgid "Custom Currency Amount Style" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:71 +msgid "A choice of displaying an amount in one of the following ways:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:73 +msgid "$n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:74 +msgid "n$" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:75 +msgid "$ n" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:76 +msgid "n $" +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:80 +msgid "Custom Currency Decimal and Group Separators" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:81 +msgid "Up to 2 characters or 1 emoji." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:84 +msgid "Custom Currency Decimal Digits" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:85 +msgid "" +"The size of decimal part of amount values. With \"Unlimited\" digits there " +"will be as many numbers in decimal part as required to show the precise " +"amount, but there will be no decimal part if the amount is an integer number." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:88 +msgid "Password" +msgstr "密码" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:89 +msgid "" +"Each account can be password-protected. Adding a password causes an account " +"to become encrypted (making it impossible to read the data without " +"decrypting it using the password). Be careful: if the password is lost, you " +"won't be able to restore the data! A password can also be changed or removed " +"using the account settings dialog of an open account. Removing a password " +"will decrypt the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:92 +msgid "Sort by Id, Date or Amount" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:93 +msgid "" +"Each account stores whether to sort transactions in the main window by their " +"id, date or amount. Every time you change this, it will be saved to the " +"account file and restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:96 +msgid "Sorting Order" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:97 +msgid "" +"Each account stores information about the order of transactions in the main " +"window. Every time you change this, it will be saved to the account file and " +"restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:100 +msgid "Groups Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:101 +msgid "" +"Each account stores information about whether the groups list in the main " +"window is hidden or not. Every time you change groups list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/account.page:104 +msgid "Tags Visibility" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/account.page:105 +msgid "" +"Each account stores information about whether the tags list in the main " +"window is hidden or not. Every time you change tags list visibility, it's " +"saved and then restored when you reopen the account." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/configuration.page:8 +msgctxt "link" +msgid "Configuration 🔧" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/configuration.page:20 +msgid "Configuration" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:21 +msgid "" +"This page describes what you can change in the application configuration." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/configuration.page:22 +msgid "" +"Depending on your platform, in the application interface the configuration " +"is referred as either Preferences or Settings." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:25 +msgid "Theme" +msgstr "主题" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:26 +msgid "" +"Set light or dark theme, or make Denaro follow your system theme. " +"Changing this on Windows requires the application restart to apply." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:29 +msgid "Transaction Default Color" +msgstr "默认交易颜色" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:30 +msgid "" +"A color that will be selected by default when adding a new transaction with unique color. Changing this " +"will not affect existing transactions, even if they use previously selected " +"default color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:33 +msgid "Transfer Default Color" +msgstr "默认转账颜色" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:34 +msgid "" +"A color that will be used for transactions created using transfer. Changing this will not affect existing " +"transactions." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:37 +msgid "Group Default Color" +msgstr "群组默认颜色" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:38 +msgid "" +"A color that will be selected by default when adding a new group. This is " +"also a color for «Ungrouped» group." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/configuration.page:41 +msgid "Insert Decimal Separator" +msgstr "插入十进制分隔符" + +#. (itstool) path: item/p +#: docs/yelp/C/configuration.page:42 +msgid "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field: numpad period, any period and comma, or none. If " +"decimal separator is already presented in a field, it will not be inserted." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/import-export.page:8 +msgctxt "link" +msgid "Import/Export 📤" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/import-export.page:20 +msgid "Import/Export" +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:22 +msgid "Import Formats" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:26 +msgid "Dates should be in YYYYMMDD format." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:30 +msgid "Dates should be in English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:34 +msgid "" +"❗ While CSV is a common format and some banks allow their users to export " +"information as CSV, these files are in fact tables that can contain " +"arbitrary data. Importing a CSV file created in other program will fail, " +"because its data will not be compatible with what Denaro tries to " +"get from a file. The purpose of CSV import/export is to provide a way to add " +"data to an account using external programs such as text editors and office " +"suites. Import will only add new transactions without overriding existing " +"ones. If you want to create a CSV file manually, this is the header that " +"includes all columns Denaro expects to find:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:39 +msgid "Transaction Id, should be unique for a given account. Ids start with 1." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:43 +msgid "" +"Transaction date (or start date in case of repeat transaction), should be in " +"English (US) format (MM/DD/YYYY)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:47 +msgid "" +"Transaction description, it can contain any characters except semicolon." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:51 +msgid "Transaction type: 0 for income, 1 for expense." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:55 +msgid "A number representing transaction repeat interval:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:56 +msgid "0 - Never" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:57 +msgid "1 - Daily" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:58 +msgid "2 - Weekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:59 +msgid "7 - Biweekly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:60 +msgid "3 - Monthly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:61 +msgid "4 - Quarterly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:62 +msgid "5 - Yearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:63 +msgid "6 - Biyearly" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:64 +msgid "" +"See Repeat Interval in transaction page for details about repeat transactions." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:68 +msgid "" +"Should be either an Id of source transaction or 0 if it's a source " +"transaction or -1 if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:72 +msgid "" +"End date for repeat transaction, should be in English (US) format (MM/DD/" +"YYYY). Leave it empty if it's not repeat transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:76 +msgid "Transaction amount in English (US) format (123,456.78)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:80 +msgid "" +"Transaction color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:84 +msgid "Whether a transaction should use group color: 0 — false, 1 — true." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:88 +msgid "" +"Transaction's group Id. Ids start with 1. For ungrouped transaction it " +"should be -1 (not 0, this is incorrect value for group Id)." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:92 +msgid "" +"Transaction's group name, should match group Id. It can contain any " +"characters except semicolon. Leave it empty for ungrouped transaction, in " +"any other cases it shouldn't be empty." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:96 +msgid "" +"Transaction's group description, should match group Id. It can contain any " +"characters except semicolon and can be empty. Leave it empty for ungrouped " +"transaction." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:100 +msgid "" +"Group color, should be in rgb(R,G,B) format where R, " +"G and B are integers in range between 0 and 255." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:103 +msgid "Receipt and notes are not present in CSV." +msgstr "" + +#. (itstool) path: div/title +#: docs/yelp/C/import-export.page:108 +msgid "Export Formats" +msgstr "" + +#. (itstool) path: div/p +#: docs/yelp/C/import-export.page:109 +msgid "" +"You can select whether to export all information or only from the current " +"view. If you select the current view, currently displayed transactions will " +"be exported in the same order in which they are shown." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/import-export.page:113 +msgid "" +"A file will contain an account information, a list of transactions and " +"images of receipts. Transactions are colored like in the application, but " +"colors are modified by making them half-transparent in order to make black " +"text always clearly visible. You can set a password for an exported file." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:7 +msgctxt "link" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/index.page:8 +msgctxt "text" +msgid "Denaro Help" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/index.page:20 +msgid "<_:media-1/> Denaro Help" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:21 +msgid "" +"This documentation will help you understand how to configure and manage data " +"in Denaro to get the most of the application." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/index.page:22 +msgid "" +"To get support, use issues or discussions on Github, or join our Matrix channel." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transaction.page:8 +msgctxt "link" +msgid "Transaction 🧾" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transaction.page:20 +msgid "Transaction" +msgstr "交易" + +#. (itstool) path: page/p +#: docs/yelp/C/transaction.page:21 +msgid "This page explains all properties of transactions in Denaro." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:25 +msgid "Id" +msgstr "ID" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:26 +msgid "" +"Each transaction has an Id that is unique for a given account. Ids start " +"with 1 and increase for every transaction added. Ids can't be changed, ids " +"of removed transactions are not reused." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:29 +msgid "Description" +msgstr "描述" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:30 +msgid "No limit on length. It can't contain semicolon." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:33 +msgid "Amount" +msgstr "金额" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:34 +msgid "" +"A number in a format that is valid for your locale, see System Currency in Account page for details." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:37 +msgid "Type" +msgstr "类型" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:38 +msgid "" +"Income or Expense. By default the one chosen in account settings will be selected when you open a " +"dialog to add new transaction." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:41 +msgid "Date" +msgstr "日期" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:42 +msgid "" +"Any date can be selected, you can also create transactions for future dates." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:45 +msgid "Repeat Interval" +msgstr "重复间隔" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:46 +msgid "" +"Use this option to create a recurring transaction. After you add transaction " +"with repeat interval, this transaction will become a source " +"transaction. Denaro will automatically generate repeat " +"transactions for the dates up until today or a provided end date if set in " +"the past. Repeat transactions can't be edited or deleted, only " +"source can be modified. When you modify source transaction " +"Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat " +"transactions become normal transactions and can be edited or deleted " +"separately." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:49 +msgid "Repeat End Date" +msgstr "重复结束日期" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:50 +msgid "" +"End date for a transaction with repeat. It can't be earlier than or on the " +"same day as start date." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:53 +msgid "Group" +msgstr "群组" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:54 +msgid "" +"Each transaction can belong to only one group or none («Ungrouped» group)." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:57 +msgid "Color" +msgstr "顏色" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:58 +msgid "" +"A color for transaction. Can be set to use either a group color or a unique " +"color. When selecting unique color, it will be set by default to the color " +"selected in configuration, but can be " +"changed to any color." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:61 +msgid "Tags" +msgstr "标签" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:62 +msgid "" +"A list of tags for transaction. A transaction can have unlimited number of " +"tags (or have no tags). Tags can contain any characters except comma (," +"), and have any length, but they are expected to be short keywords. " +"Tags are meant to be used for additional filtering when using groups is not " +"enough. Tags are only saved in transactions themselves, and as result unused " +"tags disappear automatically on account closing." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:65 +msgid "Receipt" +msgstr "收据" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:66 +msgid "" +"An image of a receipt for transaction. You can upload JPEG or PNG image or " +"PDF document, but no matter the format it will be converted and saved as " +"JPEG image. In case of PDF, only the first page will be saved. You can " +"delete or upload another file anytime." +msgstr "" + +#. (itstool) path: item/title +#: docs/yelp/C/transaction.page:69 +msgid "Notes" +msgstr "注释" + +#. (itstool) path: item/p +#: docs/yelp/C/transaction.page:70 +msgid "A freeform text note to attach to transaction." +msgstr "" + +#. (itstool) path: info/title +#: docs/yelp/C/transfer.page:8 +msgctxt "link" +msgid "Transfer 💸" +msgstr "" + +#. (itstool) path: page/title +#: docs/yelp/C/transfer.page:20 +msgid "Transfer" +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:21 +msgid "" +"Transfer is a way to move money from one account to another. After running a " +"transfer 2 transactions will be created with the following descriptions:" +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:24 +msgid "" +"«Transfer to Destination Account Name» on source account." +msgstr "" + +#. (itstool) path: item/p +#: docs/yelp/C/transfer.page:27 +msgid "" +"«Transfer from Source Account Name» on destination account." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:30 +msgid "" +"Transactions created using transfer are simple transactions that can be " +"freely edited or deleted. These transactions are not connected: modifying " +"transaction on source account will not affect transaction on destination " +"account, and vice versa." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:31 +msgid "" +"Transfer doesn't allow you to create repeating transactions or set any " +"properties other than the amount. The color selected in configuration will be used for created " +"transactions." +msgstr "" + +#. (itstool) path: page/p +#: docs/yelp/C/transfer.page:32 +msgid "" +"If you create a transfer between accounts with different currencies, you " +"will be asked to provide a conversion rate." +msgstr "" + +#~ msgid "Checking Account Color" +#~ msgstr "支票账户颜色" + +#~ msgid "Savings Account Color" +#~ msgstr "储蓄账户颜色" + +#~ msgid "Business Account Color" +#~ msgstr "商务账户颜色" + +#~ msgid "Use Native Digits" +#~ msgstr "使用原生数字" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CVS备份文件夹" diff --git a/NickvisionMoney.Shared/Docs/yelp/C/account.page b/docs/yelp/C/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/C/account.page rename to docs/yelp/C/account.page diff --git a/docs/yelp/C/configuration.page b/docs/yelp/C/configuration.page new file mode 100644 index 000000000..a3b9c3f1f --- /dev/null +++ b/docs/yelp/C/configuration.page @@ -0,0 +1,45 @@ + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
\ No newline at end of file diff --git a/docs/yelp/C/figures/denaro.png b/docs/yelp/C/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/C/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/C/import-export.page b/docs/yelp/C/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/C/import-export.page rename to docs/yelp/C/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/C/index.page b/docs/yelp/C/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/C/index.page rename to docs/yelp/C/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/C/transaction.page b/docs/yelp/C/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/C/transaction.page rename to docs/yelp/C/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/C/transfer.page b/docs/yelp/C/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/C/transfer.page rename to docs/yelp/C/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/account.page b/docs/yelp/ar/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ar/account.page rename to docs/yelp/ar/account.page diff --git a/docs/yelp/ar/configuration.page b/docs/yelp/ar/configuration.page new file mode 100644 index 000000000..e2c001a08 --- /dev/null +++ b/docs/yelp/ar/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + اللون المبدئيُّ للمعاملات +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + اللون المبدئيُّ للتحويلات +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + اللون المبدئيُّ للمجموعات +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/ar/figures/denaro.png b/docs/yelp/ar/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/ar/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/import-export.page b/docs/yelp/ar/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ar/import-export.page rename to docs/yelp/ar/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/index.page b/docs/yelp/ar/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ar/index.page rename to docs/yelp/ar/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/transaction.page b/docs/yelp/ar/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ar/transaction.page rename to docs/yelp/ar/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ar/transfer.page b/docs/yelp/ar/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ar/transfer.page rename to docs/yelp/ar/transfer.page diff --git a/docs/yelp/bg/account.page b/docs/yelp/bg/account.page new file mode 100644 index 000000000..6c5c86626 --- /dev/null +++ b/docs/yelp/bg/account.page @@ -0,0 +1,105 @@ + + + + + Account 🏦 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Сметка +

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+ +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+ + + + Име +

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
+ + Вид на сметката +

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
+ + Стандартен вид на операциите +

When you create a new transaction its type by default will be the same as in this setting.

+
+ + Праг на напомнянията за операции +

The threshold used when showing reminders about upcoming transactions.

+
+ + System Currency +

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+ +

If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

+

If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

+

If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

+
+ +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+ + Използване на собствена валута +

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
+ + Custom Currency Symbol +

Up to 3 characters or 1 emoji. It can't be a number.

+
+ + Custom Currency Code +

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+ + Custom Currency Amount Style +

A choice of displaying an amount in one of the following ways:

+ +

$n

+

n$

+

$ n

+

n $

+
+
+ + Custom Currency Decimal and Group Separators +

Up to 2 characters or 1 emoji.

+
+ + Custom Currency Decimal Digits +

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
+ + Парола +

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
+ + Sort by Id, Date or Amount +

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
+ + Sorting Order +

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
+ + Groups Visibility +

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
+ + Tags Visibility +

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+
diff --git a/docs/yelp/bg/configuration.page b/docs/yelp/bg/configuration.page new file mode 100644 index 000000000..ee4e79b3c --- /dev/null +++ b/docs/yelp/bg/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Тема +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Стандартен цвят на операциите +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Стандартен цвят на преводите +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Стандартен цвят на групите +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Вмъкване на десетичен знак +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/bg/figures/denaro.png b/docs/yelp/bg/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/bg/figures/denaro.png differ diff --git a/docs/yelp/bg/import-export.page b/docs/yelp/bg/import-export.page new file mode 100644 index 000000000..d4b31007f --- /dev/null +++ b/docs/yelp/bg/import-export.page @@ -0,0 +1,117 @@ + + + + + Import/Export 📤 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Import/Export +
+ Import Formats + + +

Open Financial Exchange (.ofx)

+

Dates should be in YYYYMMDD format.

+
+ +

Quicken Interchange Format (.qif)

+

Dates should be in English (US) format (MM/DD/YYYY).

+
+ +

Denaro CSV (.csv)

+

❗ While CSV is a common format and some banks allow their users to export information as CSV, these files are in fact tables that can contain arbitrary data. Importing a CSV file created in other program will fail, because its data will not be compatible with what Denaro tries to get from a file. The purpose of CSV import/export is to provide a way to add data to an account using external programs such as text editors and office suites. Import will only add new transactions without overriding existing ones. If you want to create a CSV file manually, this is the header that includes all columns Denaro expects to find:

+

ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

+ + + ID +

Transaction Id, should be unique for a given account. Ids start with 1.

+
+ + Date +

Transaction date (or start date in case of repeat transaction), should be in English (US) format (MM/DD/YYYY).

+
+ + Description +

Transaction description, it can contain any characters except semicolon.

+
+ + Type +

Transaction type: 0 for income, 1 for expense.

+
+ + RepeatInterval +

A number representing transaction repeat interval:

+

0 - Never

+

1 - Daily

+

2 - Weekly

+

7 - Biweekly

+

3 - Monthly

+

4 - Quarterly

+

5 - Yearly

+

6 - Biyearly

+

See Repeat Interval in transaction page for details about repeat transactions.

+
+ + RepeatFrom +

Should be either an Id of source transaction or 0 if it's a source transaction or -1 if it's not repeat transaction.

+
+ + RepeatEndDate +

End date for repeat transaction, should be in English (US) format (MM/DD/YYYY). Leave it empty if it's not repeat transaction.

+
+ + Amount +

Transaction amount in English (US) format (123,456.78).

+
+ + RGBA +

Transaction color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

+
+ + UseGroupColor +

Whether a transaction should use group color: 0 — false, 1 — true.

+
+ + Group +

Transaction's group Id. Ids start with 1. For ungrouped transaction it should be -1 (not 0, this is incorrect value for group Id).

+
+ + GroupName +

Transaction's group name, should match group Id. It can contain any characters except semicolon. Leave it empty for ungrouped transaction, in any other cases it shouldn't be empty.

+
+ + GroupDescription +

Transaction's group description, should match group Id. It can contain any characters except semicolon and can be empty. Leave it empty for ungrouped transaction.

+
+ + GroupRGBA +

Group color, should be in rgb(R,G,B) format where R, G and B are integers in range between 0 and 255.

+
+
+

Receipt and notes are not present in CSV.

+
+
+
+
+ Export Formats +

You can select whether to export all information or only from the current view. If you select the current view, currently displayed transactions will be exported in the same order in which they are shown.

+ + +

Portable Document Format (.pdf)

+

A file will contain an account information, a list of transactions and images of receipts. Transactions are colored like in the application, but colors are modified by making them half-transparent in order to make black text always clearly visible. You can set a password for an exported file.

+
+ +

Denaro CSV (.csv)

+
+
+
+
diff --git a/docs/yelp/bg/index.page b/docs/yelp/bg/index.page new file mode 100644 index 000000000..a2da546c0 --- /dev/null +++ b/docs/yelp/bg/index.page @@ -0,0 +1,20 @@ + + + + Denaro Help + Denaro Help + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +<media its:translate="no" type="image" src="figures/denaro.png"/> Denaro Help +

This documentation will help you understand how to configure and manage data in Denaro to get the most of the application.

+

To get support, use issues or discussions on Github, or join our Matrix channel.

+
diff --git a/docs/yelp/bg/transaction.page b/docs/yelp/bg/transaction.page new file mode 100644 index 000000000..fb2e9807f --- /dev/null +++ b/docs/yelp/bg/transaction.page @@ -0,0 +1,70 @@ + + + + + Transaction 🧾 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Операция +

This page explains all properties of transactions in Denaro.

+ + + + Идентификатор +

Each transaction has an Id that is unique for a given account. Ids start with 1 and increase for every transaction added. Ids can't be changed, ids of removed transactions are not reused.

+
+ + Описание +

No limit on length. It can't contain semicolon.

+
+ + Сума +

A number in a format that is valid for your locale, see System Currency in Account page for details.

+
+ + Вид +

Income or Expense. By default the one chosen in account settings will be selected when you open a dialog to add new transaction.

+
+ + Дата +

Any date can be selected, you can also create transactions for future dates.

+
+ + Интервал на повторение +

Use this option to create a recurring transaction. After you add transaction with repeat interval, this transaction will become a source transaction. Denaro will automatically generate repeat transactions for the dates up until today or a provided end date if set in the past. Repeat transactions can't be edited or deleted, only source can be modified. When you modify source transaction Denaro will ask if you want to modify or disassociate repeat transactions. If you choose to disassociate, repeat transactions become normal transactions and can be edited or deleted separately.

+
+ + Крайна дата на повторение +

End date for a transaction with repeat. It can't be earlier than or on the same day as start date.

+
+ + Група +

Each transaction can belong to only one group or none («Ungrouped» group).

+
+ + Цвят +

A color for transaction. Can be set to use either a group color or a unique color. When selecting unique color, it will be set by default to the color selected in configuration, but can be changed to any color.

+
+ + Етикети +

A list of tags for transaction. A transaction can have unlimited number of tags (or have no tags). Tags can contain any characters except comma (,), and have any length, but they are expected to be short keywords. Tags are meant to be used for additional filtering when using groups is not enough. Tags are only saved in transactions themselves, and as result unused tags disappear automatically on account closing.

+
+ + Разписка +

An image of a receipt for transaction. You can upload JPEG or PNG image or PDF document, but no matter the format it will be converted and saved as JPEG image. In case of PDF, only the first page will be saved. You can delete or upload another file anytime.

+
+ + Бележки +

A freeform text note to attach to transaction.

+
+
+
diff --git a/docs/yelp/bg/transfer.page b/docs/yelp/bg/transfer.page new file mode 100644 index 000000000..6f65fa33d --- /dev/null +++ b/docs/yelp/bg/transfer.page @@ -0,0 +1,30 @@ + + + + + Transfer 💸 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Transfer +

Transfer is a way to move money from one account to another. After running a transfer 2 transactions will be created with the following descriptions:

+ + +

«Transfer to Destination Account Name» on source account.

+
+ +

«Transfer from Source Account Name» on destination account.

+
+
+

Transactions created using transfer are simple transactions that can be freely edited or deleted. These transactions are not connected: modifying transaction on source account will not affect transaction on destination account, and vice versa.

+

Transfer doesn't allow you to create repeating transactions or set any properties other than the amount. The color selected in configuration will be used for created transactions.

+

If you create a transfer between accounts with different currencies, you will be asked to provide a conversion rate.

+
diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/account.page b/docs/yelp/cs/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/cs/account.page rename to docs/yelp/cs/account.page diff --git a/docs/yelp/cs/configuration.page b/docs/yelp/cs/configuration.page new file mode 100644 index 000000000..7a707fd62 --- /dev/null +++ b/docs/yelp/cs/configuration.page @@ -0,0 +1,48 @@ + + + + + Nastavení 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+ + + Jonáš Loskot + jonas.loskot@pm.me + 2023 + +
+ +Nastavení +

Na této stránce je popsáno, co můžete změnit v nastavení aplikace.

+

V závislosti na platformě je konfigurace v rozhraní aplikace označena jako Předvolby nebo Nastavení.

+ + + Motiv +

Nastavte si světlý nebo tmavý motiv, nebo nastavte, aby Denaro následovalo váš systémový motiv. Změna tohoto nastavení v systému Windows vyžaduje restart aplikace, aby se uplatnila.

+
+ + Výchozí barva transakce +

Barva, která bude vybrána jako výchozí při přidání nové transakce s jedinečnou barvou. Její změna neovlivní existující transakce, i když používají dříve zvolenou výchozí barvu.

+
+ + Výchozí barva převodu +

Barva, která bude použita pro transakce vytvořené pomocí převodu . Změna tohoto parametru neovlivní existující transakce.

+
+ + Výchozí barva skupiny +

Barva, která bude ve výchozím nastavení vybrána při přidávání nové skupiny. Je to také barva pro skupinu „Neseskupené“.

+
+ + Vložení desetinného oddělovače +

Nastavení, pro které stisknuté klávesy se do pole částky vloží desetinný oddělovač lokálního jazyka: tečka na numerickém bloku, libovolná tečka a čárka nebo žádný. Pokud již je desetinný oddělovač v poli, nebude vložen.

+
+
+
diff --git a/docs/yelp/cs/figures/denaro.png b/docs/yelp/cs/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/cs/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/import-export.page b/docs/yelp/cs/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/cs/import-export.page rename to docs/yelp/cs/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/index.page b/docs/yelp/cs/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/cs/index.page rename to docs/yelp/cs/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/transaction.page b/docs/yelp/cs/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/cs/transaction.page rename to docs/yelp/cs/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/cs/transfer.page b/docs/yelp/cs/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/cs/transfer.page rename to docs/yelp/cs/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/da/account.page b/docs/yelp/da/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/da/account.page rename to docs/yelp/da/account.page diff --git a/docs/yelp/da/configuration.page b/docs/yelp/da/configuration.page new file mode 100644 index 000000000..8330afca3 --- /dev/null +++ b/docs/yelp/da/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/da/figures/denaro.png b/docs/yelp/da/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/da/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/da/import-export.page b/docs/yelp/da/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/da/import-export.page rename to docs/yelp/da/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/da/index.page b/docs/yelp/da/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/da/index.page rename to docs/yelp/da/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/da/transaction.page b/docs/yelp/da/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/da/transaction.page rename to docs/yelp/da/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/da/transfer.page b/docs/yelp/da/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/da/transfer.page rename to docs/yelp/da/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/de/account.page b/docs/yelp/de/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/de/account.page rename to docs/yelp/de/account.page diff --git a/docs/yelp/de/configuration.page b/docs/yelp/de/configuration.page new file mode 100644 index 000000000..f2cd124d0 --- /dev/null +++ b/docs/yelp/de/configuration.page @@ -0,0 +1,48 @@ + + + + + Konfiguration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+ + + Jummit + jummit@web.de + 2023 + +
+ +Konfiguration +

Diese Seite beschreibt, was Sie in der Anwendungskonfiguration ändern können.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Thema +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Standardfarbe für Überweisungen +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Standardfarbe der Gruppe +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Dezimaltrennzeichen einfügen +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/de/figures/denaro.png b/docs/yelp/de/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/de/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/de/import-export.page b/docs/yelp/de/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/de/import-export.page rename to docs/yelp/de/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/de/index.page b/docs/yelp/de/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/de/index.page rename to docs/yelp/de/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/de/transaction.page b/docs/yelp/de/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/de/transaction.page rename to docs/yelp/de/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/de/transfer.page b/docs/yelp/de/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/de/transfer.page rename to docs/yelp/de/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/es/account.page b/docs/yelp/es/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/es/account.page rename to docs/yelp/es/account.page diff --git a/docs/yelp/es/configuration.page b/docs/yelp/es/configuration.page new file mode 100644 index 000000000..f6ca7d35d --- /dev/null +++ b/docs/yelp/es/configuration.page @@ -0,0 +1,48 @@ + + + + + Configuración 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+ + + Óscar Fernández Díaz + oscfdezdz@tuta.io + 2023 + +
+ +Configuración +

Esta página describe lo que puede cambiar en la configuración de la aplicación.

+

Dependiendo de su plataforma, en la interfaz de la aplicación, la configuración se denomina Preferencias o Configuración.

+ + + Tema +

Establezca un tema claro u oscuro, o haga que Denaro siga el tema de su sistema. Cambiar esto en Windows requiere que se reinicie la aplicación para aplicar.

+
+ + Color de transacción predeterminado +

Un color que se seleccionará por defecto al agregar una transacción nueva con color único. Cambiar esto no afectará las transacciones existentes, incluso si usa el color predeterminado seleccionado previamente.

+
+ + Color predeterminado de la transferencia +

Un color que se usará para transacciones creadas usando transferencia. Cambiar esto no afectará las transacciones existentes.

+
+ + Color predeterminado del grupo +

Color que se seleccionará por defecto al añadir un grupo nuevo. También es un color para el grupo "No agrupado".

+
+ + Insertar separador decimal +

Establece para qué teclas pulsadas se insertará el separador decimal de la configuración regional en un campo de importe: punto del teclado numérico, cualquier punto y coma, o ninguno. Si el separador decimal ya aparece en un campo, no se insertará.

+
+
+
diff --git a/docs/yelp/es/figures/denaro.png b/docs/yelp/es/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/es/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/es/import-export.page b/docs/yelp/es/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/es/import-export.page rename to docs/yelp/es/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/es/index.page b/docs/yelp/es/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/es/index.page rename to docs/yelp/es/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/es/transaction.page b/docs/yelp/es/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/es/transaction.page rename to docs/yelp/es/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/es/transfer.page b/docs/yelp/es/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/es/transfer.page rename to docs/yelp/es/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/et/account.page b/docs/yelp/et/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/et/account.page rename to docs/yelp/et/account.page diff --git a/docs/yelp/et/configuration.page b/docs/yelp/et/configuration.page new file mode 100644 index 000000000..35c5b10d1 --- /dev/null +++ b/docs/yelp/et/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/et/figures/denaro.png b/docs/yelp/et/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/et/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/et/import-export.page b/docs/yelp/et/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/et/import-export.page rename to docs/yelp/et/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/et/index.page b/docs/yelp/et/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/et/index.page rename to docs/yelp/et/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/et/transaction.page b/docs/yelp/et/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/et/transaction.page rename to docs/yelp/et/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/et/transfer.page b/docs/yelp/et/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/et/transfer.page rename to docs/yelp/et/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/account.page b/docs/yelp/fi/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fi/account.page rename to docs/yelp/fi/account.page diff --git a/docs/yelp/fi/configuration.page b/docs/yelp/fi/configuration.page new file mode 100644 index 000000000..eba69b0e9 --- /dev/null +++ b/docs/yelp/fi/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/fi/figures/denaro.png b/docs/yelp/fi/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/fi/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/import-export.page b/docs/yelp/fi/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fi/import-export.page rename to docs/yelp/fi/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/index.page b/docs/yelp/fi/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fi/index.page rename to docs/yelp/fi/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/transaction.page b/docs/yelp/fi/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fi/transaction.page rename to docs/yelp/fi/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fi/transfer.page b/docs/yelp/fi/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fi/transfer.page rename to docs/yelp/fi/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/account.page b/docs/yelp/fr/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fr/account.page rename to docs/yelp/fr/account.page diff --git a/docs/yelp/fr/configuration.page b/docs/yelp/fr/configuration.page new file mode 100644 index 000000000..e151c3cb8 --- /dev/null +++ b/docs/yelp/fr/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

Cette page décrit ce que vous pouvez modifier dans la configuration de l’application.

+

Dépendant de votre plateforme, la configuration apparaît dans l’interface de l’application sous le vocable Préférences ou Paramètres.

+ + + Thème +

Définissez un thème sombre ou clair, ou faites en sorte que Denaro suive celui du système. Le changement de ce paramètre sous Windows requiert un redémarrage de l’application.

+
+ + Couleur par défaut des transactions +

Une couleur qui sera sélectionnée par défaut lors de l’ajout d’une nouvelle transaction avec une couleur unique. Changer ce paramètre n’affectera pas les transactions existantes, même si elles utilisaient la couleur par défaut précédemment sélectionnée.

+
+ + Couleur par défaut des transferts +

Une couleur qui sera utilisée pour les transactions créées par un transfert. Changer ce paramètre n’affectera pas les transactions existantes.

+
+ + Couleur de groupe par défaut +

Couleur sélectionnée par défaut lorsqu’un nouveau groupe sera ajouté. C’est également la couleur du groupe « Sans groupe ».

+
+ + Insérer un séparateur de décimales +

Définissez pour quelles touches pressées le séparateur décimal de la langue locale sera inséré lors de la saisie d’un montant : point du pavé numérique, n’importe quel point ou virgule du clavier, ou aucune. Si le séparateur des décimales est déjà présent dans le champ de saisie, il ne sera pas inséré.

+
+
+
diff --git a/docs/yelp/fr/figures/denaro.png b/docs/yelp/fr/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/fr/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/import-export.page b/docs/yelp/fr/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fr/import-export.page rename to docs/yelp/fr/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/index.page b/docs/yelp/fr/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fr/index.page rename to docs/yelp/fr/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/transaction.page b/docs/yelp/fr/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fr/transaction.page rename to docs/yelp/fr/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/fr/transfer.page b/docs/yelp/fr/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/fr/transfer.page rename to docs/yelp/fr/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/account.page b/docs/yelp/gl/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/gl/account.page rename to docs/yelp/gl/account.page diff --git a/docs/yelp/gl/configuration.page b/docs/yelp/gl/configuration.page new file mode 100644 index 000000000..753cb891d --- /dev/null +++ b/docs/yelp/gl/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/gl/figures/denaro.png b/docs/yelp/gl/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/gl/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/import-export.page b/docs/yelp/gl/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/gl/import-export.page rename to docs/yelp/gl/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/index.page b/docs/yelp/gl/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/gl/index.page rename to docs/yelp/gl/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/transaction.page b/docs/yelp/gl/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/gl/transaction.page rename to docs/yelp/gl/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/gl/transfer.page b/docs/yelp/gl/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/gl/transfer.page rename to docs/yelp/gl/transfer.page diff --git a/docs/yelp/hi/account.page b/docs/yelp/hi/account.page new file mode 100644 index 000000000..b1193a436 --- /dev/null +++ b/docs/yelp/hi/account.page @@ -0,0 +1,105 @@ + + + + + खाता 🏦 + + फ्योडोर सोबोलेव + 2023 + + + निकोलस लोगोज़ो + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +खाता +

यह पृष्ठ Denaro में खातों की सभी संपत्तियों की व्याख्या करता है। उनमें से अधिकांश खाता सेटिंग डायलॉग में दिखाए गए हैं। नया खाता बनाने के बाद यह संवाद भी स्वतः खुल जाता है।

+

प्रत्येक खाता एक एकल *.nmoney फ़ाइल में संग्रहीत है। Denaro के पुराने स्थिर वर्शन में बनाई गई फाइलें एप्लिकेशन के नवीनतम स्थिर वर्शन में सुरक्षित रूप से खोली जा सकती हैं। हालाँकि ऐप विभिन्न प्लेटफ़ॉर्म (Windows और Linux) पर चल सकता है, *.nmoney फाइलें प्लेटफ़ॉर्म के बीच 100% संगत हैं, जब तक कि वे एक ही एप्लिकेशन वर्शन (यानी V2023.1.0) से हैं।

+ +

एप्लिकेशन के अस्थिर (Beta और RC) वर्शन में बग या अधूरे संशोधन हो सकते हैं जो डेटा हानि का कारण बन सकते हैं। ऐप के अस्थिर वर्शन में वास्तविक डेटा वाली खाता फाइलों का उपयोग न करें!

+
+ + + + नाम +

खाते का नाम हाल के खातों की सूची और टैब में दिखाया गया है। नाम की लंबाई की कोई सीमा नहीं होती और इसमें इमोजी सहित कोई भी अक्षर हो सकता है।

+
+ + खाते का प्रकार +

3 खाता प्रकार उपलब्ध हैं: 🟣चेकिंग, 🔵बचत और 🟢व्यवसाय। खाता प्रकार केवल एक उपयोगी लेबल है जो हाल के खातों की सूची में दिखाया गया है और यह प्रभावित नहीं करता है कि एप्लिकेशन कैसे काम करता है या आप किसी खाते के साथ क्या कर सकते हैं। प्रत्येक खाता प्रकार का अपना रंग होता है, इन रंगों को वैश्विक सेटिंग्स में कॉन्फ़िगर किया जा सकता है।

+
+ + डिफ़ॉल्ट लेनदेन प्रकार +

जब आप कोई नया लेनदेन बनाते हैं तो डिफ़ॉल्ट रूप से उसका प्रकार इस सेटिंग के समान ही होगा।

+
+ + लेन-देन अनुस्मारक सीमा +

आगामी लेनदेन के बारे में अनुस्मारक दिखाते समय उपयोग की जाने वाली सीमा।

+
+ + सिस्टम मुद्रा +

हर बार जब एप्लिकेशन शुरू होता है, तो उसे आपके सिस्टम लोकेल से मुद्रा और संख्या स्वरूपण के बारे में डेटा मिलता है, और इस डेटा का उपयोग मुद्रा प्रतीक दिखाने के लिए किया जाता है (जब तक कि कस्टम मुद्रा का उपयोग नहीं किया जाता है, नीचे देखें) और यह निर्धारित करने के लिए कि संख्याओं को किस प्रारूप में स्वीकार किया जाएगा लेन-देन की रकम के लिए मान. कुछ उदाहरण:

+ +

यदि आपका स्थान अंग्रेजी (US) है, तो मुद्रा प्रतीक $ पर सेट किया जाएगा और 1,000.00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।

+

यदि आपका स्थान इतालवी है, तो मुद्रा प्रतीक पर सेट किया जाएगा और 1.000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।

+

यदि आपका स्थान रूसी है, तो मुद्रा प्रतीक पर सेट किया जाएगा और 1000,00 को एक वैध संख्या के रूप में स्वीकार किया जाएगा।

+
+ +

Linux पर, सिस्टम भाषा और प्रारूपों के लिए अलग-अलग स्थान सेट करना संभव है। इन सेटिंग्स को बदलना आपके द्वारा उपयोग किए जा रहे डेस्कटॉप वातावरण के आधार पर भिन्न होता है। डेस्कटॉप पर इन सेटिंग्स के स्थान में अंतर के बावजूद, इन सेटिंग्स को बदलने से सिस्टम पर्यावरण चर, जैसे LANG, LC_TIME, और LC_MONETARY को संशोधित किया जाता है। Denaro इन चरों के अनुसार राशि और दिनांक प्रारूपों का उपयोग करने का प्रयास करेगा। यदि ऐप अपेक्षित प्रारूपों का उपयोग करने में विफल रहता है, तो कृपया सुनिश्चित करें कि टर्मिनल में लोकेल कमांड के माध्यम से वेरिएबल सही ढंग से सेट किए गए हैं। यदि आपको कोई बग मिला है और आप इसकी रिपोर्ट करना चाहते हैं, तो कृपया लोकेल कमांड का आउटपुट प्रदान करें ताकि डेवलपर्स उसी सेटिंग्स के साथ आपकी समस्या को पुन: उत्पन्न कर सकें।

+
+
+ + कस्टम मुद्रा का प्रयोग करें +

यदि यह विकल्प सक्षम है, तो आपके सिस्टम लोकेल द्वारा प्रदान किए गए मुद्रा प्रतीक के बजाय कस्टम मुद्रा प्रतीक का उपयोग किया जाएगा।

+
+ + कस्टम मुद्रा चिह्न +

अधिकतम 3 अक्षर या 1 इमोजी. यह कोई संख्या नहीं हो सकती।

+
+ + कस्टम मुद्रा कोड +

अधिकतम 3 अक्षर या 1 इमोजी।

+

प्रतीक और कोड के बीच अंतर को समझने के लिए एक उदाहरण: $ एक प्रतीक है, USD एक कोड है।

+
+ + कस्टम मुद्रा राशि शैली +

निम्नलिखित तरीकों में से किसी एक में राशि प्रदर्शित करने का विकल्प:

+ +

$n

+

n$

+

$ n

+

n $

+
+
+ + कस्टम मुद्रा दशमलव और समूह विभाजक +

अधिकतम 2 अक्षर या 1 इमोजी।

+
+ + कस्टम मुद्रा दशमलव अंक +

राशि मानों के दशमलव भाग का आकार. "असीमित" अंकों के साथ दशमलव भाग में उतनी ही संख्याएँ होंगी जितनी सटीक राशि दिखाने के लिए आवश्यक हैं, लेकिन यदि राशि एक पूर्णांक संख्या है तो कोई दशमलव भाग नहीं होगा।

+
+ + पासवर्ड +

प्रत्येक खाते को पासवर्ड से सुरक्षित किया जा सकता है। पासवर्ड जोड़ने से खाता एन्क्रिप्ट हो जाता है (पासवर्ड का उपयोग करके डिक्रिप्ट किए बिना डेटा को पढ़ना असंभव हो जाता है)। सावधान रहें: यदि पासवर्ड खो गया है, तो आप डेटा पुनर्स्थापित नहीं कर पाएंगे! किसी खुले खाते के खाता सेटिंग संवाद का उपयोग करके पासवर्ड को बदला या हटाया भी जा सकता है। पासवर्ड हटाने से खाता डिक्रिप्ट हो जाएगा।

+
+ + Id, दिनांक या राशि के अनुसार क्रमबद्ध करें +

प्रत्येक खाता यह संग्रहीत करता है कि लेन-देन को उनकी आईडी, दिनांक या राशि के आधार पर मुख्य विंडो में क्रमबद्ध किया जाए या नहीं। हर बार जब आप इसे बदलते हैं, तो यह खाता फाइल में सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो जाएगा।

+
+ + छँटाई क्रम +

प्रत्येक खाता मुख्य विंडो में लेनदेन के क्रम के बारे में जानकारी संग्रहीत करता है। हर बार जब आप इसे बदलते हैं, तो यह खाता फाइल में सहेजा जाएगा और खाता दोबारा खोलने पर पुनर्स्थापित हो जाएगा।

+
+ + समूह दृश्यता +

प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में समूह सूची छिपी हुई है या नहीं। हर बार जब आप समूह सूची की दृश्यता बदलते हैं, तो इसे सहेजा जाता है और फिर जब आप खाता दोबारा खोलते हैं तो इसे बहाल कर दिया जाता है।

+
+ + टैग दृश्यता +

प्रत्येक खाता इस बारे में जानकारी संग्रहीत करता है कि मुख्य विंडो में टैग सूची छिपी हुई है या नहीं। हर बार जब आप टैग सूची दृश्यता बदलते हैं, तो इसे सहेजा जाता है और फिर खाता दोबारा खोलने पर इसे पुनर्स्थापित कर दिया जाता है।

+
+
+
diff --git a/docs/yelp/hi/configuration.page b/docs/yelp/hi/configuration.page new file mode 100644 index 000000000..82113720c --- /dev/null +++ b/docs/yelp/hi/configuration.page @@ -0,0 +1,42 @@ + + + + + कॉन्फ़िगरेशन 🔧 + + फ्योडोर सोबोलेव + 2023 + + + निकोलस लोगोज़ो + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +कॉन्फ़िगरेशन +

यह पृष्ठ वर्णन करता है कि आप एप्लिकेशन कॉन्फ़िगरेशन में क्या बदल सकते हैं।

+

आपके प्लेटफ़ॉर्म के आधार पर, एप्लिकेशन इंटरफ़ेस में कॉन्फ़िगरेशन को प्राथमिकताएं या सेटिंग्स के रूप में संदर्भित किया जाता है।

+ + + थीम +

प्रकाश या गहरे रंग की थीम सेट करें, या Denaro को अपने सिस्टम थीम का अनुसरण करें। विंडोज़ पर इसे बदलने के लिए आवेदन को पुनः आरंभ करने की आवश्यकता है।

+
+ + लेन-देन डिफ़ॉल्ट रंग +

एक रंग जो अद्वितीय रंग के साथ एक नया transaction जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। इसे बदलने से मौजूदा लेनदेन प्रभावित नहीं होंगे, भले ही वे पहले से चयनित डिफ़ॉल्ट रंग का उपयोग करें।

+
+ + डिफ़ॉल्ट रंग स्थानांतरित करें +

एक रंग जिसका उपयोग transfer का उपयोग करके किए गए लेनदेन के लिए किया जाएगा। इसे बदलने से मौजूदा लेनदेन पर कोई असर नहीं पड़ेगा।

+
+ + समूह डिफ़ॉल्ट रंग +

एक रंग जो नया समूह जोड़ते समय डिफ़ॉल्ट रूप से चुना जाएगा। यह «अनग्रुप्ड» समूह के लिए भी एक रंग है।

+
+ + दशमलव विभाजक डालें +

सेट करें कि कौन सी कुंजी दबाए जाने पर लोकेल का दशमलव विभाजक राशि फ़ील्ड में डाला जाएगा: संख्यापैड अवधि, कोई भी अवधि और अल्पविराम, या कोई नहीं। यदि दशमलव विभाजक पहले से ही किसी फ़ील्ड में प्रस्तुत किया गया है, तो इसे सम्मिलित नहीं किया जाएगा।

+
+
+
diff --git a/docs/yelp/hi/figures/denaro.png b/docs/yelp/hi/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/hi/figures/denaro.png differ diff --git a/docs/yelp/hi/import-export.page b/docs/yelp/hi/import-export.page new file mode 100644 index 000000000..ac8f31c58 --- /dev/null +++ b/docs/yelp/hi/import-export.page @@ -0,0 +1,117 @@ + + + + + आयात/निर्यात 📤 + + फ्योडोर सोबोलेव + 2023 + + + निकोलस लोगोज़ो + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +आयात/निर्यात +
+ प्रारूप आयात करें + + +

Open Financial Exchange (.ofx)

+

तिथियाँ YYYYMMDD प्रारूप में होनी चाहिए।

+
+ +

Quicken Interchange Format (.qif)

+

तारीखें अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।

+
+ +

Denaro CSV (.csv)

+

❗ जबकि CSV एक सामान्य प्रारूप है और कुछ बैंक अपने उपयोगकर्ताओं को CSV के रूप में जानकारी निर्यात करने की अनुमति देते हैं, ये फाइलें वास्तव में तालिकाएं हैं जिनमें मनमाना डेटा हो सकता है। अन्य प्रोग्राम में बनाई गई CSV फाइल को आयात करना विफल हो जाएगा, क्योंकि इसका डेटा Denaro किसी फाइल से प्राप्त करने का प्रयास करने के साथ संगत नहीं होगा। CSV आयात/निर्यात का उद्देश्य टेक्स्ट एडिटर्स और ऑफिस सुइट्स जैसे इक्स्टर्नल प्रोग्रामों का उपयोग करके किसी खाते में डेटा जोड़ने का एक तरीका प्रदान करना है। आयात केवल मौजूदा लेन-देन को ओवरराइड किए बिना नए लेन-देन जोड़ेगा। यदि आप मैन्युअल रूप से एक CSV फाइल बनाना चाहते हैं, तो यह वह हेडर है जिसमें वे सभी कॉलम शामिल हैं जिन्हें Denaro ढूंढने की अपेक्षा करता है:

+

ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA

+ + + ID +

लेनदेन Id, किसी दिए गए खाते के लिए अद्वितीय होनी चाहिए। Ids 1 से शुरू होती हैं।

+
+ + Date +

लेन-देन की तारीख (या दोबारा लेन-देन के मामले में आरंभ की तारीख), अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए।

+
+ + Description +

लेन-देन विवरण, इसमें अर्धविराम को छोड़कर कोई भी वर्ण हो सकता है।

+
+ + Type +

लेन-देन प्रकार: आय के लिए 0, व्यय के लिए 1।

+
+ + RepeatInterval +

लेन-देन दोहराव अंतराल का प्रतिनिधित्व करने वाली एक संख्या:

+

0 - कभी नहीं

+

1 - प्रतिदिन

+

2 - साप्ताहिक

+

7 - द्विसाप्ताहिक

+

3 - मासिक

+

4 - त्रैमासिक

+

5 - वार्षिक

+

6 - द्विवार्षिक

+

बार-बार होने वाले लेनदेन के विवरण के लिए transaction पेज में Repeat Interval देखें।

+
+ + RepeatFrom +

या तो स्रोत लेनदेन की Id होनी चाहिए या यदि यह स्रोत लेनदेन है तो 0 या यदि यह दोहराव लेनदेन नहीं है तो -1 होना चाहिए।

+
+ + RepeatEndDate +

दोबारा लेन-देन की अंतिम तिथि अंग्रेजी (US) प्रारूप (MM/DD/YYYY) में होनी चाहिए। यदि यह दोबारा लेनदेन नहीं है तो इसे खाली छोड़ दें।

+
+ + Amount +

अंग्रेजी (US) प्रारूप में लेनदेन राशि (123,456.78)।

+
+ + RGBA +

लेन-देन का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।

+
+ + UseGroupColor +

क्या लेन-देन में समूह रंग का उपयोग किया जाना चाहिए: 0 - गलत, 1 - सत्य।

+
+ + Group +

लेन-देन का समूह Id. Ids 1 से शुरू होती हैं। असमूहीकृत लेनदेन के लिए यह -1 होना चाहिए (0 नहीं, यह समूह Id के लिए गलत मान है)।

+
+ + GroupName +

लेन-देन का समूह नाम, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर कोई भी वर्ण हो सकता है। असमूहीकृत लेन-देन के लिए इसे खाली छोड़ दें, किसी भी अन्य स्थिति में यह खाली नहीं होना चाहिए।

+
+ + GroupDescription +

लेन-देन का समूह विवरण, समूह Id से मेल खाना चाहिए। इसमें अर्धविराम को छोड़कर कोई भी अक्षर हो सकता है और यह खाली हो सकता है। असमूहीकृत लेनदेन के लिए इसे खाली छोड़ दें।

+
+ + GroupRGBA +

समूह का रंग, rgb(R,G,B) प्रारूप में होना चाहिए जहां R, G और B हैं 0 और 255 के बीच की सीमा में पूर्णांक।

+
+
+

रसीद और नोट्स CSV में मौजूद नहीं हैं।

+
+
+
+
+ निर्यात प्रारूप +

आप चुन सकते हैं कि सारी जानकारी निर्यात करनी है या केवल वर्तमान दृश्य से। यदि आप वर्तमान दृश्य का चयन करते हैं, तो वर्तमान में प्रदर्शित लेनदेन उसी क्रम में निर्यात किए जाएंगे जिसमें वे दिखाए गए हैं।

+ + +

Portable Document Format (.pdf)

+

एक फाइल में खाते की जानकारी, लेनदेन की एक सूची और प्राप्तियों की छवियां होंगी। लेन-देन एप्लिकेशन की तरह रंगीन होते हैं, लेकिन काले पाठ को हमेशा स्पष्ट रूप से दिखाई देने के लिए रंगों को आधा-पारदर्शी बनाकर संशोधित किया जाता है। आप किसी निर्यातित फाइल के लिए पासवर्ड सेट कर सकते हैं।

+
+ +

Denaro CSV (.csv)

+
+
+
+
diff --git a/docs/yelp/hi/index.page b/docs/yelp/hi/index.page new file mode 100644 index 000000000..668acbb70 --- /dev/null +++ b/docs/yelp/hi/index.page @@ -0,0 +1,20 @@ + + + + Denaro सहायता + Denaro सहायता + + फ्योडोर सोबोलेव + 2023 + + + निकोलस लोगोज़ो + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +<media its:translate="no" type="image" src="figures/denaro.png"/> Denaro सहायता +

यह दस्तावेज़ आपको यह समझने में सहायता करेगा कि एप्लिकेशन का अधिकतम लाभ उठाने के लिए Denaro में डेटा को कैसे कॉन्फ़िगर और प्रबंधित किया जाए।

+

समर्थन पाने के लिए, समस्याएँ या चर्चाएँका उपयोग करें Github पर, या हमारे Matrix चैनल से जुड़ें।

+
diff --git a/docs/yelp/hi/transaction.page b/docs/yelp/hi/transaction.page new file mode 100644 index 000000000..1fae09ec3 --- /dev/null +++ b/docs/yelp/hi/transaction.page @@ -0,0 +1,70 @@ + + + + + लेनदेन 🧾 + + फ्योडोर सोबोलेव + 2023 + + + निकोलस लोगोज़ो + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +लेन-देन +

यह पृष्ठ Denaro में लेनदेन के सभी गुणों की व्याख्या करता है।

+ + + + Id +

प्रत्येक लेनदेन में एक Id होती है जो किसी दिए गए खाते के लिए अद्वितीय होती है। Id 1 से शुरू होती हैं और जोड़े गए प्रत्येक लेनदेन के लिए बढ़ती हैं। Id को बदला नहीं जा सकता, हटाए गए लेनदेन की Id का पुन: उपयोग नहीं किया जाता है।

+
+ + विवरण +

लंबाई की कोई सीमा नहीं. इसमें अर्धविराम नहीं हो सकता।

+
+ + राशि +

प्रारूप में एक संख्या जो आपके स्थान के लिए मान्य है, विवरण के लिए खाता पृष्ठ में सिस्टम मुद्रा देखें।

+
+ + प्रकार +

आय या व्यय. जब आप नया लेन-देन जोड़ने के लिए एक संवाद खोलेंगे तो डिफ़ॉल्ट रूप से खाता सेटिंग में से एक चुना जाएगा।

+
+ + तारीख +

कोई भी तारीख चुनी जा सकती है, आप भविष्य की तारीखों के लिए लेनदेन भी बना सकते हैं।

+
+ + अंतराल दोहराएँ +

आवर्ती लेनदेन बनाने के लिए इस विकल्प का उपयोग करें। आपके द्वारा दोहराव अंतराल के साथ लेनदेन जोड़ने के बाद, यह लेनदेन एक स्रोत लेनदेन बन जाएगा। Denaro स्वचालित रूप से आज तक की तारीखों के लिए या अतीत में सेट की गई अंतिम तिथि के लिए दोहराया लेनदेन उत्पन्न करेगा। दोहराएँ लेनदेन को संपादित या हटाया नहीं जा सकता, केवल स्रोत को संशोधित किया जा सकता है। जब आप स्रोत लेनदेन को संशोधित करते हैं तो Denaro आपसे पूछेगा कि क्या आप दोहराएँ लेनदेन को संशोधित या अलग करना चाहते हैं। यदि आप अलग होना चुनते हैं, तो दोहराएँ लेनदेन सामान्य लेनदेन बन जाते हैं और इन्हें अलग से संपादित या हटाया जा सकता है।

+
+ + समाप्ति तिथि दोहराएँ +

दोहराव वाले लेन-देन की समाप्ति तिथि। यह प्रारंभ दिनांक से पहले या उसी दिन नहीं हो सकता।

+
+ + समूह +

प्रत्येक लेन-देन केवल एक समूह से संबंधित हो सकता है या किसी से भी नहीं («अनग्रुप्ड» समूह) से संबंधित हो सकता है।

+
+ + रंग +

लेन-देन के लिए एक रंग. समूह रंग या अद्वितीय रंग का उपयोग करने के लिए सेट किया जा सकता है। अद्वितीय रंग का चयन करते समय, इसे डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन में चयनित रंग पर सेट किया जाएगा, लेकिन इसे किसी भी रंग में बदला जा सकता है।

+
+ + टैग्स +

लेन-देन के लिए टैग की एक सूची. किसी लेन-देन में असीमित संख्या में टैग हो सकते हैं (या कोई टैग नहीं)। टैग में अल्पविराम (,) को छोड़कर कोई भी वर्ण हो सकता है, और उनकी लंबाई कोई भी हो सकती है, लेकिन उनसे छोटे कीवर्ड होने की उम्मीद की जाती है। टैग का उपयोग अतिरिक्त फ़िल्टरिंग के लिए किया जाता है जब समूहों का उपयोग पर्याप्त नहीं होता है। टैग केवल लेनदेन में ही सहेजे जाते हैं, और परिणामस्वरूप अप्रयुक्त टैग खाता बंद होने पर स्वचालित रूप से गायब हो जाते हैं।

+
+ + रसीद +

लेन-देन की रसीद की एक छवि. आप JPEG या PNG छवि या PDF दस्तावेज़ अपलोड कर सकते हैं, लेकिन प्रारूप कोई भी हो, इसे JPEG छवि के रूप में परिवर्तित और सहेजा जाएगा। PDF के मामले में, केवल पहला पृष्ठ ही सहेजा जाएगा। आप किसी भी समय दूसरी फाइल को हटा या अपलोड कर सकते हैं।

+
+ + नोट्स +

लेन-देन के साथ संलग्न करने के लिए एक फ्रीफॉर्म टेक्स्ट नोट।

+
+
+
diff --git a/docs/yelp/hi/transfer.page b/docs/yelp/hi/transfer.page new file mode 100644 index 000000000..caddcc08c --- /dev/null +++ b/docs/yelp/hi/transfer.page @@ -0,0 +1,30 @@ + + + + + स्थानांतरण 💸 + + फ्योडोर सोबोलेव + 2023 + + + निकोलस लोगोज़ो + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +स्थानांतरण +

ट्रांसफर पैसे को एक खाते से दूसरे खाते में स्थानांतरित करने का एक तरीका है। स्थानांतरण चलाने के बाद निम्नलिखित विवरण के साथ 2 लेनदेन बनाए जाएंगे:

+ + +

स्रोत खाते पर गंतव्य खाता नाम पर स्थानांतरण करें।

+
+ +

गंतव्य खाते पर स्रोत खाता नाम से स्थानांतरण।

+
+
+

स्थानांतरण का उपयोग करके बनाए गए लेनदेन सरल लेनदेन हैं जिन्हें स्वतंत्र रूप से संपादित या हटाया जा सकता है। ये लेनदेन जुड़े नहीं हैं: स्रोत खाते पर लेनदेन को संशोधित करने से गंतव्य खाते पर लेनदेन प्रभावित नहीं होगा, और इसके विपरीत।

+

स्थानांतरण आपको बार-बार लेनदेन करने या राशि के अलावा कोई संपत्ति निर्धारित करने की अनुमति नहीं देता है। कॉन्फ़िगरेशन में चयनित रंग का उपयोग बनाए गए लेनदेन के लिए किया जाएगा।

+

यदि आप विभिन्न मुद्राओं वाले खातों के बीच स्थानांतरण करते हैं, तो आपसे रूपांतरण दर प्रदान करने के लिए कहा जाएगा।

+
diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/account.page b/docs/yelp/hr/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hr/account.page rename to docs/yelp/hr/account.page diff --git a/docs/yelp/hr/configuration.page b/docs/yelp/hr/configuration.page new file mode 100644 index 000000000..1f8b27a0d --- /dev/null +++ b/docs/yelp/hr/configuration.page @@ -0,0 +1,48 @@ + + + + + Konfiguracija 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+ + + Milo Ivir + mail@milotype.de + 2023 + +
+ +Konfiguracija +

Ova stranica opisuje što možeš promijeniti u konfiguraciji aplikacije.

+

Ovisno o platformi, u sučelju aplikacije se konfiguracija zove Osobitosti ili Postavke.

+ + + Tema +

Postavi svijetlu ili tamnu temu ili neka Denaro slijedi temu tvog sustava. Za primjenu promjene teme u Windows sustavu zahtijeva ponovno pokretanje aplikacije.

+
+ + Standardna boja transakcija +

Standardna boja prilikom dodavanja nove transakcije s jedinstvenom bojom. Mijenjanje boje neće utjecati na postojeće transakcije, čak i ako koriste prethodno odabranu standardnu boju.

+
+ + Standardna boja transfera +

Standardna boja za transakcije stvorene pomoću transfera. Mijenjanje boje neće utjecati na postojeće transakcije.

+
+ + Standardna boja grupa +

Standardna boja prilikom dodavanja nove grupe. Koristi se i za „negrupirane” grupe.

+
+ + Umetni decimalni znak +

Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa: točka na numeričkoj tipkovnici, bilo koja točka i zarez ili ništa. Ako decimalni znak već postoji u polju onda se on neće umetnuti.

+
+
+
diff --git a/docs/yelp/hr/figures/denaro.png b/docs/yelp/hr/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/hr/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/import-export.page b/docs/yelp/hr/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hr/import-export.page rename to docs/yelp/hr/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/index.page b/docs/yelp/hr/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hr/index.page rename to docs/yelp/hr/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/transaction.page b/docs/yelp/hr/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hr/transaction.page rename to docs/yelp/hr/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/hr/transfer.page b/docs/yelp/hr/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/hr/transfer.page rename to docs/yelp/hr/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/id/account.page b/docs/yelp/id/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/id/account.page rename to docs/yelp/id/account.page diff --git a/docs/yelp/id/configuration.page b/docs/yelp/id/configuration.page new file mode 100644 index 000000000..932854b9b --- /dev/null +++ b/docs/yelp/id/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/id/figures/denaro.png b/docs/yelp/id/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/id/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/id/import-export.page b/docs/yelp/id/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/id/import-export.page rename to docs/yelp/id/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/id/index.page b/docs/yelp/id/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/id/index.page rename to docs/yelp/id/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/id/transaction.page b/docs/yelp/id/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/id/transaction.page rename to docs/yelp/id/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/id/transfer.page b/docs/yelp/id/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/id/transfer.page rename to docs/yelp/id/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/it/account.page b/docs/yelp/it/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/it/account.page rename to docs/yelp/it/account.page diff --git a/docs/yelp/it/configuration.page b/docs/yelp/it/configuration.page new file mode 100644 index 000000000..3975900c7 --- /dev/null +++ b/docs/yelp/it/configuration.page @@ -0,0 +1,42 @@ + + + + + Configurazione 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configurazione +

Questa pagina descrive cosa è possibile cambiare nella configurazione dell'applicazione.

+

A seconda della propria piattaforma, è possibile trovare la configurazione nell'interfaccia dell'applicazione sotto Preferenze oppure Impostazioni.

+ + + Stile +

Impostare lo stile chiaro o scuro, oppure dire a Denaro di seguire lo stile di sistema. Cambiare lo stile su Windows richiede il riavvio dell'applicazione per applicare le modifiche.

+
+ + Colore predefinito delle transazioni +

Un colore che verrà selezionato inizialmente all'aggiunta di una nuova transazione con colore speciale. Cambiare questo colore non avrà effetto sulle transazioni esistenti, anche se usavano un colore predefinito precedentemente selezionato.

+
+ + Colore predefinito dei trasferimenti +

Un colore che verrà usato per le transazioni create usando i trasferimenti. Cambiare questo colore non avrà effetto sulle transazioni esistenti.

+
+ + Colore dei gruppi predefinito +

Un colore che verrà selezionato inizialmente all'aggiunta di un nuovo gruppo. È anche il colore per il gruppo «Senza gruppo».

+
+ + Inserimento separatore decimale +

Imposta per quali tasti, quando premuti, verrà inserito al loro posto il separatore decimale durante la digitazione di un importo: il punto del tastierino numerico, un punto qualsiasi e una virgola, o nessuno di essi. Se il separatore decimale è già presente nel campo di inserimento, non verrà inserito nuovamente.

+
+
+
diff --git a/docs/yelp/it/figures/denaro.png b/docs/yelp/it/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/it/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/it/import-export.page b/docs/yelp/it/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/it/import-export.page rename to docs/yelp/it/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/it/index.page b/docs/yelp/it/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/it/index.page rename to docs/yelp/it/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/it/transaction.page b/docs/yelp/it/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/it/transaction.page rename to docs/yelp/it/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/it/transfer.page b/docs/yelp/it/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/it/transfer.page rename to docs/yelp/it/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/account.page b/docs/yelp/ja/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ja/account.page rename to docs/yelp/ja/account.page diff --git a/docs/yelp/ja/configuration.page b/docs/yelp/ja/configuration.page new file mode 100644 index 000000000..4b079e1c1 --- /dev/null +++ b/docs/yelp/ja/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + テーマ +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/ja/figures/denaro.png b/docs/yelp/ja/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/ja/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/import-export.page b/docs/yelp/ja/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ja/import-export.page rename to docs/yelp/ja/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/index.page b/docs/yelp/ja/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ja/index.page rename to docs/yelp/ja/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/transaction.page b/docs/yelp/ja/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ja/transaction.page rename to docs/yelp/ja/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ja/transfer.page b/docs/yelp/ja/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ja/transfer.page rename to docs/yelp/ja/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/account.page b/docs/yelp/nl/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/nl/account.page rename to docs/yelp/nl/account.page diff --git a/docs/yelp/nl/configuration.page b/docs/yelp/nl/configuration.page new file mode 100644 index 000000000..510be7a71 --- /dev/null +++ b/docs/yelp/nl/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuratie 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuratie +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Thema +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Standaard­transactiekleur +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Standaard­overdrachtkleur +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Standaard­groepskleur +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Decimaal scheidings­teken invoegen +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/nl/figures/denaro.png b/docs/yelp/nl/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/nl/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/import-export.page b/docs/yelp/nl/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/nl/import-export.page rename to docs/yelp/nl/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/index.page b/docs/yelp/nl/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/nl/index.page rename to docs/yelp/nl/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/transaction.page b/docs/yelp/nl/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/nl/transaction.page rename to docs/yelp/nl/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/nl/transfer.page b/docs/yelp/nl/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/nl/transfer.page rename to docs/yelp/nl/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/account.page b/docs/yelp/oc/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/oc/account.page rename to docs/yelp/oc/account.page diff --git a/docs/yelp/oc/configuration.page b/docs/yelp/oc/configuration.page new file mode 100644 index 000000000..3d6896078 --- /dev/null +++ b/docs/yelp/oc/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/oc/figures/denaro.png b/docs/yelp/oc/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/oc/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/import-export.page b/docs/yelp/oc/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/oc/import-export.page rename to docs/yelp/oc/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/index.page b/docs/yelp/oc/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/oc/index.page rename to docs/yelp/oc/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/transaction.page b/docs/yelp/oc/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/oc/transaction.page rename to docs/yelp/oc/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/oc/transfer.page b/docs/yelp/oc/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/oc/transfer.page rename to docs/yelp/oc/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/account.page b/docs/yelp/pl/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pl/account.page rename to docs/yelp/pl/account.page diff --git a/docs/yelp/pl/configuration.page b/docs/yelp/pl/configuration.page new file mode 100644 index 000000000..5b999da90 --- /dev/null +++ b/docs/yelp/pl/configuration.page @@ -0,0 +1,42 @@ + + + + + Konfiguracja 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Domyślny kolor transakcji +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Domyślny kolor przelewu +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Domyślny kolor grupy +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Wstawianie separatora dziesiętnego +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/pl/figures/denaro.png b/docs/yelp/pl/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/pl/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/import-export.page b/docs/yelp/pl/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pl/import-export.page rename to docs/yelp/pl/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/index.page b/docs/yelp/pl/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pl/index.page rename to docs/yelp/pl/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/transaction.page b/docs/yelp/pl/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pl/transaction.page rename to docs/yelp/pl/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pl/transfer.page b/docs/yelp/pl/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pl/transfer.page rename to docs/yelp/pl/transfer.page diff --git a/docs/yelp/pt/account.page b/docs/yelp/pt/account.page new file mode 100644 index 000000000..6e1465bde --- /dev/null +++ b/docs/yelp/pt/account.page @@ -0,0 +1,105 @@ + + + + + Conta 🏦 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Account +

This page explains all properties of accounts in Denaro. Most of them are shown in Account Settings Dialog. This dialog also opens automatically after you create a new account.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+ +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+ + + + Name +

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
+ + Account Type +

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
+ + Default Transaction Type +

When you create a new transaction its type by default will be the same as in this setting.

+
+ + Limite de Lembretes de Transação +

The threshold used when showing reminders about upcoming transactions.

+
+ + System Currency +

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+ +

If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

+

If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

+

If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

+
+ +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+ + Use Custom Currency +

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
+ + Custom Currency Symbol +

Up to 3 characters or 1 emoji. It can't be a number.

+
+ + Custom Currency Code +

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+ + Custom Currency Amount Style +

A choice of displaying an amount in one of the following ways:

+ +

$n

+

n$

+

$ n

+

n $

+
+
+ + Custom Currency Decimal and Group Separators +

Up to 2 characters or 1 emoji.

+
+ + Custom Currency Decimal Digits +

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
+ + Password +

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
+ + Sort by Id, Date or Amount +

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
+ + Sorting Order +

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
+ + Groups Visibility +

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
+ + Tags Visibility +

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+
diff --git a/docs/yelp/pt/configuration.page b/docs/yelp/pt/configuration.page new file mode 100644 index 000000000..377f4a657 --- /dev/null +++ b/docs/yelp/pt/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/pt/figures/denaro.png b/docs/yelp/pt/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/pt/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/import-export.page b/docs/yelp/pt/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt/import-export.page rename to docs/yelp/pt/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/index.page b/docs/yelp/pt/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt/index.page rename to docs/yelp/pt/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/transaction.page b/docs/yelp/pt/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt/transaction.page rename to docs/yelp/pt/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt/transfer.page b/docs/yelp/pt/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt/transfer.page rename to docs/yelp/pt/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/account.page b/docs/yelp/pt_BR/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt_BR/account.page rename to docs/yelp/pt_BR/account.page diff --git a/docs/yelp/pt_BR/configuration.page b/docs/yelp/pt_BR/configuration.page new file mode 100644 index 000000000..9506c6bf5 --- /dev/null +++ b/docs/yelp/pt_BR/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/pt_BR/figures/denaro.png b/docs/yelp/pt_BR/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/pt_BR/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/import-export.page b/docs/yelp/pt_BR/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt_BR/import-export.page rename to docs/yelp/pt_BR/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/index.page b/docs/yelp/pt_BR/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt_BR/index.page rename to docs/yelp/pt_BR/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/transaction.page b/docs/yelp/pt_BR/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt_BR/transaction.page rename to docs/yelp/pt_BR/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/pt_BR/transfer.page b/docs/yelp/pt_BR/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/pt_BR/transfer.page rename to docs/yelp/pt_BR/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/account.page b/docs/yelp/ro/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ro/account.page rename to docs/yelp/ro/account.page diff --git a/docs/yelp/ro/configuration.page b/docs/yelp/ro/configuration.page new file mode 100644 index 000000000..fdb539d7e --- /dev/null +++ b/docs/yelp/ro/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/ro/figures/denaro.png b/docs/yelp/ro/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/ro/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/import-export.page b/docs/yelp/ro/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ro/import-export.page rename to docs/yelp/ro/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/index.page b/docs/yelp/ro/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ro/index.page rename to docs/yelp/ro/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/transaction.page b/docs/yelp/ro/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ro/transaction.page rename to docs/yelp/ro/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ro/transfer.page b/docs/yelp/ro/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ro/transfer.page rename to docs/yelp/ro/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/account.page b/docs/yelp/ru/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ru/account.page rename to docs/yelp/ru/account.page diff --git a/docs/yelp/ru/configuration.page b/docs/yelp/ru/configuration.page new file mode 100644 index 000000000..e6032d8e2 --- /dev/null +++ b/docs/yelp/ru/configuration.page @@ -0,0 +1,42 @@ + + + + + Конфигурация 🔧 + + Фёдор Соболев + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Конфигурация +

На этой странице перечислены настройки, которые вы можете изменить в конфигурации приложения.

+

В зависимости от вашей ОС, в интерфейсе приложения конфигурация называется другим термином: Параметры или Настройки.

+ + + Тема +

Установите, должно ли приложение использовать светлую или тёмную тему, либо следовать настройкам вашей системы. Для применения темы в ОС Windows требуется перезапуск программы.

+
+ + Цвет транзакции по умолчанию +

Цвет, который будет выбран по умолчанию при создании новой транзакции с собственным цветом. Изменение цвета не затронет существующие транзакции, даже если они используют цвет, который ранее был цветом по умолчанию.

+
+ + Цвет перевода средств по умолчанию +

Цвет, который будет использован для транзакций, созданных с помощью перевода средств. Изменение цвета не затронет существующие транзакции.

+
+ + Цвет группы по умолчанию +

Цвет, который будет выбран по умолчанию при создании новой группы. Это также цвет группы «Несгруппированные».

+
+ + Вставка десятичного разделителя +

Установите, нажатия каких кнопок будут вставлять десятичный разделитель в поля сумм: точка на Numpad, любая точка или запятая, либо можно отключить эту функцию. Если десятичный разделитель уже присутствует в строке, он не будет добавлен.

+
+
+
diff --git a/docs/yelp/ru/figures/denaro.png b/docs/yelp/ru/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/ru/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/import-export.page b/docs/yelp/ru/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ru/import-export.page rename to docs/yelp/ru/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/index.page b/docs/yelp/ru/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ru/index.page rename to docs/yelp/ru/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/transaction.page b/docs/yelp/ru/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ru/transaction.page rename to docs/yelp/ru/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ru/transfer.page b/docs/yelp/ru/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ru/transfer.page rename to docs/yelp/ru/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/account.page b/docs/yelp/sv/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/sv/account.page rename to docs/yelp/sv/account.page diff --git a/docs/yelp/sv/configuration.page b/docs/yelp/sv/configuration.page new file mode 100644 index 000000000..53f80decc --- /dev/null +++ b/docs/yelp/sv/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/sv/figures/denaro.png b/docs/yelp/sv/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/sv/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/import-export.page b/docs/yelp/sv/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/sv/import-export.page rename to docs/yelp/sv/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/index.page b/docs/yelp/sv/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/sv/index.page rename to docs/yelp/sv/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/transaction.page b/docs/yelp/sv/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/sv/transaction.page rename to docs/yelp/sv/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/sv/transfer.page b/docs/yelp/sv/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/sv/transfer.page rename to docs/yelp/sv/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/account.page b/docs/yelp/ta/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ta/account.page rename to docs/yelp/ta/account.page diff --git a/docs/yelp/ta/configuration.page b/docs/yelp/ta/configuration.page new file mode 100644 index 000000000..8d821dd98 --- /dev/null +++ b/docs/yelp/ta/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/ta/figures/denaro.png b/docs/yelp/ta/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/ta/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/import-export.page b/docs/yelp/ta/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ta/import-export.page rename to docs/yelp/ta/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/index.page b/docs/yelp/ta/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ta/index.page rename to docs/yelp/ta/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/transaction.page b/docs/yelp/ta/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ta/transaction.page rename to docs/yelp/ta/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ta/transfer.page b/docs/yelp/ta/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ta/transfer.page rename to docs/yelp/ta/transfer.page diff --git a/docs/yelp/tr/account.page b/docs/yelp/tr/account.page new file mode 100644 index 000000000..0cafb49a4 --- /dev/null +++ b/docs/yelp/tr/account.page @@ -0,0 +1,105 @@ + + + + + Hesap🏦 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Hesap +

Bu sayfa Denaro hesaplarının tüm özelliklerini açıklar. Bu özelliklerin çoğu Hesap Ayarları Diyaloğu içerisinde gösterilir. Bu diyalog ayrıca yeni bir hesap oluşturulduktan sonra otomatik olarak da açılır.

+

Each account is stored in a single *.nmoney file. Files created in an older stable version of Denaro can be safely opened in a more recent stable version of the application. Although the app can run on different platforms (Windows and Linux), the *.nmoney files are 100% compatible between platforms as long as they are from the same application version (i.e. V2023.1.0).

+ +

Unstable (Beta and RC) versions of the application can contain bugs or unfinished modifications that can cause data loss. DO NOT use account files that contain real data in unstable versions of the app!

+
+ + + + Name +

Account name is shown in the list of recent accounts and in tabs. A name doesn't have a length limit and it can contain any characters, including emojis.

+
+ + Account Type +

There are 3 account types available: 🟣Checking, 🔵Savings and 🟢Business. Account type is only a useful label that is shown in the list of recent accounts and doesn't affect how the application works or what you can do with an account. Each account type has its own color, these colors can be configured in global settings.

+
+ + Default Transaction Type +

When you create a new transaction its type by default will be the same as in this setting.

+
+ + İşlem Hatırlatma Eşiği +

The threshold used when showing reminders about upcoming transactions.

+
+ + System Currency +

Every time the application starts, it gets data about currency and numbers formatting from your system locale, and this data is used to show currency symbol (unless custom currency is used, see below) and to determine in what format the numbers will be accepted as values for transaction amounts. A few examples:

+ +

If your locale is English (US), currency symbol will be set to $ and 1,000.00 will be accepted as a valid number.

+

If your locale is Italian, currency symbol will be set to and 1.000,00 will be accepted as a valid number.

+

If your locale is Russian, currency symbol will be set to and 1000,00 will be accepted as a valid number.

+
+ +

On Linux, it is possible to set different locales for system language and formats. Changing these settings varies depending on the desktop environment you are using. Despite differences in the location of these settings on the desktop, changing these settings modify system environment variables, such as LANG, LC_TIME, and LC_MONETARY. Denaro will try to use amount and date formats according to these variables. If the app fails to use the expected formats, please make sure the variables are set correctly via the locale command in a terminal. If you found a bug and want to report it, please provide the output of the locale command to allow developers to reproduce your issue with the same settings.

+
+
+ + Use Custom Currency +

If this option is enabled, Custom Currency Symbol will be used instead of currency symbol provided by your system locale.

+
+ + Custom Currency Symbol +

Up to 3 characters or 1 emoji. It can't be a number.

+
+ + Custom Currency Code +

Up to 3 characters or 1 emoji.

+

An example to understand the difference between a symbol and a code: $ is a symbol, USD is a code.

+
+ + Custom Currency Amount Style +

A choice of displaying an amount in one of the following ways:

+ +

$n

+

n$

+

$ n

+

n $

+
+
+ + Custom Currency Decimal and Group Separators +

Up to 2 characters or 1 emoji.

+
+ + Custom Currency Decimal Digits +

The size of decimal part of amount values. With "Unlimited" digits there will be as many numbers in decimal part as required to show the precise amount, but there will be no decimal part if the amount is an integer number.

+
+ + Password +

Each account can be password-protected. Adding a password causes an account to become encrypted (making it impossible to read the data without decrypting it using the password). Be careful: if the password is lost, you won't be able to restore the data! A password can also be changed or removed using the account settings dialog of an open account. Removing a password will decrypt the account.

+
+ + Sort by Id, Date or Amount +

Each account stores whether to sort transactions in the main window by their id, date or amount. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
+ + Sorting Order +

Each account stores information about the order of transactions in the main window. Every time you change this, it will be saved to the account file and restored when you reopen the account.

+
+ + Groups Visibility +

Each account stores information about whether the groups list in the main window is hidden or not. Every time you change groups list visibility, it's saved and then restored when you reopen the account.

+
+ + Tags Visibility +

Each account stores information about whether the tags list in the main window is hidden or not. Every time you change tags list visibility, it's saved and then restored when you reopen the account.

+
+
+
diff --git a/docs/yelp/tr/configuration.page b/docs/yelp/tr/configuration.page new file mode 100644 index 000000000..2f1935a5a --- /dev/null +++ b/docs/yelp/tr/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Öntanımlı İşlem Rengi +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Öntanımlı Aktarım Rengi +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Öntanımlı Grup Rengi +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/tr/figures/denaro.png b/docs/yelp/tr/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/tr/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/import-export.page b/docs/yelp/tr/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/tr/import-export.page rename to docs/yelp/tr/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/index.page b/docs/yelp/tr/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/tr/index.page rename to docs/yelp/tr/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/transaction.page b/docs/yelp/tr/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/tr/transaction.page rename to docs/yelp/tr/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/tr/transfer.page b/docs/yelp/tr/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/tr/transfer.page rename to docs/yelp/tr/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/account.page b/docs/yelp/ur/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ur/account.page rename to docs/yelp/ur/account.page diff --git a/docs/yelp/ur/configuration.page b/docs/yelp/ur/configuration.page new file mode 100644 index 000000000..00bea5ad1 --- /dev/null +++ b/docs/yelp/ur/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + Theme +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + Transaction Default Color +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + Transfer Default Color +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + Group Default Color +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + Insert Decimal Separator +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/ur/figures/denaro.png b/docs/yelp/ur/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/ur/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/import-export.page b/docs/yelp/ur/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ur/import-export.page rename to docs/yelp/ur/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/index.page b/docs/yelp/ur/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ur/index.page rename to docs/yelp/ur/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/transaction.page b/docs/yelp/ur/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ur/transaction.page rename to docs/yelp/ur/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/ur/transfer.page b/docs/yelp/ur/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/ur/transfer.page rename to docs/yelp/ur/transfer.page diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/account.page b/docs/yelp/zh_CN/account.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/zh_CN/account.page rename to docs/yelp/zh_CN/account.page diff --git a/docs/yelp/zh_CN/configuration.page b/docs/yelp/zh_CN/configuration.page new file mode 100644 index 000000000..4b1399999 --- /dev/null +++ b/docs/yelp/zh_CN/configuration.page @@ -0,0 +1,42 @@ + + + + + Configuration 🔧 + + Fyodor Sobolev + 2023 + + + Nicholas Logozzo + 2023 + +

Creative Commons Attribution 4.0 International License

+
+ +Configuration +

This page describes what you can change in the application configuration.

+

Depending on your platform, in the application interface the configuration is referred as either Preferences or Settings.

+ + + 主题 +

Set light or dark theme, or make Denaro follow your system theme. Changing this on Windows requires the application restart to apply.

+
+ + 默认交易颜色 +

A color that will be selected by default when adding a new transaction with unique color. Changing this will not affect existing transactions, even if they use previously selected default color.

+
+ + 默认转账颜色 +

A color that will be used for transactions created using transfer. Changing this will not affect existing transactions.

+
+ + 群组默认颜色 +

A color that will be selected by default when adding a new group. This is also a color for «Ungrouped» group.

+
+ + 插入十进制分隔符 +

Set for which keys pressed will the locale's decimal separator be inserted into an amount field: numpad period, any period and comma, or none. If decimal separator is already presented in a field, it will not be inserted.

+
+
+
diff --git a/docs/yelp/zh_CN/figures/denaro.png b/docs/yelp/zh_CN/figures/denaro.png new file mode 100644 index 000000000..e815330da Binary files /dev/null and b/docs/yelp/zh_CN/figures/denaro.png differ diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/import-export.page b/docs/yelp/zh_CN/import-export.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/zh_CN/import-export.page rename to docs/yelp/zh_CN/import-export.page diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/index.page b/docs/yelp/zh_CN/index.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/zh_CN/index.page rename to docs/yelp/zh_CN/index.page diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/transaction.page b/docs/yelp/zh_CN/transaction.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/zh_CN/transaction.page rename to docs/yelp/zh_CN/transaction.page diff --git a/NickvisionMoney.Shared/Docs/yelp/zh_CN/transfer.page b/docs/yelp/zh_CN/transfer.page similarity index 100% rename from NickvisionMoney.Shared/Docs/yelp/zh_CN/transfer.page rename to docs/yelp/zh_CN/transfer.page diff --git a/flatpak/NuGet.config b/flatpak/NuGet.config deleted file mode 100644 index 4aab2af76..000000000 --- a/flatpak/NuGet.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/flatpak/build.sh b/flatpak/build.sh deleted file mode 100755 index 9c8337ab5..000000000 --- a/flatpak/build.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -if [ -z $1 ] -then - echo "Usage: $0 UI" - exit 1 -fi - -set -eu - -if [ -d "nuget-sources" ] -then - mv flatpak/NuGet.config ./ -fi - -dotnet tool restore -dotnet cake --target=Publish --prefix=/app --ui=$1 --self-contained - -dotnet cake --target=Install diff --git a/flatpak/org.nickvision.money.json b/flatpak/org.nickvision.money.json index 45c2f23a5..820986093 100644 --- a/flatpak/org.nickvision.money.json +++ b/flatpak/org.nickvision.money.json @@ -1,16 +1,8 @@ { "app-id" : "org.nickvision.money", "runtime" : "org.gnome.Platform", - "runtime-version" : "45", + "runtime-version" : "46", "sdk" : "org.gnome.Sdk", - "sdk-extensions": [ - "org.freedesktop.Sdk.Extension.dotnet8" - ], - "build-options": { - "append-path": "/usr/lib/sdk/dotnet8/bin", - "append-ld-library-path": "/usr/lib/sdk/dotnet8/lib", - "append-pkg-config-path": "/usr/lib/sdk/dotnet8/lib/pkgconfig" - }, "command" : "org.nickvision.money", "finish-args":[ "--socket=fallback-x11", @@ -18,7 +10,7 @@ "--device=dri", "--share=ipc", "--share=network", - "--filesystem=home" + "--talk-name=com.canonical.Unity" ], "cleanup":[ "/include", @@ -26,6 +18,67 @@ "*.a" ], "modules" : [ + { + "name": "boost", + "buildsystem": "simple", + "build-commands": [ + "./bootstrap.sh --prefix=/app --with-libraries=system,date_time", + "./b2 -j $FLATPAK_BUILDER_N_JOBS install" + ], + "sources": [ + { + "type": "archive", + "url": "https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_1_84_0.tar.bz2", + "sha256": "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454" + } + ] + }, + { + "name": "jsoncpp", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/open-source-parsers/jsoncpp", + "tag": "1.9.5" + } + ] + }, + { + "name": "maddy", + "buildsystem": "simple", + "build-commands": [ + "mkdir -p /app/include/maddy", + "mv include/maddy/* /app/include/maddy" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/progsource/maddy", + "tag": "1.3.0" + } + ] + }, + { + "name": "libnick", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DBUILD_TESTING=OFF", + "-DCMAKE_BUILD_TYPE=Release" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/nickvisionapps/libnick", + "tag": "2024.5.1" + } + ] + }, { "name": "blueprint-compiler", "buildsystem": "meson", @@ -36,23 +89,84 @@ { "type": "git", "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler", - "tag": "v0.10.0" + "tag": "v0.12.0" } ] - }, + }, { - "name": "org.nickvision.money", + "name": "gnuplot", "buildsystem": "simple", "build-commands": [ - "chmod +x ./flatpak/build.sh", - "./flatpak/build.sh gnome" + "./configure --prefix=/app --without-qt --with-bitmap-terminals --without-wx-single-threaded", + "make", + "make install" + ], + "sources": [ + { + "type": "archive", + "url": "https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.9/gnuplot-5.4.9.tar.gz", + "sha256": "a328a021f53dc05459be6066020e9a71e8eab6255d3381e22696120d465c6a97" + } + ] + }, + { + "name": "libxmlplusplus", + "buildsystem": "meson", + "config-opts": [ + "-Dmaintainer-mode=false" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/libxmlplusplus/libxmlplusplus", + "tag": "5.2.0" + } + ] + }, + { + "name": "podofo", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DPODOFO_BUILD_TEST=OFF", + "-DPODOFO_BUILD_EXAMPLES=OFF" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/podofo/podofo", + "tag": "0.10.3" + } + ] + }, + { + "name": "rapidcsv", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/d99kris/rapidcsv", + "tag": "v8.82" + } + ] + }, + { + "name": "org.nickvision.money", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_TESTING=OFF" ], "sources": [ { "type": "dir", "path": ".." - }, - "../NickvisionMoney.GNOME/nuget-sources.json" + } ] } ] diff --git a/inno/setup.iss b/inno/setup.iss new file mode 100644 index 000000000..4149f2395 --- /dev/null +++ b/inno/setup.iss @@ -0,0 +1,109 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "Nickvision Denaro" +#define MyAppShortName "Denaro" +#define MyAppVersion "2024.5.0" +#define MyAppPublisher "Nickvision" +#define MyAppURL "https://nickvision.org" +#define MyAppExeName "org.nickvision.money.winui.exe" + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{6B35090B-5CC0-464A-8B1F-64D115E4C031} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +UsePreviousAppDir=no +DefaultDirName={autopf}\{#MyAppName} +DisableProgramGroupPage=yes +LicenseFile=..\COPYING +; Uncomment the following line to run in non administrative install mode (install for current user only.) +;PrivilegesRequired=lowest +OutputDir=..\inno +OutputBaseFilename=NickvisionDenaroSetup +SetupIconFile=..\resources\org.nickvision.money.ico +Compression=lzma +SolidCompression=yes +WizardStyle=modern +PrivilegesRequired=admin +DirExistsWarning=no +CloseApplications=force +ChangesEnvironment=yes +AlwaysRestart=yes + +[Code] +procedure SetupVC(); +var + ResultCode: Integer; +begin + if not Exec(ExpandConstant('{app}\deps\VC_redist.x64.exe'), '/install /quiet /norestart', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) + then + MsgBox('Unable to install VC . Please try again', mbError, MB_OK); +end; + +procedure SetupWinAppSDK(); +var + ResultCode: Integer; +begin + if not Exec(ExpandConstant('{app}\deps\WindowsAppRuntimeInstall-x64.exe'), '--quiet', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) + then + MsgBox('Unable to install Windows App SDK. Please try again', mbError, MB_OK); +end; + +procedure SetupGnuPlot(); +var + ResultCode: Integer; +begin + if not Exec(ExpandConstant('{app}\deps\gnuplot.exe'), '/verysilent /norestart /allusers', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) + then + MsgBox('Unable to install gnuplot. Please try again', mbError, MB_OK); +end; + +function NeedsAddPath(Param: string): boolean; +var + OrigPath: string; +begin + if not RegQueryStringValue(HKEY_LOCAL_MACHINE, + 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', + 'Path', OrigPath) + then begin + Result := True; + exit; + end; + { look for the path with leading and trailing semicolon } + { Pos() returns 0 if not found } + Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; +end; + +[Registry] +Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \ + ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};C:\Program Files\gnuplot\bin"; \ + Check: NeedsAddPath('C:\Program Files\gnuplot\bin') + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "..\..\VC_redist.x64.exe"; DestDir: "{app}\deps"; AfterInstall: SetupVC +Source: "..\..\WindowsAppRuntimeInstall-x64.exe"; DestDir: "{app}\deps"; AfterInstall: SetupWinAppSDK +Source: "..\..\gnuplot.exe"; DestDir: "{app}\deps"; AfterInstall: SetupGnuPlot +Source: "..\build\org.nickvision.money.winui\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\build\org.nickvision.money.winui\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{autoprograms}\{#MyAppShortName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{autodesktop}\{#MyAppShortName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + diff --git a/libdenaro/CMakeLists.txt b/libdenaro/CMakeLists.txt new file mode 100644 index 000000000..19f9ae951 --- /dev/null +++ b/libdenaro/CMakeLists.txt @@ -0,0 +1,101 @@ +if(WIN32) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) +endif() + +include(CTest) +add_library(libdenaro + "src/controllers/accountsettingsdialogcontroller.cpp" + "src/controllers/accountviewcontroller.cpp" + "src/controllers/dashboardviewcontroller.cpp" + "src/controllers/mainwindowcontroller.cpp" + "src/controllers/newaccountdialogcontroller.cpp" + "src/controllers/preferencesviewcontroller.cpp" + "src/helpers/currencyhelpers.cpp" + "src/helpers/datehelpers.cpp" + "src/models/account.cpp" + "src/models/accountmetadata.cpp" + "src/models/accountrepository.cpp" + "src/models/color.cpp" + "src/models/configuration.cpp" + "src/models/currency.cpp" + "src/models/currencyconversion.cpp" + "src/models/currencyconversionservice.cpp" + "src/models/dashboardgroup.cpp" + "src/models/group.cpp" + "src/models/importresult.cpp" + "src/models/receipt.cpp" + "src/models/recentaccount.cpp" + "src/models/transaction.cpp" + "src/models/transactionreminder.cpp" + "src/models/transfer.cpp") +target_include_directories(libdenaro PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") +set_target_properties(libdenaro PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION}") +if(MSVC) + target_compile_options(libdenaro PRIVATE /W4) +else() + target_compile_options(libdenaro PRIVATE -Wall -Wextra -Wpedantic) +endif() + +find_package(libnick CONFIG REQUIRED) +find_package(Boost REQUIRED COMPONENTS date_time) +find_package(podofo CONFIG REQUIRED) +find_path(RAPIDCSV_INCLUDE_DIRS "rapidcsv.h") +target_link_libraries(libdenaro PUBLIC libnick::libnick Boost::boost Boost::date_time $,podofo_shared,podofo_static>) +target_include_directories(libdenaro PUBLIC ${RAPIDCSV_INCLUDE_DIRS}) + +add_custom_target(shared_commands ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/__shared.h") +add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__shared.h" "${CMAKE_CURRENT_BINARY_DIR}/shared.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/shared.h") + +if(HAS_GETTEXT) + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${GETTEXT_XGETTEXT_EXECUTABLE}" --from-code=utf-8 --add-comments --c++ --force-po --output="${POT_FILE}" --keyword=_ --keyword=_n:1,2 --keyword=_p:1c,2 --keyword=_pn:1c,2,3 --keyword=C_:1c,2 --width=80 ${TRANSLATE_FILES} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") + foreach(LINGUA IN ITEMS ${LINGUAS}) + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${GETTEXT_MSGMERGE_EXECUTABLE}" --backup=off -U "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" "${POT_FILE}") + endforeach() +endif() + +if(HAS_GETTEXT AND ITSTOOL_EXECUTABLE AND YELP_BUILD_EXECUTABLE) + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${ITSTOOL_EXECUTABLE}" -o "docs/po/${SHORT_NAME}.pot" "docs/yelp/C/*.page" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") + foreach(LINGUA IN ITEMS ${DOC_LINGUAS}) + # Update Po + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${GETTEXT_MSGMERGE_EXECUTABLE}" --backup=off -U "${CMAKE_SOURCE_DIR}/docs/po/${LINGUA}.po" "${DOC_POT_FILE}") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/docs/po/${LINGUA}.po" --output-file="${CMAKE_SOURCE_DIR}/docs/po/${LINGUA}.mo") + # Generate Yelp Pages + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${ITSTOOL_EXECUTABLE}" -m "${CMAKE_SOURCE_DIR}/docs/po/${LINGUA}.mo" -o "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}/" "${CMAKE_SOURCE_DIR}/docs/yelp/C/*.page") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E rm "${CMAKE_SOURCE_DIR}/docs/po/${LINGUA}.mo") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}/figures") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_SOURCE_DIR}/docs/yelp/C/figures" "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}/figures") + # Generate HTML Pages + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/docs/html/${LINGUA}") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/docs/html/${LINGUA}/figures") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}/figures" "${CMAKE_SOURCE_DIR}/docs/html/${LINGUA}/figures") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${YELP_BUILD_EXECUTABLE}" html -o "${CMAKE_SOURCE_DIR}/docs/html/${LINGUA}/" "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}/") + endforeach() + # Generate English HTML + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/docs/html/C") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/docs/html/C/figures") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_SOURCE_DIR}/docs/yelp/C/figures" "${CMAKE_SOURCE_DIR}/docs/html/C/figures") + add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${YELP_BUILD_EXECUTABLE}" html -o "${CMAKE_SOURCE_DIR}/docs/html/C/" "${CMAKE_SOURCE_DIR}/docs/yelp/C/") +endif() + +if (BUILD_TESTING) + add_executable(libdenaro_test + "tests/accounttests.cpp" + "tests/colortests.cpp" + "tests/currencyconversiontests.cpp" + "tests/currencytests.cpp" + "tests/datetests.cpp" + "tests/main.cpp" + "tests/receipttests.cpp") + find_package(GTest CONFIG REQUIRED) + target_link_libraries(libdenaro_test PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main libdenaro) + if(MSVC) + add_custom_command(TARGET libdenaro_test POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/libdenaro/tests/DenaroTestAccount1.csv" "${CMAKE_CURRENT_BINARY_DIR}/$/DenaroTestAccount1.csv") + add_custom_command(TARGET libdenaro_test POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/libdenaro/tests/DenaroTestAccount2.ofx" "${CMAKE_CURRENT_BINARY_DIR}/$/DenaroTestAccount2.ofx") + add_custom_command(TARGET libdenaro_test POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/libdenaro/tests/DenaroTestAccount3.qif" "${CMAKE_CURRENT_BINARY_DIR}/$/DenaroTestAccount3.qif") + else() + add_custom_command(TARGET libdenaro_test POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/libdenaro/tests/DenaroTestAccount1.csv" "${CMAKE_CURRENT_BINARY_DIR}/DenaroTestAccount1.csv") + add_custom_command(TARGET libdenaro_test POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/libdenaro/tests/DenaroTestAccount2.ofx" "${CMAKE_CURRENT_BINARY_DIR}/DenaroTestAccount2.ofx") + add_custom_command(TARGET libdenaro_test POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/libdenaro/tests/DenaroTestAccount3.qif" "${CMAKE_CURRENT_BINARY_DIR}/DenaroTestAccount3.qif") + endif() +endif() diff --git a/libdenaro/include/controllers/accountsettingsdialogcontroller.h b/libdenaro/include/controllers/accountsettingsdialogcontroller.h new file mode 100644 index 000000000..689e53a70 --- /dev/null +++ b/libdenaro/include/controllers/accountsettingsdialogcontroller.h @@ -0,0 +1,85 @@ +#ifndef ACCOUNTSETTINGSDIALOGCONTROLLER_H +#define ACCOUNTSETTINGSDIALOGCONTROLLER_H + +#include +#include +#include "models/account.h" +#include "models/currencycheckstatus.h" + +namespace Nickvision::Money::Shared::Controllers +{ + /** + * @brief A controller for an AccountSettingsDialog. + */ + class AccountSettingsDialogController + { + public: + /** + * @brief Constructs an AccountSettingsDialogController. + * @param account The Account model + */ + AccountSettingsDialogController(const std::shared_ptr& account); + /** + * @brief Gets the metadata of the new account. + * @return The metadata of the new account + */ + const Models::AccountMetadata& getMetadata() const; + /** + * @brief Gets the string describing the system's reported currency. + * @return The reported currency string + */ + std::string getReportedCurrencyString() const; + /** + * @brief Gets whether or not the account is encrypted (a.k.a password-protected). + * @return True if encrypted, else false + */ + bool isEncrypted() const; + /** + * @brief Sets the name of the account. + * @param name The new name of the account + * @return True if the name was set, else false (example, the name was empty) + */ + bool setName(const std::string& name); + /** + * @brief Sets a password for the account. + * @param password The new password + * @return True if the password was changed, else false + */ + bool setPassword(const std::string& password); + /** + * @brief Sets the account type of the account. + * @param accountType The new account type of the account + */ + void setAccountType(Models::AccountType accountType); + /** + * @brief Sets the default transaction type of the account. + * @param defaultTransactionType The new default transaction type of the account + */ + void setDefaultTransactionType(Models::TransactionType defaultTransactionType); + /** + * @brief Sets the transaction reminders threshold of the new account. + * @param transactionReminderThreshold The new transaction reminders threshold of the new account + */ + void setTransactionRemindersThreshold(Models::RemindersThreshold transactionReminderThreshold); + /** + * @brief Turns off the custom currency for the account + */ + void setCustomCurrencyOff(); + /** + * @brief Sets the custom currency of the account. + * @param symbol The symbol of the new custom currency + * @param code The code of the new custom currency + * @param decimalSeparator The decimal separator of the new custom currency + * @param groupSeparator The group separator of the new custom currency + * @param decimalDigits The decimal digits of the new custom currency + * @param amountStyle The amount style of the new custom currency + * @return CurrencyCheckStatus + */ + Models::CurrencyCheckStatus setCustomCurrency(const std::string& symbol, const std::string& code, char decimalSeparator, char groupSeparator, int decimalDigits, Models::AmountStyle amountStyle); + + private: + std::shared_ptr m_account; + }; +} + +#endif //ACCOUNTSETTINGSDIALOGCONTROLLER_H diff --git a/libdenaro/include/controllers/accountviewcontroller.h b/libdenaro/include/controllers/accountviewcontroller.h new file mode 100644 index 000000000..44b28cd1d --- /dev/null +++ b/libdenaro/include/controllers/accountviewcontroller.h @@ -0,0 +1,93 @@ +#ifndef ACCOUNTVIEWCONTROLLER_H +#define ACCOUNTVIEWCONTROLLER_H + +#include +#include +#include +#include +#include +#include +#include +#include "controllers/accountsettingsdialogcontroller.h" +#include "models/account.h" +#include "models/recentaccount.h" + +namespace Nickvision::Money::Shared::Controllers +{ + /** + * @brief A controller for an AccountView. + */ + class AccountViewController + { + public: + /** + * @brief Constructs an AccountViewController. + * @param path The path to the account file + * @param password The password for the account + * @throws std::runtime_error Thrown if the account cannot be logged into. + */ + AccountViewController(const std::filesystem::path& path, const std::string& password); + /** + * @brief Gets the path of the account database file. + * @return The path of the account database file + */ + const std::filesystem::path& getPath() const; + /** + * @brief Gets the metadata for the account. + * @return The account metadata + */ + const Models::AccountMetadata& getMetadata() const; + /** + * @brief Gets the event for when the account name changes. + * @return The account name changed event + */ + Nickvision::Events::Event>& accountNameChanged(); + /** + * @brief Gets a AccountSettingsDialogController. + * @return The AccountSettingsDialogController + */ + std::shared_ptr createAccountSettingsDialogController() const; + /** + * @brief Gets the RecentAccount representation of this account. + * @return The RecentAccount representation of this account. + */ + Models::RecentAccount toRecentAccount() const; + /** + * @brief Gets the total amount of the account as a string. + * @return The total amount string + */ + std::string getTotalAmountString() const; + /** + * @brief Gets the income amount of the account as a string. + * @return The income amount string + */ + std::string getIncomeAmountString() const; + /** + * @brief Gets the expense amount of the account as a string. + * @return The expense amount string + */ + std::string getExpenseAmountString() const; + /** + * @brief Gets the transaction reminders for the account. + * @return The transaction reminders + */ + std::vector getTransactionReminders() const; + /** + * @brief Gets the groups of the account. + * @return (Group GroupName, std::string BalanceString) + */ + std::vector> getGroups() const; + + private: + std::shared_ptr m_account; + Nickvision::Events::Event> m_accountMetadataChanged; + Nickvision::Events::Event> m_groupAdded; + Nickvision::Events::Event> m_groupUpdated; + Nickvision::Events::Event> m_groupDeleted; + Nickvision::Events::Event> m_transactionAdded; + Nickvision::Events::Event> m_transactionUpdated; + Nickvision::Events::Event> m_transactionDeleted; + }; +} + +#endif //ACCOUNTVIEWCONTROLLER_H diff --git a/libdenaro/include/controllers/dashboardviewcontroller.h b/libdenaro/include/controllers/dashboardviewcontroller.h new file mode 100644 index 000000000..da975e3cb --- /dev/null +++ b/libdenaro/include/controllers/dashboardviewcontroller.h @@ -0,0 +1,27 @@ +#ifndef DASHBOARDVIEWCONTROLLER_H +#define DASHBOARDVIEWCONTROLLER_H + +#include +#include +#include "accountviewcontroller.h" + +namespace Nickvision::Money::Shared::Controllers +{ + /** + * @brief A controller for a DashboardView. + */ + class DashboardViewController + { + public: + /** + * @brief Construct a DashboardViewController. + * @param accountViewControllers A vector of the controllers for the accounts to display on the dashboard + */ + DashboardViewController(const std::vector>& accountViewControllers); + + private: + std::vector> m_accountViewControllers; + }; +} + +#endif //DASHBOARDVIEWCONTROLLER_H \ No newline at end of file diff --git a/libdenaro/include/controllers/mainwindowcontroller.h b/libdenaro/include/controllers/mainwindowcontroller.h new file mode 100644 index 000000000..f6c9a0c59 --- /dev/null +++ b/libdenaro/include/controllers/mainwindowcontroller.h @@ -0,0 +1,181 @@ +#if (defined(_WIN32) && !defined(_CRT_SECURE_NO_WARNINGS)) +#define _CRT_SECURE_NO_WARNINGS +#endif + +#ifndef MAINWINDOWCONTROLLER_H +#define MAINWINDOWCONTROLLER_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "controllers/accountviewcontroller.h" +#include "controllers/dashboardviewcontroller.h" +#include "controllers/newaccountdialogcontroller.h" +#include "controllers/preferencesviewcontroller.h" +#include "models/recentaccount.h" +#include "models/theme.h" + +namespace Nickvision::Money::Shared::Controllers +{ + /** + * @brief A controller for a MainWindow. + */ + class MainWindowController + { + public: + /** + * @brief Constructs a MainWindowController. + * @param args A list of argument strings for the application + */ + MainWindowController(); + /** + * @brief Gets the AppInfo object for the application + * @return The current AppInfo object + */ + Nickvision::App::AppInfo& getAppInfo() const; + /** + * @brief Gets whether or not the specified version is a development (preview) version. + * @return True for preview version, else false + */ + bool isDevVersion() const; + /** + * @brief Gets the preferred theme for the application. + * @return The preferred theme + */ + Models::Theme getTheme() const; + /** + * @brief Gets the Saved event for the application's configuration. + * @return The configuration Saved event + */ + Nickvision::Events::Event& configurationSaved(); + /** + * @brief Gets the event for when a notification is sent. + * @return The notification sent event + */ + Nickvision::Events::Event& notificationSent(); + /** + * @brief Gets the event for when a shell notification is sent. + * @return The shell notification sent event + */ + Nickvision::Events::Event& shellNotificationSent(); + /** + * @brief Gets the event for when the recent accounts are changed. + * @reeturn The recent accounts changed event + */ + Nickvision::Events::Event>>& recentAccountsChanged(); + /** + * @brief Gets the event for when an account is added. + * @return The account added event + */ + Nickvision::Events::Event&>>& accountAdded(); + /** + * @brief Gets the debugging information for the application. + * @param extraInformation Extra, ui-specific, information to include in the debug info statement + * @return The application's debug information + */ + std::string getDebugInformation(const std::string& extraInformation = "") const; + /** + * @brief Gets the string for greeting on the home page. + * @return The greeting string + */ + std::string getGreeting() const; + /** + * @brief Gets a PreferencesViewController. + * @return The PreferencesViewController + */ + std::shared_ptr createPreferencesViewController() const; + /** + * @brief Gets a NewAccountDialogController. + * @return The NewAccountDialogController + */ + std::shared_ptr createNewAccountDialogController() const; + /** + * @brief Gets a DashboardViewController. + * @return The DashboardViewController + */ + std::shared_ptr createDashboardViewController() const; + /** + * @brief Gets a AccountViewController. + * @param path The path of the account + * @return The AccountViewController for the account + */ + const std::shared_ptr& getAccountViewController(const std::filesystem::path& path) const; + /** + * @brief Starts the application. + * @brief Will only have an effect on the first time called. + */ + void startup(); + /** + * @brief Checks for an application update and sends a notification if one is available. + */ + void checkForUpdates(); +#ifdef _WIN32 + /** + * @brief Downloads and installs the latest application update in the background. + * @brief Will send a notification if the update fails. + * @brief MainWindowController::checkForUpdates() must be called before this method. + */ + void windowsUpdate(); + /** + * @brief Connects the main window to the taskbar interface. + * @param hwnd The main window handle + */ + void connectTaskbar(HWND hwnd); +#elif defined(__linux__) + /** + * @brief Connects the application to the taskbar interface. + * @param desktopFile The desktop file name (with the extension) of the running application + */ + void connectTaskbar(const std::string& desktopFile); +#endif + /** + * @brief Gets whether or not an account file requires a password to open. + * @param path The path of the account file + */ + bool isAccountPasswordProtected(const std::filesystem::path& path) const; + /** + * @brief Gets whether or not the application has any open accounts. + * @return True if there are open accounts, else false + */ + bool hasOpenAccounts() const; + /** + * @brief Creates a new account. + * @brief This method will invoke the AccountAdded event if the account is successfully created. + * @param newAccountDialogController The NewAccountDialogController for the new account + */ + void newAccount(const std::shared_ptr& newAccountDialogController); + /** + * @brief Opens an account. + * @brief This method will invoke the AccountAdded event if the account is successfully opened. + * @param path The path of the account to open + * @param password The password of the account + */ + void openAccount(std::filesystem::path path, const std::string& password); + /** + * @brief Removes a recent account. + * @param recent The RecentAccount to remove + */ + void removeRecentAccount(const Models::RecentAccount& recent); + + private: + bool m_started; + std::shared_ptr m_updater; + Nickvision::Taskbar::TaskbarItem m_taskbar; + Nickvision::Events::Event m_notificationSent; + Nickvision::Events::Event m_shellNotificationSent; + Nickvision::Events::Event>> m_recentAccountsChanged; + Nickvision::Events::Event&>> m_accountAdded; + std::unordered_map> m_accountViewControllers; + }; +} + +#endif //MAINWINDOWCONTROLLER_H diff --git a/libdenaro/include/controllers/newaccountdialogcontroller.h b/libdenaro/include/controllers/newaccountdialogcontroller.h new file mode 100644 index 000000000..118e8b25e --- /dev/null +++ b/libdenaro/include/controllers/newaccountdialogcontroller.h @@ -0,0 +1,128 @@ +#ifndef NEWACCOUNTDIALOGCONTROLLER_H +#define NEWACCOUNTDIALOGCONTROLLER_H + +#include +#include +#include "models/accountmetadata.h" +#include "models/accounttype.h" +#include "models/amountstyle.h" +#include "models/currencycheckstatus.h" +#include "models/remindersthreshold.h" +#include "models/transactiontype.h" + +namespace Nickvision::Money::Shared::Controllers +{ + /** + * @brief A controller for a NewAccountDialog. + */ + class NewAccountDialogController + { + public: + /** + * @brief Constructs a NewAccountDialogController. + */ + NewAccountDialogController(); + /** + * @brief Gets the file path of the new account. + * @return The file path of the new account + */ + const std::filesystem::path& getFilePath() const; + /** + * @brief Gets the metadata of the new account. + * @return The metadata of the new account + */ + const Models::AccountMetadata& getMetadata() const; + /** + * @brief Gets the string describing the system's reported currency. + * @return The reported currency string + */ + std::string getReportedCurrencyString() const; + /** + * @brief Gets the folder of the new account path. + * @return The folder of the new account path + */ + std::filesystem::path getFolder() const; + /** + * @brief Sets the folder of the new account path. + * @param folder The folder of the new account path + * @return True if the folder was set, else false (the new folder results in an existing account path and overwrite is off) + */ + bool setFolder(const std::filesystem::path& folder); + /** + * @brief Sets the name of the new account. + * @param name The new name of the new account + * @return True if the name was set, else false (the new name results in an existing account path and overwrite is off) + */ + bool setName(const std::string& name); + /** + * @brief Gets the password of the new account. + * @return The password of the new account + */ + const std::string& getPassword() const; + /** + * @brief Sets the password of the new account. + * @param password The new password of the new account + */ + void setPassword(const std::string& password); + /** + * @brief Gets whether or not to overwrite an existing account. + * @return True to overwrite, else false + */ + bool getOverwriteExisting() const; + /** + * @brief Sets whether or not to overwrite an existing account. + * @param overwriteExisting True to overwrite, else false + */ + void setOverwriteExisting(bool overwriteExisting); + /** + * @brief Sets the account type of the new account. + * @param accountType The new account type of the new account + */ + void setAccountType(Models::AccountType accountType); + /** + * @brief Sets the default transaction type of the new account. + * @param defaultTransactionType The new default transaction type of the new account + */ + void setDefaultTransactionType(Models::TransactionType defaultTransactionType); + /** + * @brief Sets the transaction reminders threshold of the new account. + * @param transactionReminderThreshold The new transaction reminders threshold of the new account + */ + void setTransactionRemindersThreshold(Models::RemindersThreshold transactionReminderThreshold); + /** + * @brief Sets off the custom currency on the new account. + */ + void setCustomCurrencyOff(); + /** + * @brief Sets the custom currency of the new account. + * @param symbol The symbol of the new custom currency + * @param code The code of the new custom currency + * @param decimalSeparator The decimal separator of the new custom currency + * @param groupSeparator The group separator of the new custom currency + * @param decimalDigits The decimal digits of the new custom currency + * @param amountStyle The amount style of the new custom currency + * @return CurrencyCheckStatus + */ + Models::CurrencyCheckStatus setCustomCurrency(const std::string& symbol, const std::string& code, char decimalSeparator, char groupSeparator, int decimalDigits, Models::AmountStyle amountStyle); + /** + * @brief Gets the path of a file to import into the new account when created. + * @return The path of the file to import + */ + const std::filesystem::path& getImportFile() const; + /** + * @brief Sets the path of a file to import into the new account when created. + * @param importFile The path of the file to import + * @return True if the import file was set, else false (the file does not exist) + */ + bool setImportFile(const std::filesystem::path& importFile); + + private: + std::filesystem::path m_path; + Models::AccountMetadata m_metadata; + std::string m_password; + bool m_overwriteExisting; + std::filesystem::path m_importFile; + }; +} + +#endif //NEWACCOUNTDIALOGCONTROLLER_H diff --git a/libdenaro/include/controllers/preferencesviewcontroller.h b/libdenaro/include/controllers/preferencesviewcontroller.h new file mode 100644 index 000000000..e5fea06bd --- /dev/null +++ b/libdenaro/include/controllers/preferencesviewcontroller.h @@ -0,0 +1,93 @@ +#ifndef PREFERENCESVIEWCONTROLLER_H +#define PREFERENCESVIEWCONTROLLER_H + +#include +#include "models/color.h" +#include "models/insertseparatortrigger.h" +#include "models/theme.h" + +namespace Nickvision::Money::Shared::Controllers +{ + /** + * @brief A controller for a PreferencesView. + */ + class PreferencesViewController + { + public: + /** + * @brief Constructs a PreferencesViewController. + */ + PreferencesViewController() = default; + /** + * @brief Gets the application's id. + * @return The app id + */ + const std::string& getId() const; + /** + * @brief Gets the preferred theme for the application. + * @return The preferred theme + */ + Models::Theme getTheme() const; + /** + * @brief Sets the preferred theme for the application. + * @param theme The new preferred theme + */ + void setTheme(Models::Theme theme); + /** + * @brief Gets whether or not to automatically check for application updates. + * @return True to automatically check for updates, else false + */ + bool getAutomaticallyCheckForUpdates() const; + /** + * @brief Sets whether or not to automatically check for application updates. + * @param check Whether or not to automatically check for updates + */ + void setAutomaticallyCheckForUpdates(bool check); + /** + * @brief Gets the default M for transactions. + * @return The default M for transactions + */ + Models::Color getTransactionDefaultColor() const; + /** + * @brief Sets the default color for transactions. + * @param color The new default color + */ + void setTransactionDefaultColor(const Models::Color& color); + /** + * @brief Gets the default color for transfers. + * @return The default color for transfers + */ + Models::Color getTransferDefaultColor() const; + /** + * @brief Sets the default color for transfers. + * @param color The new default color + */ + void setTransferDefaultColor(const Models::Color& color); + /** + * @brief Gets the default color for groups. + * @return The default color for groups + */ + Models::Color getGroupDefaultColor() const; + /** + * @brief Sets the default color for groups. + * @param color The new default color + */ + void setGroupDefaultColor(const Models::Color& color); + /** + * @brief Gets the trigger for inserting decimal separators. + * @return InsertSeparatorTrigger + */ + Models::InsertSeparatorTrigger getInsertSeparator() const; + /** + * @brief Sets the trigger for inserting decimal separators. + * @param separator InsertSeparatorTrigger + */ + void setInsertSeparator(Models::InsertSeparatorTrigger separator); + /** + * @brief Saves the current configuration to disk. + */ + void saveConfiguration(); + }; +} + +#endif //PREFERENCESVIEWCONTROLLER_H \ No newline at end of file diff --git a/libdenaro/include/helpers/currencyhelpers.h b/libdenaro/include/helpers/currencyhelpers.h new file mode 100644 index 000000000..95d342ee8 --- /dev/null +++ b/libdenaro/include/helpers/currencyhelpers.h @@ -0,0 +1,32 @@ +#ifndef CURRENCYHELPERS_H +#define CURRENCYHELPERS_H + +#include +#include "models/currency.h" + +namespace Nickvision::Money::Shared::CurrencyHelpers +{ + /** + * @brief Gets the currency of the system's locale. + * @return The system currency + */ + const Models::Currency& getSystemCurrency(); + /** + * @brief Converts an amount to a currency string. + * @param amount The amount to convert + * @param currency The currency to use to format the string + * @param showCurrencySymbol Whether or not to add the currency symbol to the string + * @param overwriteDecimal Whether or not to keep more digits in the decimal part of the string to increase precision + * @return The currency string for the amount + */ + std::string toAmountString(double amount, const Models::Currency& currency, bool showCurrencySymbol = true, bool overwriteDecimal = false); + /** + * @brief Converts a currency string to an amount. + * @param amount The amount string to convert + * @param currency The currency to use to convert the string + * @return The amount for the currency string + */ + double toAmount(std::string amount, const Models::Currency& currency); +} + +#endif //CURRENCYHELPERS_H \ No newline at end of file diff --git a/libdenaro/include/helpers/datehelpers.h b/libdenaro/include/helpers/datehelpers.h new file mode 100644 index 000000000..1a3d12c7b --- /dev/null +++ b/libdenaro/include/helpers/datehelpers.h @@ -0,0 +1,30 @@ +#ifndef DATEHELPERS_H +#define DATEHELPERS_H + +#include +#include + +namespace Nickvision::Money::Shared::DateHelpers +{ + /** + * @brief Parses a US date string (MM/DD/YYYY) into a date object. + * @param date The US date string + * @return The parsed date object + */ + boost::gregorian::date fromUSDateString(const std::string& date); + /** + * @brief Gets a US date string (MM/DD/YYYY) representation of the date object. + * @param date The date object + * @param pad Whether or not to pad the US string with leading zeros if needed + * @return The US date string representation + */ + std::string toUSDateString(const boost::gregorian::date& date, bool pad = false); + /** + * @brief Gets an ISO date string (YYYYMMDD) from a US date string (MM/DD/YYYY). + * @param date The US date string + * @return The ISO date string + */ + std::string toIsoDateString(const std::string& date); +} + +#endif //DATEHELPERS_H \ No newline at end of file diff --git a/libdenaro/include/models/account.h b/libdenaro/include/models/account.h new file mode 100644 index 000000000..c8ae6fdad --- /dev/null +++ b/libdenaro/include/models/account.h @@ -0,0 +1,256 @@ +#ifndef ACCOUNT_H +#define ACCOUNT_H + +#include +#include +#include +#include +#include +#include +#include "accountmetadata.h" +#include "accountrepository.h" +#include "currency.h" +#include "color.h" +#include "graphtype.h" +#include "group.h" +#include "importresult.h" +#include "transaction.h" +#include "transactionreminder.h" +#include "transfer.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a Denaro account. + */ + class Account + { + public: + /** + * @brief Constructs an Account. + * @param path The path to the .nmoney file + */ + Account(std::filesystem::path path); + /** + * @brief Gets the path of the .nmoney file. + * @return The path of the .nmoney file + */ + const std::filesystem::path& getPath() const; + /** + * @brief Gets whether or not the account file is encrypted. + * @return True if encrypted, else false + */ + bool isEncrypted() const; + /** + * @brief Logins in to the account. + * @brief This method also loads the account's data into memory. + * @param password The password for the account. If unencrypted, this param must be an empty string + * @param defaultGroupColor The default color for groups, if available + * @return True if successful, else false + */ + bool login(const std::string& password, const Color& defaultGroupColor = {}); + /** + * @brief Changes the password of the account. + * @param password new password for the account. If removing a password from the account + * @return True if password changed successfully, else false + */ + bool changePassword(const std::string& password); + /** + * @brief Gets the metadata for the account. + * @return The account metadata + */ + const AccountMetadata& getMetadata() const; + /** + * @brief Sets the metadata for the account. + * @param metadata The new account metadata + */ + void setMetadata(const AccountMetadata& metadata); + /** + * @brief Gets the currency for the account. + * @return The account currency + */ + const Currency& getCurrency() const; + /** + * @brief Gets all the groups for the account. + * @return The account's groups + */ + const std::unordered_map& getGroups() const; + /** + * @brief Gets all the tags for the account. + * @return The account's tags + */ + const std::vector& getTags() const; + /** + * @brief Gets all the transactions for the account. + * @return The account's transactions + */ + const std::unordered_map& getTransactions() const; + /** + * @brief Gets the transaction reminders for the account based on the threshold set in the account's metadata (settings). + * @return The account's transaction reminders + */ + std::vector getTransactionReminders() const; + /** + * @brief Gets the next available group id. + * @return The next available group id + */ + int getNextAvailableGroupId() const; + /** + * @brief Gets the next available transaction id. + * @return The next available transaction id + */ + int getNextAvailableTransactionId() const; + /** + * @brief Gets the total income amount for the transactions given. + * @param transactionIds The ids of transactions to consider + * @return The total income amount + */ + double getIncome(const std::vector& transactionIds = {}) const; + /** + * @brief Gets the total expense amount for the transactions given. + * @param transactionIds The ids of transactions to consider + * @return The total expense amount + */ + double getExpense(const std::vector& transactionIds = {}) const; + /** + * @brief Gets the total amount for the transactions given. + * @param transactionIds The ids of transactions to consider + * @return The total amount + */ + double getTotal(const std::vector& transactionIds = {}) const; + /** + * @brief Adds a group to the account. + * @param group The group to add + * @return True if successful, else false + */ + bool addGroup(const Group& group); + /** + * @brief Updates a group in the account. + * @param group The group to update + * @return True if successful, else false + */ + bool updateGroup(const Group& group); + /** + * @brief Deletes a group from the account. + * @param group The group to delete + * @return A pair with a boolean representing true if deletion was successful (else false) and a vector of ids of transactions that belonged to said group + */ + std::pair> deleteGroup(const Group& group); + /** + * @brief Adds a transaction to the account + * @param transaction The transaction to add + * @return True if successful, else false + */ + bool addTransaction(const Transaction& transaction); + /** + * @brief Updates a transaction in the account + * @param transaction The transaction to update + * @param updateGenerated Whether or not to update generated transactions associated with this transaction if it is a source transaction + * @return True if successful, else false + */ + bool updateTransaction(const Transaction& transaction, bool updateGenerated = true); + /** + * @brief Deletes a transaction from the account. + * @param transaction The transaction to delete + * @param deleteGenerated Whether or not to delete generated transactions associated with this transaction if it is a source transaction + * @return True if successful, else false + */ + bool deleteTransaction(const Transaction& transaction, bool deleteGenerated = true); + /** + * @brief Deletes generated repeat transactions from the account. + * @param sourceId The id of the source transaction + * @return True if successful, else false + */ + bool deleteGeneratedTransactions(int sourceId); + /** + * @brief Syncs repeat transactions in the account. + * @return True if transactions were modified, else false + */ + bool syncRepeatTransactions(); + /** + * @brief Sends a transfer to another account and creates an expense transaction for this account with the transfer. + * @param transfer The transfer to send + * @param color The color to use for the transfer transaction + * @return The new expense transaction if successful, else std::nullopt + */ + std::optional sendTransfer(const Transfer& transfer, const Color& color); + /** + * @brief Receives a transfer from another account and creates an income transaction for this account with the transfer. + * @param transfer The transfer to receive + * @param color The color to use for the transfer transaction + * @return The new income transaction if successful, else std::nullopt + */ + std::optional receiveTransfer(const Transfer& transfer, const Color& color); + /** + * @brief Imports transactions from a file. + * @param path The path to the file to import + * @param defaultTransactionColor The default color for transactions + * @param defaultGroupColor The default color for groups + * @return ImportResult + */ + ImportResult importFromFile(const std::filesystem::path& path, const Color& defaultTransactionColor, const Color& defaultGroupColor); + /** + * @brief Exports the account to a CSV file. + * @param path THe path to the CSV file + * @param filetedIds The list of transaction ids to use to restrict the export. Empty list to export all transactions. + */ + bool exportToCSV(const std::filesystem::path& path, const std::vector& filteredIds = {}) const; + /** + * @brief Exports the account to a PDF file. + * @param path The path to the PDF file + * @param password The password to use to lock the PDF file. Empty string for no password on the PDF file + * @param exportMode ExportMode + * @param filetedIds The list of transaction ids to use to restrict the export. Empty list to export all transactions. + */ + bool exportToPDF(const std::filesystem::path& path, const std::string& password, const std::vector& filteredIds = {}) const; + /** + * @brief Generates a graph. + * @param type GraphType + * @param darkMode Whether or not to draw the graph in dark mode + * @param filteredIds The list of transaction ids to use in generating the graph + * @param width The width of the graph + * @param height The height of the graph + * @return The byte vector of the graph image + */ + std::vector generateGraph(GraphType type, bool darkMode, const std::vector& filteredIds = {}, int width = -1, int height = -1) const; + /** + * @brief Gets whether or not the object is valid or not. + * @return True if valid (m_loggedIn), else false + */ + operator bool() const; + + private: + /** + * @brief Imports transactions from a CSV file. + * @param path The path to the file to import + * @param defaultTransactionColor The default color for transactions + * @param defaultGroupColor The default color for groups + * @return ImportResult + */ + ImportResult importFromCSV(const std::filesystem::path& path, const Color& defaultTransactionColor, const Color& defaultGroupColor); + /** + * @brief Imports transactions from an OFX/OFC file. + * @param path The path to the file to import + * @param defaultTransactionColor The default color for transactions + * @return ImportResult + */ + ImportResult importFromOFX(const std::filesystem::path& path, const Color& defaultTransactionColor); + /** + * @brief Imports transactions from a QIF file. + * @param path The path to the file to import + * @param defaultTransactionColor The default color for transactions + * @param defaultGroupColor The default color for groups + * @return ImportResult + */ + ImportResult importFromQIF(const std::filesystem::path& path, const Color& defaultTransactionColor, const Color& defaultGroupColor); + std::filesystem::path m_path; + bool m_loggedIn; + AccountRepository m_repository; + AccountMetadata m_metadata; + std::unordered_map m_groups; + std::vector m_tags; + std::unordered_map m_transactions; + }; +} + +#endif //ACCOUNT_H \ No newline at end of file diff --git a/libdenaro/include/models/accountmetadata.h b/libdenaro/include/models/accountmetadata.h new file mode 100644 index 000000000..dfc766695 --- /dev/null +++ b/libdenaro/include/models/accountmetadata.h @@ -0,0 +1,141 @@ +#ifndef ACCOUNTMETADATA_H +#define ACCOUNTMETADATA_H + +#include +#include "accounttype.h" +#include "currency.h" +#include "remindersthreshold.h" +#include "sortby.h" +#include "transactiontype.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of metadata for an account. + */ + class AccountMetadata + { + public: + /** + * @brief Constructs an AccountMetadata. + * @param name The name of the account + * @param type The type of the account + */ + AccountMetadata(const std::string& name, AccountType type); + /** + * @brief Gets the name of the account. + * @return The name of the account + */ + const std::string& getName() const; + /** + * @brief Sets the name of the account. + * @param name The new name of the account + */ + void setName(const std::string& name); + /** + * @brief Gets the type of the account. + * @return The type of the account + */ + AccountType getType() const; + /** + * @brief Sets the type of the account. + * @param type The new type of the account + */ + void setType(AccountType type); + /** + * @brief Gets whether or not to use the custom currency provided by the metadata. + * @return True to use the custom currency, else false + */ + bool getUseCustomCurrency() const; + /** + * @brief Sets whether or not to use the custom currency provided by the metadata. + * @param useCustomCurrency True to use the custom currency, else false + */ + void setUseCustomCurrency(bool useCustomCurrency); + /** + * @brief Gets the custom currency of the account. + * @brief getUseCustomCurrency() should be checked first to determine whether or not to utilize this custom currency. + * @return The custom currency of the account + */ + const Currency& getCustomCurrency() const; + /** + * @brief Sets the custom currency of the account. + * @param customCurrency The new custom currency of the account + */ + void setCustomCurrency(const Currency& customCurrency); + /** + * @brief Gets the default transaction type of the account. + * @return The default transaction type of the account + */ + TransactionType getDefaultTransactionType() const; + /** + * @brief Sets the default transaction type of the account. + * @param defaultTransactionType The new default transaction type of the account + */ + void setDefaultTransactionType(TransactionType defaultTransactionType); + /** + * @brief Gets the threshold for showing transaction reminders of the account. + * @return The threshold for showing transaction reminders of the account + */ + RemindersThreshold getTransactionRemindersThreshold() const; + /** + * @brief Sets the threshold for showing transaction reminders of the account. + * @param remindersThreshold The new threshold for showing transaction reminders of the account + */ + void setTransactionRemindersThreshold(RemindersThreshold remindersThreshold); + /** + * @brief Gets whether or not to show the groups list on the account view. + * @return True to show groups list, else false + */ + bool getShowGroupsList() const; + /** + * @brief Sets whether or not to show the groups list on the account view. + * @param showGroupsList True to show groups list, else false + */ + void setShowGroupsList(bool showGroupsList); + /** + * @brief Gets whether or not to show the tags list on the account view. + * @return True to show tags list, else false + */ + bool getShowTagsList() const; + /** + * @brief Sets whether or not to show the tags list on the account view. + * @param showTagsList True to show tags list, else false + */ + void setShowTagsList(bool showTagsList); + /** + * @brief Gets the way in which to sort transactions on the account view. + * @return The SortBy value + */ + SortBy getSortTransactionsBy() const; + /** + * @brief Sets the way in which to sort transactions on the account view. + * @param sortTransactionBy The new SortBy value + */ + void setSortTransactionsBy(SortBy sortTransactionsBy); + /** + * @brief Gets whether or not to sort transactions from first to last on the account view. + * @return True to sort first to last, else false + */ + bool getSortFirstToLast() const; + /** + * @brief Sets whether or not to sort transactions from first to last on the account view. + * @param sortFirstToLast True to sort first to last, else false + */ + void setSortFirstToLast(bool sortFirstToLast); + + private: + std::string m_name; + AccountType m_type; + bool m_useCustomCurrency; + Currency m_customCurrency; + TransactionType m_defaultTransactionType; + RemindersThreshold m_transactionRemindersThreshold; + bool m_showGroupsList; + bool m_showTagsList; + SortBy m_sortTransactionsBy; + bool m_sortFirstToLast; + }; +} + +#endif //ACCOUNTMETADATA_H \ No newline at end of file diff --git a/libdenaro/include/models/accountrepository.h b/libdenaro/include/models/accountrepository.h new file mode 100644 index 000000000..364e64af3 --- /dev/null +++ b/libdenaro/include/models/accountrepository.h @@ -0,0 +1,136 @@ +#ifndef ACCOUNTREPOSITORY_H +#define ACCOUNTREPOSITORY_H + +#include +#include +#include +#include +#include +#include "accountmetadata.h" +#include "group.h" +#include "transaction.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Repository (SQLite database) for the account data + */ + class AccountRepository + { + public: + /** + * @brief Constructs an AccountRepository. + * @param path The path to the repository file + */ + AccountRepository(const std::filesystem::path& path); + /** + * @brief Gets whether or not the account repository is encrypted. + * @return True if encrypted, else false + */ + bool isEncrypted() const; + /** + * @brief Logins in to the account repository. + * @param password The password to unlock the repository + * @return True if successful, else false + */ + bool login(const std::string& password); + /** + * @brief Changes the password of the account repository. + * @param password new password for the account. If removing a password from the account + * @return True if password changed successfully, else false + */ + bool changePassword(const std::string& password); + /** + * @brief Begins a transaction in the repository. + * @return True if successful, else false (false means a transaction is already in progress, run commitTransaction() first) + */ + bool beginTransaction(); + /** + * @brief Commits the transaction in the repository. + * @return True if successful, else false (false means no transaction in progress, run beginTransaction() first) + */ + bool commitTransaction(); + /** + * @brief Fetches the account metadata from the repository. + * @return The account metadata + */ + AccountMetadata getMetadata() const; + /** + * @brief Sets the account metadata in the repository. + * @param metadata The new account metadata + */ + void setMetadata(const AccountMetadata& metadata); + /** + * @brief Fetches the groups from the repository. + * @return The groups map + */ + std::unordered_map getGroups() const; + /** + * @brief Adds a group to the account. + * @param group The group to add + * @return True if successful, else false + */ + bool addGroup(const Group& group); + /** + * @brief Updates a group in the account. + * @param group The group to update + * @return True if successful, else false + */ + bool updateGroup(const Group& group); + /** + * @brief Deletes a group from the account. + * @param group The group to update + * @return True if successful, else false + */ + bool deleteGroup(const Group& group); + /** + * @brief Fetches the tags from the repository. + * @return The tags vector + */ + std::vector getTags() const; + /** + * @brief Fetches the transactions from the repository. + * @return The transactions map + */ + std::unordered_map getTransactions() const; + /** + * @brief Fetches the future transactions from the repository before a certain maximum date. + * @brief The returned list is sorted by upcoming date. + * @param max The maximum date threshold for future transactions + * @return The future transactions before the threshold + */ + std::vector getFutureTransactions(const boost::gregorian::date& max) const; + /** + * @brief Adds a transaction to the account + * @param transaction The transaction to add + * @return True if successful, else false + */ + bool addTransaction(const Transaction& transaction); + /** + * @brief Updates a transaction in the account + * @param transaction The transaction to update + * @param updateGenerated Whether or not to update generated transactions associated with this transaction if it is a source transaction + * @return True if successful, else false + */ + bool updateTransaction(const Transaction& transaction, bool updateGenerated = true); + /** + * @brief Deletes a transaction from the account. + * @param transaction The transaction to delete + * @param deleteGenerated Whether or not to delete generated transactions associated with this transaction if it is a source transaction + * @return True if successful, else false + */ + bool deleteTransaction(const Transaction& transaction, bool deleteGenerated = true); + /** + * @brief Deletes generated repeat transactions from the account. + * @param sourceId The id of the source transaction + * @return True if successful, else false + */ + bool deleteGeneratedTransactions(int sourceId); + + private: + mutable Database::SqlDatabase m_database; + bool m_transactionInProcess; + }; +} + +#endif //ACCOUNTREPOSITORY_H \ No newline at end of file diff --git a/libdenaro/include/models/accounttype.h b/libdenaro/include/models/accounttype.h new file mode 100644 index 000000000..66ac9d486 --- /dev/null +++ b/libdenaro/include/models/accounttype.h @@ -0,0 +1,17 @@ +#ifndef ACCOUNTTYPE_H +#define ACCOUNTTYPE_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Types of an account. + */ + enum class AccountType + { + Checking = 0, + Savings, + Business + }; +} + +#endif //ACCOUNTTYPE_H \ No newline at end of file diff --git a/libdenaro/include/models/amountstyle.h b/libdenaro/include/models/amountstyle.h new file mode 100644 index 000000000..d661ed7f1 --- /dev/null +++ b/libdenaro/include/models/amountstyle.h @@ -0,0 +1,30 @@ +#ifndef AMOUNTSTYLE_H +#define AMOUNTSTYLE_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Styles for displaying an amount. + */ + enum class AmountStyle + { + /** + * @brief $n + */ + SymbolNumber = 0, + /** + * @brief n$ + */ + NumberSymbol, + /** + * @brief $ n + */ + SymbolSpaceNumber, + /** + * @brief n $ + */ + NumberSpaceSymbol + }; +} + +#endif //AMOUNTSTYLE_H \ No newline at end of file diff --git a/libdenaro/include/models/color.h b/libdenaro/include/models/color.h new file mode 100644 index 000000000..444d2d016 --- /dev/null +++ b/libdenaro/include/models/color.h @@ -0,0 +1,140 @@ +#ifndef COLOR_H +#define COLOR_H + +#include + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a RGBA color value. + */ + class Color + { + public: + /** + * @brief Constructs a Color. + */ + Color(); + /** + * @brief Constructs a Color. + * @brief The A color value will be set to 255. + * @param r The R color value + * @param g The G color value + * @param a The B color value + */ + Color(unsigned char r, unsigned char g, unsigned char b); + /** + * @brief Constructs a Color. + * @param r The R color value + * @param g The G color value + * @param a The B color value + * @param a The A color value + */ + Color(unsigned char r, unsigned char g, unsigned char b, unsigned char a); + /** + * @brief Constructs a Color. + * @brief Strings must be in one of the following formats: "rgb(r,g,b)", "r,g,b", "rgba(r,g,b,a)", "r,g,b,a", "#rrggbb", "#rrggbbaa". + * @brief If parsing fails, the Color will have an empty value. + * @param s The string to parse into a Color + */ + Color(const std::string& s); + /** + * @brief Gets whether or not the Color object represents an empty value. + * @return True if empty, else false + */ + bool empty() const; + /** + * @brief Gets the R color value. + * @return The R color value + */ + unsigned char getR() const; + /** + * @brief Sets the R color value. + * @param r The new R color value + */ + void setR(unsigned char r); + /** + * @brief Gets the G color value. + * @return The G color value + */ + unsigned char getG() const; + /** + * @brief Sets the G color value. + * @param g The new G color value + */ + void setG(unsigned char g); + /** + * @brief Gets the B color value. + * @return The B color value + */ + unsigned char getB() const; + /** + * @brief Sets the B color value. + * @param b The new B color value + */ + void setB(unsigned char b); + /** + * @brief Gets the A color value. + * @return The A color value + */ + unsigned char getA() const; + /** + * @brief Sets the A color value. + * @param a The new A color value + */ + void setA(unsigned char a); + /** + * @brief Gets the hex value for this Color object. + * @param alpha Whether or not to include the alpha value in the hex value + * @return The hex value + */ + unsigned int toHex(bool alpha = true) const; + /** + * @brief Gets the rgb string for this Color object. + * @param header Whether or not to wrap the string in the header: rgb() + * @return If header is true, "rgb(r,g,b)" else "r,g,b" + */ + std::string toRGBString(bool header) const; + /** + * @brief Gets the rgba string for this Color object. + * @param header Whether or not to wrap the string in the header: rgba() + * @return If header is true, "rgba(r,g,b,a)" else "r,g,b,a" + */ + std::string toRGBAString(bool header) const; + /** + * @brief Gets the rgb hex string for this Color object. + * @return "#rrggbb" + */ + std::string toRGBHexString() const; + /** + * @brief Gets the rgba hex string for this Color object. + * @return "#rrggbbaa" + */ + std::string toRGBAHexString() const; + /** + * @brief Gets whether or not this Color is equal to compare Color. + * @param compare The Color to compare to + * @return True if this Color == compare Color + */ + bool operator==(const Color& compare); + /** + * @brief Gets whether or not this Color is not equal to compare Color. + * @param compare The Color to compare to + * @return True if this Color != compare Color + */ + bool operator!=(const Color& compare); + /** + * @brief Gets whether or not the object is valid or not. + * @return True if valid (!empty), else false + */ + operator bool() const; + + private: + unsigned char m_r; + unsigned char m_g; + unsigned char m_b; + unsigned char m_a; + }; +} + +#endif //COLOR_H \ No newline at end of file diff --git a/libdenaro/include/models/configuration.h b/libdenaro/include/models/configuration.h new file mode 100644 index 000000000..30384aeb2 --- /dev/null +++ b/libdenaro/include/models/configuration.h @@ -0,0 +1,117 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include +#include +#include +#include "color.h" +#include "insertseparatortrigger.h" +#include "recentaccount.h" +#include "theme.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model for the configuration of the application. + */ + class Configuration : public Nickvision::App::ConfigurationBase + { + public: + /** + * @brief Constructs a Configuration. + * @param key The key to pass to the ConfigurationBase + */ + Configuration(const std::string& key); + /** + * @brief Gets the preferred theme for the application. + * @return The preferred theme + */ + Theme getTheme() const; + /** + * @brief Sets the preferred theme for the application. + * @param theme The new preferred theme + */ + void setTheme(Theme theme); + /** + * @brief Gets whether or not to automatically check for application updates. + * @return True to automatically check for updates, else false + */ + bool getAutomaticallyCheckForUpdates() const; + /** + * @brief Sets whether or not to automatically check for application updates. + * @param check Whether or not to automatically check for updates + */ + void setAutomaticallyCheckForUpdates(bool check); + /** + * @brief Gets the list of valid RecentAccount objects. + * @return The list of valid RecentAccount objects + */ + std::vector getRecentAccounts(); + /** + * @brief Adds a new recent account to the list. + * @param recent The recent account to add + */ + void addRecentAccount(const RecentAccount& recent); + /** + * @brief Removes a recent account from the list. + * @param recent The recent account to remove + */ + void removeRecentAccount(const RecentAccount& recent); + /** + * @brief Gets the default color for transactions. + * @return The default color for transactions + */ + Color getTransactionDefaultColor() const; + /** + * @brief Sets the default color for transactions. + * @param color The new default color + */ + void setTransactionDefaultColor(const Color& color); + /** + * @brief Gets the default color for transfers. + * @return The default color for transfers + */ + Color getTransferDefaultColor() const; + /** + * @brief Sets the default color for transfers. + * @param color The new default color + */ + void setTransferDefaultColor(const Color& color); + /** + * @brief Gets the default color for groups. + * @return The default color for groups + */ + Color getGroupDefaultColor() const; + /** + * @brief Sets the default color for groups. + * @param color The new default color + */ + void setGroupDefaultColor(const Color& color); + /** + * @brief Gets the trigger for inserting decimal separators. + * @return InsertSeparatorTrigger + */ + InsertSeparatorTrigger getInsertSeparator() const; + /** + * @brief Sets the trigger for inserting decimal separators. + * @param separator InsertSeparatorTrigger + */ + void setInsertSeparator(InsertSeparatorTrigger separator); + + private: + /** + * @brief Gets a numbered recent account. + * @param index The number of the recent account to get + * @return The numbered RecentAccount + */ + RecentAccount getRecentAccount(int index) const; + /** + * @brief Sets a numbered recent account. + * @param index The number of the recent account + * @param recent The RecentAccount object + */ + void setRecentAccount(int index, const RecentAccount& recent); + }; +} + +#endif //CONFIGURATION_H \ No newline at end of file diff --git a/libdenaro/include/models/currency.h b/libdenaro/include/models/currency.h new file mode 100644 index 000000000..4f964c662 --- /dev/null +++ b/libdenaro/include/models/currency.h @@ -0,0 +1,140 @@ +#ifndef CUSTOMCURRENCY_H +#define CUSTOMCURRENCY_H + +#include +#include "amountstyle.h" +#include "currencycheckstatus.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a currency. + */ + class Currency + { + public: + /** + * @brief Constructs a Currency. + */ + Currency(); + /** + * @brief Constructs a Currency. + * @param symbol The symbol of the currency + * @param code The code of the currency + */ + Currency(const std::string& symbol, const std::string& code); + /** + * @brief Checks the validity of the Currency object. + * @return CurrencyCheckStatus + */ + CurrencyCheckStatus validate() const; + /** + * @brief Gets the symbol of the currency. + * @return The symbol of the currency + */ + const std::string& getSymbol() const; + /** + * @brief Sets the symbol of the currency. + * @brief If the new symbol is empty, the new symbol will not be set. + * @param symbol The new symbol of the currency + */ + void setSymbol(const std::string& symbol); + /** + * @brief Gets the code of the currency. + * @return The code of the currency + */ + const std::string& getCode() const; + /** + * @brief Sets the code of the currency. + * @brief If the new code is empty, the new code will not be set. + * @param code The new code of the currency + */ + void setCode(const std::string& code); + /** + * @brief Gets the decimal separator of the currency. + * @return The decimal separator of the currency + */ + char getDecimalSeparator() const; + /** + * @brief Sets the decimal separator of the currency. + * @param separator The new decimal separator of the currency + */ + void setDecimalSeparator(char separator); + /** + * @brief Gets the group separator of the currency. + * @return The group separator of the currency + */ + char getGroupSeparator() const; + /** + * @brief Sets the group separator of the currency. + * @param separator The new group separator of the currency + */ + void setGroupSeparator(char separator); + /** + * @brief Gets the number of decimal digits of the currency. + * @return The number of decimal digits of the currency + */ + int getDecimalDigits() const; + /** + * @brief Sets the number of decimal digits of the currency. + * @param digits The new number of decimal digits of the currency + */ + void setDecimalDigits(int digits); + /** + * @brief Gets the style to use for displaying amounts of the currency. + * @return The style to use for displaying amounts of the currency + */ + AmountStyle getAmountStyle() const; + /** + * @brief Sets the style to use for displaying amounts of the currency. + * @param style The new style to use for displaying amounts of the currency + */ + void setAmountStyle(AmountStyle style); + /** + * @brief Gets the string representation of the Currency. "Symbol (Code)" + * @return The string representation of the Currency + */ + std::string toString() const; + /** + * @brief Gets whether or not the object is valid or not. + * @return True if valid (check() == CurrencyCheckStatus::Valid), else false + */ + operator bool() const; + /** + * @brief Gets whether or not this currency is same as the compare currency. + * @param compare The Currency to compare to + * @return True if this Currency == compare Currency + */ + bool operator==(const Currency& compare) const; + /** + * @brief Gets whether or not this currency is not equal to the compare currency. + * @param compare The Currency to compare to + * @return True if this Currency != compare Currency + */ + bool operator!=(const Currency& compare) const; + + private: + std::string m_symbol; + std::string m_code; + char m_decimalSeparator; + char m_groupSeparator; + int m_decimalDigits; + AmountStyle m_amountStyle; + }; +} + +namespace std +{ + template <> + struct hash + { + size_t operator()(const Nickvision::Money::Shared::Models::Currency& currency) const + { + size_t h1{ hash()(currency.getSymbol()) }; + size_t h2{ hash()(currency.getCode()) }; + return h1 ^ (h2 << 1); + } + }; +} + +#endif //CUSTOMCURRENCY_H \ No newline at end of file diff --git a/libdenaro/include/models/currencycheckstatus.h b/libdenaro/include/models/currencycheckstatus.h new file mode 100644 index 000000000..5655086a7 --- /dev/null +++ b/libdenaro/include/models/currencycheckstatus.h @@ -0,0 +1,21 @@ +#ifndef CURRENCYCHECKSTATUS_H +#define CURRENCYCHECKSTATUS_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Statuses for when a currency is validated. + */ + enum class CurrencyCheckStatus + { + Valid = 1, + EmptySymbol = 2, + EmptyCode = 4, + EmptyDecimalSeparator = 8, + SameSeparators = 16, + SameSymbolAndDecimalSeparator = 32, + SameSymbolAndGroupSeparator = 64 + }; +} + +#endif //CURRENCYCHECKSTATUS_H \ No newline at end of file diff --git a/libdenaro/include/models/currencyconversion.h b/libdenaro/include/models/currencyconversion.h new file mode 100644 index 000000000..84a2baa5e --- /dev/null +++ b/libdenaro/include/models/currencyconversion.h @@ -0,0 +1,56 @@ +#ifndef CURRENCYCONVERSION_H +#define CURRENCYCONVERSION_H + +#include + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a currency conversion. + */ + class CurrencyConversion + { + public: + /** + * @brief Constructs a CurrencyConversion. + * @param sourceCurrency The currency code of the source amount + * @param sourceAmount The source amount to convert + * @param resultCurrency The currency code of the result amount + * @param conversionRate The rate of conversion from the source currency to the result currency + */ + CurrencyConversion(const std::string& sourceCurrency, double sourceAmount, const std::string& resultCurrency, double conversionRate); + /** + * @brief Gets the currency code of the source amount. + * @return The source currency code + */ + const std::string& getSourceCurrency() const; + /** + * @brief Gets the source amount to convert. + * @return The source amount + */ + double getSourceAmount() const; + /** + * @brief Gets the currency code of the result amount. + * @return The result currency code + */ + const std::string& getResultCurrency() const; + /** + * @brief Gets the rate of conversion from the source currency to the result currency. + * @return The conversion rate + */ + double getConversionRate() const; + /** + * @brief Gets the result amount using the conversion rate. + * @return The result amount + */ + double getResultAmount() const; + + private: + std::string m_sourceCurrency; + double m_sourceAmount; + std::string m_resultCurrency; + double m_conversionRate; + }; +} + +#endif //CURRENTCONVERSION_H \ No newline at end of file diff --git a/libdenaro/include/models/currencyconversionservice.h b/libdenaro/include/models/currencyconversionservice.h new file mode 100644 index 000000000..178fefc97 --- /dev/null +++ b/libdenaro/include/models/currencyconversionservice.h @@ -0,0 +1,28 @@ +#ifndef CURRENCYCONVERSIONSERVICE_H +#define CURRENCYCONVERSIONSERVICE_H + +#include +#include +#include +#include "currencyconversion.h" + +namespace Nickvision::Money::Shared::Models::CurrencyConversionService +{ + /** + * @brief Converts a sourceAmount from the sourceCurrency to the resultCurrency. + * @param sourceCurrency The currency code of the source amount + * @param sourceAmount The source amount to convert + * @param resultCurrency The currency code of the result amount + * @return The CurrencyConversion object if successful, else std::nullopt + */ + std::optional convert(const std::string& sourceCurrency, double sourceAmount, const std::string& resultCurrency); + /** + * @brief Gets a map of conversion rates from the sourceCurrency to other currencies. + * @brief This method will cache the data for the sourceCurrency on disk. + * @param sourceCurrency The currency code to get converting rates for + * @return The map of conversion rates + */ + const std::map& getConversionRates(const std::string& sourceCurrency); +} + +#endif //CURRENCYCONVERSIONSERVICE_H \ No newline at end of file diff --git a/libdenaro/include/models/dashboardgroup.h b/libdenaro/include/models/dashboardgroup.h new file mode 100644 index 000000000..cddfc87f0 --- /dev/null +++ b/libdenaro/include/models/dashboardgroup.h @@ -0,0 +1,38 @@ +#ifndef DASHBOARDGROUP_H +#define DASHBOARDGROUP_H + +#include +#include +#include +#include "currency.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a dashboard group. + */ + class DashboardGroup + { + public: + /** + * @brief Constructs a DashboardGroup. + */ + DashboardGroup(); + /** + * @brief Gets the data of the dashboard group. + * @return A map of currency and amount, description pairs + */ + const std::unordered_map>& getData() const; + /** + * @brief Adds an amount to the dashboard group. + * @param amount The amount to add + * @param currency The currency of the amount + * @param accountName The name of the account the amount is from + */ + void addAmount(double amount, const Currency& currency, const std::string& accountName); + + private: + std::unordered_map> m_data; + }; +} +#endif //DASHBOARDGROUP_H diff --git a/libdenaro/include/models/graphtype.h b/libdenaro/include/models/graphtype.h new file mode 100644 index 000000000..f4bbb6a46 --- /dev/null +++ b/libdenaro/include/models/graphtype.h @@ -0,0 +1,19 @@ +#ifndef GRAPHTYPE_H +#define GRAPHTYPE_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Types of graphs that can be generated. + */ + enum class GraphType + { + IncomeExpensePie = 0, + IncomeExpensePerGroup, + IncomeExpenseOverTime, + IncomeByGroup, + ExpenseByGroup + }; +} + +#endif //GRAPHTYPE_H \ No newline at end of file diff --git a/libdenaro/include/models/group.h b/libdenaro/include/models/group.h new file mode 100644 index 000000000..d6c837e95 --- /dev/null +++ b/libdenaro/include/models/group.h @@ -0,0 +1,117 @@ +#ifndef GROUP_H +#define GROUP_H + +#include +#include +#include +#include "color.h" +#include "transaction.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a group of transactions. + */ + class Group + { + public: + /** + * @brief Constructs a Group. + * @param id The id of the group + */ + Group(int id); + /** + * @brief Gets the id of the group. + * @return The id of the group. + */ + int getId() const; + /** + * @brief Gets the name of the group. + * @return The name of the group. + */ + const std::string& getName() const; + /** + * @brief Sets the name of the group. + * @param name The new name of the group. + */ + void setName(const std::string& name); + /** + * @brief Gets the description of the group. + * @return The description of the group. + */ + const std::string& getDescription() const; + /** + * @brief Sets the description of the group. + * @param description The new description of the group. + */ + void setDescription(const std::string& description); + /** + * @brief Gets the color of the group. + * @return The color of the group. + */ + const Color& getColor() const; + /** + * @brief Sets the color of the group. + * @param color The new color of the group. + */ + void setColor(const Color& color); + /** + * @brief Gets the total balance of the group. + * @param transactionIds The ids of transactions to consider + * @return The group balance. + */ + double getBalance(const std::vector& transactionIds = {}) const; + /** + * @brief Updates the balance of the group. + * @param transaction The transaction to update the balance with + * @param remove Whether or not to remove the transaction from the balance + * @return The new balance of the group + */ + double updateBalance(const Transaction& transaction, bool remove = false); + /** + * @brief Gets the total amount of the income amounts in the group. + * @param transactionIds The ids of transactions to consider + * @return The group income + */ + double getIncome(const std::vector& transactionIds = {}) const; + /** + * @brief Gets the total amount of the expense amounts in the group. + * @param transactionIds The ids of transactions to consider + * @return The group expense + */ + double getExpense(const std::vector& transactionIds = {}) const; + /** + * @brief Gets whether or not this Group is equal to compare Group. + * @param compare The Group to compare to + * @return True if this Group == compare Group + */ + bool operator==(const Group& compare) const; + /** + * @brief Gets whether or not this Group is not equal to compare Group. + * @param compare The Group to compare to + * @return True if this Group != compare Group + */ + bool operator!=(const Group& compare) const; + /** + * @brief Gets whether or not this Group is less than to compare Group. + * @param compare The Group to compare to + * @return True if this Group < compare Group + */ + bool operator<(const Group& compare) const; + /** + * @brief Gets whether or not this Group is greater than to compare Group. + * @param compare The Group to compare to + * @return True if this Group > compare Group + */ + bool operator>(const Group& compare) const; + + private: + int m_id; + std::string m_name; + std::string m_description; + Color m_color; + std::unordered_map m_amounts; + double m_balance; + }; +} +#endif //GROUP_H \ No newline at end of file diff --git a/libdenaro/include/models/importresult.h b/libdenaro/include/models/importresult.h new file mode 100644 index 000000000..e476d650c --- /dev/null +++ b/libdenaro/include/models/importresult.h @@ -0,0 +1,70 @@ +#ifndef IMPORTRESULT_H +#define IMPORTRESULT_H + +#include +#include + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of the result from importing a file. + */ + class ImportResult + { + public: + /** + * @brief Constructs an ImportResult. + */ + ImportResult() = default; + /** + * @brief Gets whether or not the ImportResult object represents an empty value. + * @return True if empty, else false + */ + bool empty() const; + /** + * @brief Gets the list of new transaction ids from the import. + * @return The list of new transaction ids + */ + const std::vector& getNewTransactionIds() const; + /** + * @brief Gets the list of new group ids from the import. + * @return The list of new group ids + */ + const std::vector& getNewGroupIds() const; + /** + * @brief Gets the list of new tags from the import. + * @return The list of new tags + */ + const std::vector& getNewTags() const; + /** + * @brief Adds a transaction id to the new transaction ids list. + * @brief This method will only add the transaction id if it doesn't already exist in the list. + * @param id The transaction id to add + */ + void addTransaction(int id); + /** + * @brief Adds a group id to the new group ids list. + * @brief This method will only add the group id if it doesn't already exist in the list. + * @param id The group id to add + */ + void addGroup(int id); + /** + * @brief Adds a list of tags to the new tags list. + * @brief This method will only add tags if they doesn't already exist in the list. + * @param tags The tags to add + */ + void addTags(const std::vector& tags); + /** + * @brief Gets whether or not the object is valid or not. + * @return True if valid (!empty), else false + */ + operator bool() const; + + private: + std::vector m_newTransactions; + std::vector m_newGroups; + std::vector m_newTags; + }; +} + +#endif //IMPORTRESULT_H \ No newline at end of file diff --git a/libdenaro/include/models/insertseparatortrigger.h b/libdenaro/include/models/insertseparatortrigger.h new file mode 100644 index 000000000..4ec5168b5 --- /dev/null +++ b/libdenaro/include/models/insertseparatortrigger.h @@ -0,0 +1,17 @@ +#ifndef INSERTSEPARATOR_H +#define INSERTSEPARATOR_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Triggers that allow for inserting decimal separators. + */ + enum class InsertSeparatorTrigger + { + Off = 0, + NumpadOnly, + PeriodComma + }; +} + +#endif //INSERTSEPARATOR_H \ No newline at end of file diff --git a/libdenaro/include/models/receipt.h b/libdenaro/include/models/receipt.h new file mode 100644 index 000000000..a209dc6d1 --- /dev/null +++ b/libdenaro/include/models/receipt.h @@ -0,0 +1,77 @@ +#ifndef RECEIPT_H +#define RECEIPT_H + +#include +#include +#include +#include +#include "receipttype.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model for a receipt. + * @brief A receipt supports binary files of type JPEG, PNG, and PDF. + */ + class Receipt + { + public: + /** + * @brief Constructs a Receipt. + */ + Receipt(); + /** + * @brief Constructs a Receipt. + * @brief If the file does not exist, an empty receipt will be constructed. + * @param pathToFile The path to a file to load into the receipt + */ + Receipt(const std::filesystem::path& pathToFile); + /** + * @brief Constructs a Receipt. + * @param bytes A vector of bytes representing the Receipt object. bytes[0] should contain the ReceiptType byte. + * @throw std::invalid_argument Thrown if the vector of bytes is not a valid Receipt object + */ + Receipt(const std::vector& bytes); + /** + * @brief Constructs a Receipt. + * @param base64 A base64 encoded string representing the Receipt object. + * @throw std::invalid_argument Thrown if the base64 string is not a valid Receipt object + */ + Receipt(const std::string& base64); + /** + * @brief Gets whether or not the Receipt object represents an empty value. + * @return True if empty, else false + */ + bool empty() const; + /** + * @brief Gets the type of the receipt. + * @return The receipt type + */ + ReceiptType getType() const; + /** + * @brief Gets the base64 encoded string representing this Receipt object. + * @return The base64 string of this Receipt + */ + const std::string& toString() const; + /** + * @brief Saves this Receipt to a file on disk. + * @brief If the pathToFile does not contain the correct extension for this Receipt's type, it will be added by this method. + * @param pathToFile The path to the file to save the receipt to + * @param overwrite Whether or not to overwrite an existing file @ pathToFile + * @return True if successful, else false + */ + bool saveToDisk(const std::filesystem::path& pathToFile, bool overwrite = true) const; + /** + * @brief Gets whether or not the object is valid or not. + * @return True if valid (!empty), else false + */ + operator bool() const; + + private: + ReceiptType m_type; + std::vector m_bytes; + std::string m_base64; + }; +} + +#endif //RECEIPT_H \ No newline at end of file diff --git a/libdenaro/include/models/receipttype.h b/libdenaro/include/models/receipttype.h new file mode 100644 index 000000000..bfc5f6284 --- /dev/null +++ b/libdenaro/include/models/receipttype.h @@ -0,0 +1,18 @@ +#ifndef RECEIPTTYPE_H +#define RECEIPTTYPE_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Types of receipts that can be stored in a transaction. + */ + enum class ReceiptType : unsigned char + { + JPEG = 'J', + PNG = 'P', + PDF = 'D', + Unknown = 'U' + }; +} + +#endif //RECEIPTTYPE_H \ No newline at end of file diff --git a/libdenaro/include/models/recentaccount.h b/libdenaro/include/models/recentaccount.h new file mode 100644 index 000000000..9c9ac0b37 --- /dev/null +++ b/libdenaro/include/models/recentaccount.h @@ -0,0 +1,86 @@ +#ifndef RECENTACCOUNT_H +#define RECENTACCOUNT_H + +#include +#include +#include "accounttype.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a recent account. + */ + class RecentAccount + { + public: + /** + * @brief Constructs a RecentAccount. + */ + RecentAccount(); + /** + * @brief Constructs a RecentAccount. + * @param path The path of the recent account + */ + RecentAccount(const std::filesystem::path& path); + /** + * @brief Gets the path of the recent account. + * @return The path of the recent account + */ + const std::filesystem::path& getPath() const; + /** + * @brief Sets the path of the recent account. + * @param path The new path of the recent account + */ + void setPath(const std::filesystem::path& path); + /** + * @brief Gets the name of the recent account. + * @return The name of the recent account + */ + const std::string& getName() const; + /** + * @brief Sets the name of the recent account. + * @param name The new name of the recent account + */ + void setName(const std::string& name); + /** + * @brief Gets the type of the recent account. + * @return The type of the recent account + */ + AccountType getType() const; + /** + * @brief Sets the type of the recent account. + * @param type The new type of the recent account + */ + void setType(AccountType type); + /** + * @brief Gets whether or not the object represents an empty RecentAccount. + * @brief An empty RecentAccount is one that has no path or one whose path does not exist. + * @return True if empty, else false + */ + bool empty() const; + /** + * @brief Gets whether or not this RecentAccount is equal to compare RecentAccount. + * @param compare The RecentAccount to compare to + * @return True if this RecentAccount == compare RecentAccount + */ + bool operator==(const RecentAccount& compare) const; + /** + * @brief Gets whether or not this RecentAccount is not equal to compare RecentAccount. + * @param compare The RecentAccount to compare to + * @return True if this RecentAccount != compare RecentAccount + */ + bool operator!=(const RecentAccount& compare) const; + /** + * @brief Gets whether or not the object is valid or not. + * @return True if valid (!empty), else false + */ + operator bool() const; + + private: + std::filesystem::path m_path; + std::string m_name; + AccountType m_type; + }; +} + +#endif //RECENTACCOUNT_H \ No newline at end of file diff --git a/libdenaro/include/models/remindersthreshold.h b/libdenaro/include/models/remindersthreshold.h new file mode 100644 index 000000000..aae3198a4 --- /dev/null +++ b/libdenaro/include/models/remindersthreshold.h @@ -0,0 +1,19 @@ +#ifndef REMINDERSTHRESHOLD_H +#define REMINDERSTHRESHOLD_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Thresholds for when to show a reminder. + */ + enum class RemindersThreshold + { + Never = 0, + OneDayBefore, + OneWeekBefore, + OneMonthBefore, + TwoMonthsBefore + }; +} + +#endif //REMINDERSTHRESHOLD_H \ No newline at end of file diff --git a/libdenaro/include/models/sortby.h b/libdenaro/include/models/sortby.h new file mode 100644 index 000000000..f03381647 --- /dev/null +++ b/libdenaro/include/models/sortby.h @@ -0,0 +1,17 @@ +#ifndef SORTBY_H +#define SORTBY_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Ways for sorting transactions. + */ + enum class SortBy + { + Id = 0, + Date, + Amount + }; +} + +#endif //SORTBY_H \ No newline at end of file diff --git a/libdenaro/include/models/theme.h b/libdenaro/include/models/theme.h new file mode 100644 index 000000000..132144ff8 --- /dev/null +++ b/libdenaro/include/models/theme.h @@ -0,0 +1,17 @@ +#ifndef THEME_H +#define THEME_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief User interface themes for an application. + */ + enum class Theme + { + Light = 0, + Dark, + System + }; +} + +#endif //THEME_H \ No newline at end of file diff --git a/libdenaro/include/models/transaction.h b/libdenaro/include/models/transaction.h new file mode 100644 index 000000000..3e79cb4ad --- /dev/null +++ b/libdenaro/include/models/transaction.h @@ -0,0 +1,223 @@ +#ifndef TRANSACTION_H +#define TRANSACTION_H + +#include +#include +#include +#include "color.h" +#include "receipt.h" +#include "transactionrepeatinterval.h" +#include "transactiontype.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of a transaction. + */ + class Transaction + { + public: + /** + * @brief Constructs a Transaction. + * @param id The id of the transaction + */ + Transaction(int id); + /** + * @brief Gets the id of the transaction. + * @return The transaction id + */ + int getId() const; + /** + * @brief Gets the date of the transaction. + * @return The transaction date + */ + const boost::gregorian::date& getDate() const; + /** + * @brief Sets the date of the transaction. + * @param date The new transaction date + */ + void setDate(const boost::gregorian::date& date); + /** + * @brief Gets the description of the transaction. + * @return The transaction description + */ + const std::string& getDescription() const; + /** + * @brief Sets the description of the transaction. + * @param description The new transaction description + */ + void setDescription(const std::string& description); + /** + * @brief Gets the type of the transaction. + * @return The transaction type + */ + TransactionType getType() const; + /** + * @brief Sets the type of the transaction. + * @param type The new transaction type + */ + void setType(TransactionType type); + /** + * @brief Gets the amount of the transaction. + * @return The transaction amount + */ + double getAmount() const; + /** + * @brief Sets the amount of the transaction. + * @param amount The new transaction amount + */ + void setAmount(double amount); + /** + * @brief Gets the group id of the transaction. + * @return The transaction group id (-1 for no group) + */ + int getGroupId() const; + /** + * @brief Sets the group id of the transaction. + * @param groupId The new transaction group id (-1 for no group) + */ + void setGroupId(int groupId); + /** + * @brief Gets the color of the transaction. + * @return The transaction color + */ + const Color& getColor() const; + /** + * @brief Sets the color of the transaction. + * @param color The new transaction color + */ + void setColor(const Color& color); + /** + * @brief Gets whether or not to use the color of the associated group instead of this transaction's color. + * @return True to use group color, else false + */ + bool getUseGroupColor() const; + /** + * @brief Sets whether or not to use the color of the associated group instead of this transaction's color. + * @param useGroupColor True to use group color, else false + */ + void setUseGroupColor(bool useGroupColor); + /** + * @brief Gets the receipt of the transaction. + * @return The transaction receipt + */ + const Receipt& getReceipt() const; + /** + * @brief Sets the receipt of the transaction. + * @param receipt The new transaction receipt + */ + void setReceipt(const Receipt& receipt); + /** + * @brief Gets the repeat interval of the transaction. + * @return The transaction repeat interval + */ + TransactionRepeatInterval getRepeatInterval() const; + /** + * @brief Sets the repeat interval of the transaction. + * @param repeatInterval The new transaction repeat interval + */ + void setRepeatInterval(TransactionRepeatInterval repeatInterval); + /** + * @brief Gets the source id of the repeat transaction. + * @return The repeat transaction source id (-1 if not a repeat transaction, 0 if source transaction) + */ + int getRepeatFrom() const; + /** + * @brief Sets the source id of the repeat transaction. + * @param repeatFrom The new repeat transaction source id (-1 if not a repeat transaction, 0 if source transaction) + */ + void setRepeatFrom(int repeatFrom); + /** + * @brief Gets the repeat end date of the transaction. + * @return The transaction repeat end date + */ + const boost::gregorian::date& getRepeatEndDate() const; + /** + * @brief Sets the repeat end date of the transaction. + * @param repeatEndDate The new transaction repeat end date + */ + void setRepeatEndDate(const boost::gregorian::date& repeatEndDate); + /** + * @brief Gets the tags of the transaction. + * @return The transaction tags + */ + const std::vector& getTags() const; + /** + * @brief Adds a tag to the transaction. + * @param tag The tag to add + * @return True if successful, else false if the tag already exists in the transaction + */ + bool addTag(const std::string& tag); + /** + * @brief Removes a tag from the transaction. + * @param tag The tag to remove + * @return True if successful, else false if the tag does not exist in the transaction + */ + bool removeTag(const std::string& tag); + /** + * @brief Sets the tags of the transaction. + * @brief This method overwrites the current tags. + * @param tags The new transaction tags + */ + void setTags(const std::vector& tags); + /** + * @brief Gets the notes of the transaction. + * @return The transaction notes + */ + const std::string& getNotes() const; + /** + * @brief Sets the notes of the transaction. + * @param notes The new transaction notes + */ + void setNotes(const std::string& notes); + /** + * @brief Creates a repeat transaction using this transaction as the source. + * @param newId The id to use for the repeat transaction + * @param newDate The date to use for the repeat transaction + * @return The new repeat transaction + */ + Transaction repeat(int newId, const boost::gregorian::date& newDate = boost::gregorian::day_clock::local_day()) const; + /** + * @brief Gets whether or not this Transaction is equal to compare Transaction. + * @param compare The Transaction to compare to + * @return True if this Transaction == compare Transaction + */ + bool operator==(const Transaction& compare) const; + /** + * @brief Gets whether or not this Transaction is not equal to compare Transaction. + * @param compare The Transaction to compare to + * @return True if this Transaction != compare Transaction + */ + bool operator!=(const Transaction& compare) const; + /** + * @brief Gets whether or not this Transaction is less than to compare Transaction. + * @param compare The Transaction to compare to + * @return True if this Transaction < compare Transaction + */ + bool operator<(const Transaction& compare) const; + /** + * @brief Gets whether or not this Transaction is greater than to compare Transaction. + * @param compare The Transaction to compare to + * @return True if this Transaction > compare Transaction + */ + bool operator>(const Transaction& compare) const; + + private: + int m_id; + boost::gregorian::date m_date; + std::string m_description; + TransactionType m_type; + double m_amount; + int m_groupId; + Color m_color; + bool m_useGroupColor; + Receipt m_receipt; + TransactionRepeatInterval m_repeatInterval; + int m_repeatFrom; + boost::gregorian::date m_repeatEndDate; + std::vector m_tags; + std::string m_notes; + }; +} + +#endif //TRANSACTION_H \ No newline at end of file diff --git a/libdenaro/include/models/transactionreminder.h b/libdenaro/include/models/transactionreminder.h new file mode 100644 index 000000000..5ad8afc98 --- /dev/null +++ b/libdenaro/include/models/transactionreminder.h @@ -0,0 +1,75 @@ +#ifndef TRANSACTIONREMINDER_H +#define TRANSACTIONREMINDER_H + +#include +#include +#include "currency.h" +#include "transactiontype.h" + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A reminder for a transaction. + */ + class TransactionReminder + { + public: + /** + * @brief Constructs a TransactionReminder. + * @param description The description of the transaction. + * @param when The date of when the transaction is occurring. + */ + TransactionReminder(const std::string& description, const boost::gregorian::date& when); + /** + * @brief Gets the description of the transaction. + * @return The description of the transaction + */ + const std::string& getDescription() const; + /** + * @brief Sets the description of the transaction. + * @param description The new description of the transaction + */ + void setDescription(const std::string& description); + /** + * @brief Gets the amount of the transaction. + * @return The amount of the transaction + */ + double getAmount() const; + /** + * @brief Gets the amount of the transaction as a string. + * @return The amount of the transaction as a string + */ + const std::string& getAmountString() const; + /** + * @brief Sets the amount of the transaction. + * @param amount The new amount of the transaction + * @param type The type of the transaction + * @param currency The currency of the account + */ + void setAmount(double amount, TransactionType type, const Currency& currency); + /** + * @brief Gets when the transaction is occurring. + * @return When the transaction is occurring + */ + const boost::gregorian::date& getWhen() const; + /** + * @brief Gets when the transaction is occurring as a string. + * @return When the transaction is occurring as a string + */ + const std::string& getWhenString() const; + /** + * @brief Sets the when the transaction is occurring. + * @param when The new date of when the transaction is occurring + */ + void setWhen(const boost::gregorian::date& when); + + private: + std::string m_description; + double m_amount; + std::string m_amountString; + boost::gregorian::date m_when; + std::string m_whenString; + }; +} + +#endif //TRANSACTIONREMINDER_H \ No newline at end of file diff --git a/libdenaro/include/models/transactionrepeatinterval.h b/libdenaro/include/models/transactionrepeatinterval.h new file mode 100644 index 000000000..8c6ac5900 --- /dev/null +++ b/libdenaro/include/models/transactionrepeatinterval.h @@ -0,0 +1,22 @@ +#ifndef TRANSACTIONREPEATINTERVAL_H +#define TRANSACTIONREPEATINTERVAL_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Repeat intervals for a transaction. + */ + enum class TransactionRepeatInterval + { + Never = 0, + Daily = 1, + Weekly = 2, + Biweekly = 7, + Monthly = 3, + Quarterly = 4, + Yearly = 5, + Biyearly = 6 + }; +} + +#endif //TRANSACTIONREPEATINTERVAL_H \ No newline at end of file diff --git a/libdenaro/include/models/transactiontype.h b/libdenaro/include/models/transactiontype.h new file mode 100644 index 000000000..fab2f61f9 --- /dev/null +++ b/libdenaro/include/models/transactiontype.h @@ -0,0 +1,16 @@ +#ifndef TRANSACTIONTYPE_H +#define TRANSACTIONTYPE_H + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief Types of a transaction. + */ + enum class TransactionType + { + Income = 0, + Expense + }; +} + +#endif //TRANSACTIONTYPE_H \ No newline at end of file diff --git a/libdenaro/include/models/transfer.h b/libdenaro/include/models/transfer.h new file mode 100644 index 000000000..934725a36 --- /dev/null +++ b/libdenaro/include/models/transfer.h @@ -0,0 +1,94 @@ +#ifndef TRANSFER_H +#define TRANSFER_H + +#include +#include + +namespace Nickvision::Money::Shared::Models +{ + /** + * @brief A model of an amount transfer from a source account to a destination account. + */ + class Transfer + { + public: + /** + * @brief Constructs a Transfer. + * @param sourceAccountPath The path of the source account + * @param sourceAccountName The name of the source account, if available + */ + Transfer(const std::filesystem::path& sourceAccountPath, const std::string& sourceAccountName = ""); + /** + * @brief Gets the path of the source account. + * @return The source account path + */ + const std::filesystem::path& getSourceAccountPath() const; + /** + * @brief Gets the name of the source account. + * @return The source account name + */ + const std::string& getSourceAccountName() const; + /** + * @brief Sets the name of the source account. + * @param sourceAccountName The new source account name + */ + void setSourceAccountName(const std::string& sourceAccountName); + /** + * @brief Gets the amount of the transfer from the source account. + * @return The source transfer amount + */ + double getSourceAmount() const; + /** + * @brief Sets the amount of the transfer from the source account. + * @param sourceAmount The new source transfer amount + */ + void setSourceAmount(double sourceAmount); + /** + * @brief Gets the path of the destination account. + * @return The destination account path + */ + const std::filesystem::path& getDestinationAccountPath() const; + /** + * @brief Sets the path of the destination account. + * @param destinationAccountPath The new destination account path + */ + void setDestinationAccountPath(const std::filesystem::path& destinationAccountPath); + /** + * @brief Gets the password of the destination account. + * @return The destination account password + */ + const std::string& getDestinationAccountPassword() const; + /** + * @brief Sets the password of the destination account. + * @param destinationAccountPassword The new destination account password + */ + void setDestinationAccountPassword(const std::string& destinationAccountPassword); + /** + * @brief Gets the rate of conversion from the source currency to the destination currency. + * @brief The conversion rate will be 1 if the source and destination currencies are the same. + * @return The conversion rate + */ + double getConversionRate() const; + /** + * @brief Sets the rate of conversion from the source currency to the destination currency. + * @brief Should be set to 1 if the source and destination currencies are the same. + * @param conversionRate The new conversion rate + */ + void setConversionRate(double conversionRate); + /** + * @brief Gets the amount of the transfer to the destination account. + * @return The destination transfer amount + */ + double getDestinationAmount() const; + + private: + std::filesystem::path m_sourceAccountPath; + std::string m_sourceAccountName; + double m_sourceAmount; + std::filesystem::path m_destinationAccountPath; + std::string m_destinationAccountPassword; + double m_conversionRate; + }; +} + +#endif //TRANSFER_H \ No newline at end of file diff --git a/libdenaro/src/controllers/accountsettingsdialogcontroller.cpp b/libdenaro/src/controllers/accountsettingsdialogcontroller.cpp new file mode 100644 index 000000000..5c69b8392 --- /dev/null +++ b/libdenaro/src/controllers/accountsettingsdialogcontroller.cpp @@ -0,0 +1,99 @@ +#include "controllers/accountsettingsdialogcontroller.h" +#include +#include "helpers/currencyhelpers.h" + +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::Shared::Controllers +{ + AccountSettingsDialogController::AccountSettingsDialogController(const std::shared_ptr& account) + : m_account{ account } + { + + } + + const AccountMetadata& AccountSettingsDialogController::getMetadata() const + { + return m_account->getMetadata(); + } + + std::string AccountSettingsDialogController::getReportedCurrencyString() const + { + std::string reportedCurrency{ _("Your system reported that your currency is") }; +#ifdef _WIN32 + reportedCurrency += CurrencyHelpers::getSystemCurrency().toString(); +#elif defined(__linux__) + reportedCurrency += "\n" + CurrencyHelpers::getSystemCurrency().toString() + ""; +#endif + return reportedCurrency; + } + + bool AccountSettingsDialogController::isEncrypted() const + { + return m_account->isEncrypted(); + } + + bool AccountSettingsDialogController::setName(const std::string& name) + { + if(name.empty()) + { + return false; + } + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setName(name); + m_account->setMetadata(metadata); + return true; + } + + bool AccountSettingsDialogController::setPassword(const std::string& password) + { + return m_account->changePassword(password); + } + + void AccountSettingsDialogController::setAccountType(AccountType accountType) + { + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setType(accountType); + m_account->setMetadata(metadata); + } + + void AccountSettingsDialogController::setDefaultTransactionType(TransactionType defaultTransactionType) + { + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setDefaultTransactionType(defaultTransactionType); + m_account->setMetadata(metadata); + } + + void AccountSettingsDialogController::setTransactionRemindersThreshold(RemindersThreshold remindersThreshold) + { + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setTransactionRemindersThreshold(remindersThreshold); + m_account->setMetadata(metadata); + } + + void AccountSettingsDialogController::setCustomCurrencyOff() + { + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setUseCustomCurrency(false); + metadata.setCustomCurrency({}); + m_account->setMetadata(metadata); + } + + Models::CurrencyCheckStatus AccountSettingsDialogController::setCustomCurrency(const std::string& symbol, const std::string& code, char decimalSeparator, char groupSeparator, int decimalDigits, AmountStyle amountStyle) + { + Currency currency{ symbol, code }; + currency.setDecimalSeparator(decimalSeparator); + currency.setGroupSeparator(groupSeparator); + currency.setDecimalDigits(decimalDigits); + currency.setAmountStyle(amountStyle); + CurrencyCheckStatus status{ currency.validate() }; + if(status == CurrencyCheckStatus::Valid) + { + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setUseCustomCurrency(true); + metadata.setCustomCurrency(currency); + m_account->setMetadata(metadata); + } + return status; + } +} diff --git a/libdenaro/src/controllers/accountviewcontroller.cpp b/libdenaro/src/controllers/accountviewcontroller.cpp new file mode 100644 index 000000000..124c3cecd --- /dev/null +++ b/libdenaro/src/controllers/accountviewcontroller.cpp @@ -0,0 +1,95 @@ +#include "controllers/accountviewcontroller.h" +#include +#include +#include +#include "controllers/accountsettingsdialogcontroller.h" +#include "helpers/currencyhelpers.h" +#include "models/configuration.h" + +using namespace Nickvision::App; +using namespace Nickvision::Events; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::Shared::Controllers +{ + AccountViewController::AccountViewController(const std::filesystem::path& path, const std::string& password) + : m_account{ std::make_shared(path) } + { + if(!m_account->login(password, Aura::getActive().getConfig("config").getGroupDefaultColor())) + { + throw std::runtime_error{ _("Unable to login to the account. The provided password may be invalid.") }; + } + } + + const std::filesystem::path& AccountViewController::getPath() const + { + return m_account->getPath(); + } + + const AccountMetadata& AccountViewController::getMetadata() const + { + return m_account->getMetadata(); + } + + Event>& AccountViewController::accountNameChanged() + { + return m_accountNameChanged; + } + + std::shared_ptr AccountViewController::createAccountSettingsDialogController() const + { + return std::make_shared(m_account); + } + + RecentAccount AccountViewController::toRecentAccount() const + { + RecentAccount recent{ m_account->getPath() }; + recent.setName(m_account->getMetadata().getName()); + recent.setType(m_account->getMetadata().getType()); + return recent; + } + + std::string AccountViewController::getTotalAmountString() const + { + return CurrencyHelpers::toAmountString(m_account->getTotal(), m_account->getCurrency()); + } + + std::string AccountViewController::getIncomeAmountString() const + { + return CurrencyHelpers::toAmountString(m_account->getIncome(), m_account->getCurrency()); + } + + std::string AccountViewController::getExpenseAmountString() const + { + return CurrencyHelpers::toAmountString(m_account->getExpense(), m_account->getCurrency()); + } + + std::vector AccountViewController::getTransactionReminders() const + { + return m_account->getTransactionReminders(); + } + + std::vector> AccountViewController::getGroups() const + { + std::vector> groups; + for(const std::pair& pair : m_account->getGroups()) + { + groups.push_back({ pair.second, CurrencyHelpers::toAmountString(pair.second.getBalance(), m_account->getCurrency()) }); + } + std::sort(groups.begin(), groups.end(), [](const std::pair& a, const std::pair& b) + { + if(a.first.getId() == -1) + { + return true; + } + if(b.first.getId() == -1) + { + return false; + } + return a.first < b.first; + }); + return groups; + } + + +} diff --git a/libdenaro/src/controllers/dashboardviewcontroller.cpp b/libdenaro/src/controllers/dashboardviewcontroller.cpp new file mode 100644 index 000000000..88ed6497d --- /dev/null +++ b/libdenaro/src/controllers/dashboardviewcontroller.cpp @@ -0,0 +1,10 @@ +#include "controllers/dashboardviewcontroller.h" + +namespace Nickvision::Money::Shared::Controllers +{ + DashboardViewController::DashboardViewController(const std::vector>& accountViewControllers) + : m_accountViewControllers{ accountViewControllers } + { + + } +} \ No newline at end of file diff --git a/libdenaro/src/controllers/mainwindowcontroller.cpp b/libdenaro/src/controllers/mainwindowcontroller.cpp new file mode 100644 index 000000000..3292b64fa --- /dev/null +++ b/libdenaro/src/controllers/mainwindowcontroller.cpp @@ -0,0 +1,402 @@ +#include "controllers/mainwindowcontroller.h" +#include +#include +#include +#include +#include +#include +#include +#include "models/account.h" +#include "models/configuration.h" +#ifdef _WIN32 +#include +#endif + +using namespace Nickvision::Money::Shared::Models; +using namespace Nickvision::App; +using namespace Nickvision::Events; +using namespace Nickvision::Notifications; +using namespace Nickvision::Update; + +namespace Nickvision::Money::Shared::Controllers +{ + MainWindowController::MainWindowController() + : m_started{ false } + { +#ifdef DEBUG + Aura::getActive().init("org.nickvision.money", "Nickvision Denaro", "Denaro", Logging::LogLevel::Debug); +#else + Aura::getActive().init("org.nickvision.money", "Nickvision Denaro", "Denaro", Logging::LogLevel::Info); +#endif + AppInfo& appInfo{ Aura::getActive().getAppInfo() }; + appInfo.setVersion({ "2024.5.0-next" }); + appInfo.setShortName(_("Denaro")); + appInfo.setDescription(_("Manage your personal finances")); + appInfo.setSourceRepo("https://github.com/NickvisionApps/Denaro"); + appInfo.setIssueTracker("https://github.com/NickvisionApps/Denaro/issues/new"); + appInfo.setSupportUrl("https://github.com/NickvisionApps/Denaro/discussions"); + appInfo.getExtraLinks()[_("Matrix Chat")] = "https://matrix.to/#/#nickvision:matrix.org"; + appInfo.getDevelopers()["Nicholas Logozzo"] = "https://github.com/nlogozzo"; + appInfo.getDevelopers()[_("Contributors on GitHub")] = "https://github.com/NickvisionApps/Denaro/graphs/contributors"; + appInfo.getDesigners()["Nicholas Logozzo"] = "https://github.com/nlogozzo"; + appInfo.getDesigners()[_("Fyodor Sobolev")] = "https://github.com/fsobolev"; + appInfo.getDesigners()["DaPigGuy"] = "https://github.com/DaPigGuy"; + appInfo.getDesigners()["JoseBritto"] = "https://github.com/JoseBritto"; + appInfo.getArtists()[_("David Lapshin")] = "https://github.com/daudix"; + appInfo.getArtists()["Tobias Bernard"] = "https://github.com/bertob"; + appInfo.setTranslatorCredits(_("translator-credits")); + } + + AppInfo& MainWindowController::getAppInfo() const + { + return Aura::getActive().getAppInfo(); + } + + bool MainWindowController::isDevVersion() const + { + return Aura::getActive().getAppInfo().getVersion().getVersionType() == VersionType::Preview; + } + + Theme MainWindowController::getTheme() const + { + return Aura::getActive().getConfig("config").getTheme(); + } + + Event& MainWindowController::configurationSaved() + { + return Aura::getActive().getConfig("config").saved(); + } + + Event& MainWindowController::notificationSent() + { + return m_notificationSent; + } + + Event& MainWindowController::shellNotificationSent() + { + return m_shellNotificationSent; + } + + Event>>& MainWindowController::recentAccountsChanged() + { + return m_recentAccountsChanged; + } + + Event&>>& MainWindowController::accountAdded() + { + return m_accountAdded; + } + + std::string MainWindowController::getDebugInformation(const std::string& extraInformation) const + { + std::stringstream builder; + //App ID and Ver + builder << Aura::getActive().getAppInfo().getId(); +#ifdef _WIN32 + builder << ".winui" << std::endl; +#elif defined(__linux__) + builder << ".gnome" << std::endl; +#endif + builder << Aura::getActive().getAppInfo().getVersion().toString() << std::endl << std::endl; + //System Information + if(Aura::getActive().isRunningViaFlatpak()) + { + builder << "Running under Flatpak" << std::endl; + } + else if(Aura::getActive().isRunningViaSnap()) + { + builder << "Running under Snap" << std::endl; + } + else + { + builder << "Running locally" << std::endl; + } +#ifdef _WIN32 + LCID lcid = GetThreadLocale(); + wchar_t name[LOCALE_NAME_MAX_LENGTH]; + if(LCIDToLocaleName(lcid, name, LOCALE_NAME_MAX_LENGTH, 0) > 0) + { + builder << StringHelpers::toString(name) << std::endl; + } +#elif defined(__linux__) + try + { + builder << std::locale("").name() << std::endl; + } + catch(...) + { + builder << "Locale not set" << std::endl; + } +#endif + //Gnuplot + builder << std::endl << Aura::getActive().sysExec("gnuplot --version"); + //Extra Information + if (!extraInformation.empty()) + { + builder << std::endl << extraInformation << std::endl; + } + return builder.str(); + } + + std::string MainWindowController::getGreeting() const + { + std::time_t now{ std::time(nullptr) }; + std::tm* cal{ std::localtime(&now) }; + if (cal->tm_hour >= 0 && cal->tm_hour < 6) + { + return _p("Night", "Good Morning!"); + } + else if (cal->tm_hour < 12) + { + return _p("Morning", "Good Morning!"); + } + else if (cal->tm_hour < 18) + { + return _("Good Afternoon!"); + } + else if (cal->tm_hour < 24) + { + return _("Good Evening!"); + } + return _("Good Day!"); + } + + std::shared_ptr MainWindowController::createPreferencesViewController() const + { + return std::make_shared(); + } + + std::shared_ptr MainWindowController::createNewAccountDialogController() const + { + return std::make_shared(); + } + + std::shared_ptr MainWindowController::createDashboardViewController() const + { + std::vector> openAccounts; + for(const std::pair>& pair : m_accountViewControllers) + { + openAccounts.push_back(pair.second); + } + return std::make_shared(openAccounts); + } + + const std::shared_ptr& MainWindowController::getAccountViewController(const std::filesystem::path& path) const + { + return m_accountViewControllers.at(path); + } + + void MainWindowController::startup() + { + if (!m_started) + { +#ifdef _WIN32 + try + { + m_updater = std::make_shared(Aura::getActive().getAppInfo().getSourceRepo()); + } + catch(...) + { + m_updater = nullptr; + } + if (Aura::getActive().getConfig("config").getAutomaticallyCheckForUpdates()) + { + checkForUpdates(); + } +#endif + m_recentAccountsChanged.invoke({ Aura::getActive().getConfig("config").getRecentAccounts() }); + m_started = true; + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "MainWindow started."); + } + } + + void MainWindowController::checkForUpdates() + { + if(m_updater) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Checking for updates..."); + std::thread worker{ [&]() + { + Version latest{ m_updater->fetchCurrentStableVersion() }; + if (!latest.empty()) + { + if (latest > Aura::getActive().getAppInfo().getVersion()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Update found: " + latest.toString()); + m_notificationSent.invoke({ _("New update available"), NotificationSeverity::Success, "update" }); + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "No updates found."); + } + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Warning, "Unable to fetch latest app version."); + } + } }; + worker.detach(); + } + } + +#ifdef _WIN32 + void MainWindowController::windowsUpdate() + { + if(m_updater) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Fetching Windows app update..."); + std::thread worker{ [&]() + { + bool res{ m_updater->windowsUpdate(VersionType::Stable) }; + if (!res) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Unbale to fetch Windows app update."); + m_notificationSent.invoke({ _("Unable to download and install update"), NotificationSeverity::Error, "error" }); + } + } }; + worker.detach(); + } + } + + void MainWindowController::connectTaskbar(HWND hwnd) + { + if(m_taskbar.connect(hwnd)) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Connected to Windows taskbar."); + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Unable to connect to Windows taskbar."); + } + } +#elif defined(__linux__) + void MainWindowController::connectTaskbar(const std::string& desktopFile) + { + if(m_taskbar.connect(desktopFile)) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Connected to Linux taskbar."); + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Unable to connect to Linux taskbar."); + } + } +#endif + + bool MainWindowController::isAccountPasswordProtected(const std::filesystem::path& path) const + { + if(StringHelpers::toLower(path.extension().string()) != ".nmoney") + { + return false; + } + Account a{ path }; + return a.isEncrypted(); + } + + bool MainWindowController::hasOpenAccounts() const + { + return !m_accountViewControllers.empty(); + } + + void MainWindowController::newAccount(const std::shared_ptr& newAccountDialogController) + { + if(std::filesystem::exists(newAccountDialogController->getFilePath())) + { + //Check if overwrite is allowed + if(!newAccountDialogController->getOverwriteExisting()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Account exists and overwrite is disabled. (" + newAccountDialogController->getFilePath().string() + ")"); + m_notificationSent.invoke({ _("This account already exists."), NotificationSeverity::Error }); + return; + } + //Check if the account is open in the app (cannot delete if open) + if(m_accountViewControllers.contains(newAccountDialogController->getFilePath())) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Cannot overwrite. Account is opened. (" + newAccountDialogController->getFilePath().string() + ")"); + m_notificationSent.invoke({ _("This account cannot be overwritten."), NotificationSeverity::Error }); + return; + } + Aura::getActive().getLogger().log(Logging::LogLevel::Warning, "Overwriting existing account file. (" + newAccountDialogController->getFilePath().string() + ")"); + std::filesystem::remove(newAccountDialogController->getFilePath()); + } + Configuration& config{ Aura::getActive().getConfig("config") }; + //Create the new account + std::unique_ptr account{ std::make_unique(newAccountDialogController->getFilePath()) }; + account->login(""); + account->setMetadata(newAccountDialogController->getMetadata()); + account->importFromFile(newAccountDialogController->getImportFile(), config.getTransactionDefaultColor(), config.getGroupDefaultColor()); + account->changePassword(newAccountDialogController->getPassword()); + account.reset(); + //Create the controller and open the account + std::shared_ptr controller{ nullptr }; + try + { + controller = std::make_shared(newAccountDialogController->getFilePath(), newAccountDialogController->getPassword()); + } + catch(const std::exception& e) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, std::string(e.what()) + ". (" + newAccountDialogController->getFilePath().string() + ")"); + m_notificationSent.invoke({ e.what(), NotificationSeverity::Error }); + } + if(controller) + { + m_accountViewControllers[newAccountDialogController->getFilePath()] = controller; + config.addRecentAccount(controller->toRecentAccount()); + config.save(); + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Config saved."); + m_recentAccountsChanged.invoke({ config.getRecentAccounts() }); + m_accountAdded.invoke({ m_accountViewControllers[newAccountDialogController->getFilePath()] }); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Account created. (" + newAccountDialogController->getFilePath().string() + ")"); + } + } + + void MainWindowController::openAccount(std::filesystem::path path, const std::string& password) + { + //Check if the file is a Denaro account file + if(StringHelpers::toLower(path.extension().string()) != ".nmoney") + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Invalid file extension. (" + path.string() + ")"); + m_notificationSent.invoke({ _("The file is not a Denaro account file."), NotificationSeverity::Error }); + } + //Check if the account is already open + else if(m_accountViewControllers.contains(path)) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Warning, "Account already open. (" + path.string() + ")"); + m_notificationSent.invoke({ _("The account is already open."), NotificationSeverity::Warning }); + } + //Create the controller and open the account + else + { + std::shared_ptr controller{ nullptr }; + try + { + controller = std::make_shared(path, password); + } + catch(const std::exception& e) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, std::string(e.what()) + ". (" + path.string() + ")"); + m_notificationSent.invoke({ e.what(), NotificationSeverity::Error }); + } + if(controller) + { + m_accountViewControllers[path] = controller; + Configuration& config{ Aura::getActive().getConfig("config") }; + config.addRecentAccount(controller->toRecentAccount()); + config.save(); + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Config saved."); + m_recentAccountsChanged.invoke({ config.getRecentAccounts() }); + m_accountAdded.invoke({ m_accountViewControllers[path] }); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Account opened. (" + path.string() + ")"); + } + } + } + + void MainWindowController::removeRecentAccount(const RecentAccount& account) + { + Configuration& config{ Aura::getActive().getConfig("config") }; + config.removeRecentAccount(account); + config.save(); + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Config saved."); + m_recentAccountsChanged.invoke({ config.getRecentAccounts() }); + } +} diff --git a/libdenaro/src/controllers/newaccountdialogcontroller.cpp b/libdenaro/src/controllers/newaccountdialogcontroller.cpp new file mode 100644 index 000000000..4cfdbe794 --- /dev/null +++ b/libdenaro/src/controllers/newaccountdialogcontroller.cpp @@ -0,0 +1,137 @@ +#include "controllers/newaccountdialogcontroller.h" +#include +#include +#include "helpers/currencyhelpers.h" + +using namespace Nickvision::Filesystem; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::Shared::Controllers +{ + NewAccountDialogController::NewAccountDialogController() + : m_path{ UserDirectories::getDocuments() / "New.nmoney"}, + m_metadata{ "", AccountType::Checking }, + m_overwriteExisting{ false } + { + + } + + const std::filesystem::path& NewAccountDialogController::getFilePath() const + { + return m_path; + } + + const AccountMetadata& NewAccountDialogController::getMetadata() const + { + return m_metadata; + } + + std::string NewAccountDialogController::getReportedCurrencyString() const + { + std::string reportedCurrency{ _("Your system reported that your currency is") }; +#ifdef _WIN32 + reportedCurrency += CurrencyHelpers::getSystemCurrency().toString(); +#elif defined(__linux__) + reportedCurrency += "\n" + CurrencyHelpers::getSystemCurrency().toString() + ""; +#endif + return reportedCurrency; + } + + std::filesystem::path NewAccountDialogController::getFolder() const + { + return m_path.parent_path(); + } + + bool NewAccountDialogController::setFolder(const std::filesystem::path& folder) + { + if(folder.empty() || (std::filesystem::exists(folder / m_path.filename()) && !m_overwriteExisting)) + { + return false; + } + m_path = folder / m_path.filename(); + return true; + } + + bool NewAccountDialogController::setName(const std::string& name) + { + if(name.empty() || (std::filesystem::exists(m_path.stem() / (name + ".nmoney")) && !m_overwriteExisting)) + { + return false; + } + m_metadata.setName(name); + m_path.replace_filename(name + ".nmoney"); + return true; + } + + const std::string& NewAccountDialogController::getPassword() const + { + return m_password; + } + + void NewAccountDialogController::setPassword(const std::string& password) + { + m_password = password; + } + + bool NewAccountDialogController::getOverwriteExisting() const + { + return m_overwriteExisting; + } + + void NewAccountDialogController::setOverwriteExisting(bool overwriteExisting) + { + m_overwriteExisting = overwriteExisting; + } + + void NewAccountDialogController::setAccountType(AccountType accountType) + { + m_metadata.setType(accountType); + } + + void NewAccountDialogController::setDefaultTransactionType(TransactionType defaultTransactionType) + { + m_metadata.setDefaultTransactionType(defaultTransactionType); + } + + void NewAccountDialogController::setTransactionRemindersThreshold(RemindersThreshold transactionReminderThreshold) + { + m_metadata.setTransactionRemindersThreshold(transactionReminderThreshold); + } + + void NewAccountDialogController::setCustomCurrencyOff() + { + m_metadata.setUseCustomCurrency(false); + m_metadata.setCustomCurrency({}); + } + + CurrencyCheckStatus NewAccountDialogController::setCustomCurrency(const std::string& symbol, const std::string& code, char decimalSeparator, char groupSeparator, int decimalDigits, AmountStyle amountStyle) + { + Currency currency{ symbol, code }; + currency.setDecimalSeparator(decimalSeparator); + currency.setGroupSeparator(groupSeparator); + currency.setDecimalDigits(decimalDigits); + currency.setAmountStyle(amountStyle); + CurrencyCheckStatus status{ currency.validate() }; + if(status == CurrencyCheckStatus::Valid) + { + m_metadata.setUseCustomCurrency(true); + m_metadata.setCustomCurrency(currency); + } + return status; + } + + const std::filesystem::path& NewAccountDialogController::getImportFile() const + { + return m_importFile; + } + + bool NewAccountDialogController::setImportFile(const std::filesystem::path& importFile) + { + if(std::filesystem::exists(importFile)) + { + m_importFile = importFile; + return true; + } + return false; + } +} diff --git a/libdenaro/src/controllers/preferencesviewcontroller.cpp b/libdenaro/src/controllers/preferencesviewcontroller.cpp new file mode 100644 index 000000000..c7497b644 --- /dev/null +++ b/libdenaro/src/controllers/preferencesviewcontroller.cpp @@ -0,0 +1,80 @@ +#include "controllers/preferencesviewcontroller.h" +#include +#include "models/configuration.h" + +using namespace Nickvision::Money::Shared::Models; +using namespace Nickvision::App; + +namespace Nickvision::Money::Shared::Controllers +{ + const std::string& PreferencesViewController::getId() const + { + return Aura::getActive().getAppInfo().getId(); + } + + Theme PreferencesViewController::getTheme() const + { + return Aura::getActive().getConfig("config").getTheme(); + } + + void PreferencesViewController::setTheme(Theme theme) + { + Aura::getActive().getConfig("config").setTheme(theme); + } + + bool PreferencesViewController::getAutomaticallyCheckForUpdates() const + { + return Aura::getActive().getConfig("config").getAutomaticallyCheckForUpdates(); + } + + void PreferencesViewController::setAutomaticallyCheckForUpdates(bool check) + { + Aura::getActive().getConfig("config").setAutomaticallyCheckForUpdates(check); + } + + Color PreferencesViewController::getTransactionDefaultColor() const + { + return Aura::getActive().getConfig("config").getTransactionDefaultColor(); + } + + void PreferencesViewController::setTransactionDefaultColor(const Color& color) + { + Aura::getActive().getConfig("config").setTransactionDefaultColor(color); + } + + Color PreferencesViewController::getTransferDefaultColor() const + { + return Aura::getActive().getConfig("config").getTransferDefaultColor(); + } + + void PreferencesViewController::setTransferDefaultColor(const Color& color) + { + Aura::getActive().getConfig("config").setTransferDefaultColor(color); + } + + Color PreferencesViewController::getGroupDefaultColor() const + { + return Aura::getActive().getConfig("config").getGroupDefaultColor(); + } + + void PreferencesViewController::setGroupDefaultColor(const Color& color) + { + Aura::getActive().getConfig("config").setGroupDefaultColor(color); + } + + InsertSeparatorTrigger PreferencesViewController::getInsertSeparator() const + { + return Aura::getActive().getConfig("config").getInsertSeparator(); + } + + void PreferencesViewController::setInsertSeparator(InsertSeparatorTrigger trigger) + { + Aura::getActive().getConfig("config").setInsertSeparator(trigger); + } + + void PreferencesViewController::saveConfiguration() + { + Aura::getActive().getConfig("config").save(); + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Config saved."); + } +} diff --git a/libdenaro/src/helpers/currencyhelpers.cpp b/libdenaro/src/helpers/currencyhelpers.cpp new file mode 100644 index 000000000..f280d328f --- /dev/null +++ b/libdenaro/src/helpers/currencyhelpers.cpp @@ -0,0 +1,142 @@ +#include "helpers/currencyhelpers.h" +#include +#include +#include +#include +#include +#include + +using namespace Nickvision; +using namespace Nickvision::Money::Shared::Models; + +class NumberFormat : public std::numpunct +{ +public: + NumberFormat(const Currency& currency) + : m_currency{ currency } + { + + } + + char do_decimal_point() const override + { + return m_currency.getDecimalSeparator(); + } + + char do_thousands_sep() const override + { + return m_currency.getGroupSeparator(); + } + + std::string do_grouping() const override + { + return "\003"; + } + +private: + Currency m_currency; +}; + +namespace Nickvision::Money::Shared +{ + const Currency& CurrencyHelpers::getSystemCurrency() + { + static std::unique_ptr systemCurrency{ nullptr }; + if(!systemCurrency) + { + systemCurrency = std::make_unique(); + std::locale locale; + try + { + locale = std::locale(""); + } + catch (...) + { + App::Aura::getActive().getLogger().log(Logging::LogLevel::Warning, "Unknown system locale. Reverting to USD currency."); + systemCurrency->setCode("USD"); + systemCurrency->setSymbol("$"); + return *systemCurrency; + } + systemCurrency->setSymbol(std::use_facet>(locale).curr_symbol()); + systemCurrency->setCode(std::use_facet>(locale).curr_symbol()); + systemCurrency->setDecimalSeparator(std::use_facet>(locale).decimal_point()); + systemCurrency->setGroupSeparator(std::use_facet>(locale).thousands_sep()); + int numberIndex{ -1 }; + int signIndex{ -1 }; + int spaceIndex{ -1 }; + for(int i = 0; i < 4; i++) + { + if(std::use_facet>(locale).pos_format().field[i] == std::moneypunct::value) + { + numberIndex = i; + } + if(std::use_facet>(locale).pos_format().field[i] == std::moneypunct::sign) + { + signIndex = i; + } + if(std::use_facet>(locale).pos_format().field[i] == std::moneypunct::space) + { + spaceIndex = i; + } + } + if(signIndex < numberIndex) + { + systemCurrency->setAmountStyle(spaceIndex == -1 ? AmountStyle::SymbolNumber : AmountStyle::SymbolSpaceNumber); + } + else + { + systemCurrency->setAmountStyle(spaceIndex == -1 ? AmountStyle::NumberSymbol : AmountStyle::NumberSpaceSymbol); + } + } + return *systemCurrency; + } + + std::string CurrencyHelpers::toAmountString(double amount, const Currency& currency, bool showCurrencySymbol, bool overwriteDecimal) + { + std::stringstream builder; + builder.imbue({ builder.getloc(), new NumberFormat(currency) }); + builder << std::fixed; + if(!overwriteDecimal) + { + builder << std::setprecision(currency.getDecimalDigits()); + } + if(showCurrencySymbol) + { + if(currency.getAmountStyle() == AmountStyle::SymbolNumber) + { + builder << (amount < 0 ? "\u2212" : "") << currency.getSymbol(); + } + else if(currency.getAmountStyle() == AmountStyle::SymbolSpaceNumber) + { + builder << (amount < 0 ? "\u2212" : "") << currency.getSymbol() << " "; + } + } + builder << (amount < 0 ? amount * -1 : amount); + if(showCurrencySymbol) + { + if(currency.getAmountStyle() == AmountStyle::NumberSymbol) + { + builder << currency.getSymbol() << (amount < 0 ? "\u2212" : ""); + } + else if(currency.getAmountStyle() == AmountStyle::NumberSpaceSymbol) + { + builder << " " << currency.getSymbol() << (amount < 0 ? "\u2212" : ""); + } + } + return builder.str(); + } + + double CurrencyHelpers::toAmount(std::string amount, const Currency& currency) + { + if(amount.find(currency.getSymbol()) != std::string::npos) + { + amount = StringHelpers::replace(amount, currency.getSymbol(), ""); + } + std::stringstream builder; + builder.imbue({ builder.getloc(), new NumberFormat(currency) }); + builder << amount; + double result{ 0 }; + builder >> result; + return result; + } +} \ No newline at end of file diff --git a/libdenaro/src/helpers/datehelpers.cpp b/libdenaro/src/helpers/datehelpers.cpp new file mode 100644 index 000000000..6ef5b8dad --- /dev/null +++ b/libdenaro/src/helpers/datehelpers.cpp @@ -0,0 +1,59 @@ +#include "helpers/datehelpers.h" +#include +#include +#include + +namespace Nickvision::Money::Shared +{ + boost::gregorian::date DateHelpers::fromUSDateString(const std::string& date) + { + std::vector splits { StringHelpers::split(date, "/") }; + if(splits.size() != 3) + { + return {}; + } + return { static_cast(std::stoul(splits[2])), static_cast(std::stoul(splits[0])), static_cast(std::stoul(splits[1])) }; + } + + std::string DateHelpers::toUSDateString(const boost::gregorian::date& date, bool pad) + { + if(date.is_not_a_date()) + { + return ""; + } + std::stringstream builder; + if(pad) + { + builder << std::setfill('0') << std::setw(2); + } + builder << date.month().as_number() << "/"; + if(pad) + { + builder << std::setfill('0') << std::setw(2); + } + builder << date.day() << "/"; + if(pad) + { + builder << std::setfill('0') << std::setw(4); + } + builder << date.year(); + return builder.str(); + } + + std::string DateHelpers::toIsoDateString(const std::string& date) + { + if(!date.empty()) + { + std::vector splits { StringHelpers::split(date, "/") }; + if(splits.size() == 3) + { + std::stringstream builder; + builder << std::setfill('0') << std::setw(4) << splits[2]; + builder << std::setfill('0') << std::setw(2) << splits[0]; + builder << std::setfill('0') << std::setw(2) << splits[1]; + return builder.str(); + } + } + return "00000000"; + } +} \ No newline at end of file diff --git a/libdenaro/src/models/account.cpp b/libdenaro/src/models/account.cpp new file mode 100644 index 000000000..619baf4ee --- /dev/null +++ b/libdenaro/src/models/account.cpp @@ -0,0 +1,903 @@ +#include "models/account.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "helpers/currencyhelpers.h" +#include "helpers/datehelpers.h" +#include "models/currency.h" + +using namespace Nickvision::App; +using namespace Nickvision::Filesystem; + +namespace Nickvision::Money::Shared::Models +{ + Account::Account(std::filesystem::path path) + : m_path{ path.replace_extension(".nmoney") }, + m_loggedIn{ false }, + m_repository{ m_path }, + m_metadata{ m_path.stem().string(), AccountType::Checking } + { + + } + + const std::filesystem::path& Account::getPath() const + { + return m_path; + } + + bool Account::isEncrypted() const + { + return m_repository.isEncrypted(); + } + + bool Account::login(const std::string& password, const Color& defaultGroupColor) + { + if(!m_loggedIn) + { + if(!m_repository.login(password)) + { + return false; + } + //Load metadata into memory + m_metadata = m_repository.getMetadata(); + //Load groups into memory + m_groups = m_repository.getGroups(); + Group ungrouped{ -1 }; + ungrouped.setName(_("Ungrouped")); + ungrouped.setDescription(_("Transactions without a group")); + ungrouped.setColor(defaultGroupColor); + m_groups.emplace(std::make_pair(ungrouped.getId(), ungrouped)); + //Load tags into memory + m_tags = m_repository.getTags(); + //Load transactions into memory + for(const std::pair& pair : m_repository.getTransactions()) + { + m_transactions.emplace(pair); + m_groups.at(pair.second.getGroupId()).updateBalance(pair.second); + } + //Sync repeat transactions + syncRepeatTransactions(); + m_loggedIn = true; + } + return m_loggedIn; + } + + bool Account::changePassword(const std::string& password) + { + return m_repository.changePassword(password); + } + + const AccountMetadata& Account::getMetadata() const + { + return m_metadata; + } + + void Account::setMetadata(const AccountMetadata& metadata) + { + if(!m_loggedIn) + { + return; + } + m_metadata = metadata; + m_repository.setMetadata(m_metadata); + } + + const Currency& Account::getCurrency() const + { + if(m_metadata.getUseCustomCurrency()) + { + return m_metadata.getCustomCurrency(); + } + else + { + return CurrencyHelpers::getSystemCurrency(); + } + } + + const std::unordered_map& Account::getGroups() const + { + return m_groups; + } + + const std::vector& Account::getTags() const + { + return m_tags; + } + + const std::unordered_map& Account::getTransactions() const + { + return m_transactions; + } + + std::vector Account::getTransactionReminders() const + { + if(m_metadata.getTransactionRemindersThreshold() == RemindersThreshold::Never) + { + return {}; + } + std::vector reminders; + //Calculate threshold date + boost::gregorian::date threshold{ boost::gregorian::day_clock::local_day() }; + switch(m_metadata.getTransactionRemindersThreshold()) + { + case RemindersThreshold::OneDayBefore: + threshold += boost::gregorian::days{ 1 }; + break; + case RemindersThreshold::OneWeekBefore: + threshold += boost::gregorian::weeks{ 1 }; + break; + case RemindersThreshold::OneMonthBefore: + threshold += boost::gregorian::months{ 1 }; + break; + case RemindersThreshold::TwoMonthsBefore: + threshold += boost::gregorian::months{ 2 }; + break; + } + //Add reminders for future transactions + for(const Transaction& transaction : m_repository.getFutureTransactions(threshold)) + { + TransactionReminder reminder{ transaction.getDescription(), transaction.getDate() }; + reminder.setAmount(transaction.getAmount(), transaction.getType(), getCurrency()); + reminders.push_back(reminder); + } + return reminders; + } + + int Account::getNextAvailableGroupId() const + { + if(m_groups.empty()) + { + return 1; + } + for(size_t i = 1; i <= m_groups.size(); i++) + { + if(!m_groups.contains(i)) + { + return i; + } + } + return m_groups.size() + 1; + } + + int Account::getNextAvailableTransactionId() const + { + if(m_transactions.empty()) + { + return 1; + } + for(size_t i = 1; i <= m_transactions.size(); i++) + { + if(!m_transactions.contains(i)) + { + return i; + } + } + return m_transactions.size() + 1; + } + + double Account::getIncome(const std::vector& transactionIds) const + { + double income{ 0 }; + for(const std::pair& pair : m_transactions) + { + if(!transactionIds.empty() && std::find(transactionIds.begin(), transactionIds.end(), pair.first) == transactionIds.end()) + { + continue; + } + if(pair.second.getType() == TransactionType::Income) + { + income += pair.second.getAmount(); + } + } + return income; + } + + double Account::getExpense(const std::vector& transactionIds) const + { + double expense{ 0 }; + for(const std::pair& pair : m_transactions) + { + if(!transactionIds.empty() && std::find(transactionIds.begin(), transactionIds.end(), pair.first) == transactionIds.end()) + { + continue; + } + if(pair.second.getType() == TransactionType::Expense) + { + expense += pair.second.getAmount(); + } + } + return expense; + } + + double Account::getTotal(const std::vector& transactionIds) const + { + double total{ 0 }; + for(const std::pair& pair : m_transactions) + { + if(!transactionIds.empty() && std::find(transactionIds.begin(), transactionIds.end(), pair.first) == transactionIds.end()) + { + continue; + } + if(pair.second.getType() == TransactionType::Income) + { + total += pair.second.getAmount(); + } + else if(pair.second.getType() == TransactionType::Expense) + { + total -= pair.second.getAmount(); + } + } + return total; + } + + bool Account::addGroup(const Group& group) + { + if(m_groups.contains(group.getId()) || group.getId() <= 0) + { + return false; + } + //Group names must be unique + if(std::find_if(m_groups.begin(), m_groups.end(), [&group](const std::pair& pair){ return pair.second.getName() == group.getName(); }) != m_groups.end()) + { + return false; + } + if(m_repository.addGroup(group)) + { + m_groups.emplace(std::make_pair(group.getId(), group)); + return true; + } + return false; + } + + bool Account::updateGroup(const Group& group) + { + if(!m_groups.contains(group.getId())) + { + return false; + } + //Group names must be unique + if(std::find_if(m_groups.begin(), m_groups.end(), [&group](const std::pair& pair){ return pair.second.getName() == group.getName(); }) != m_groups.end()) + { + return false; + } + if(m_repository.updateGroup(group)) + { + m_groups.at(group.getId()) = group; + return true; + } + return false; + } + + std::pair> Account::deleteGroup(const Group& group) + { + if(!m_groups.contains(group.getId())) + { + return { false, {} }; + } + if(m_repository.deleteGroup(group)) + { + //Get transactions belonging to the group and remove their association with the group + std::vector belongingTransactions; + for(std::pair& pair : m_transactions) + { + if(pair.second.getGroupId() == group.getId()) + { + belongingTransactions.push_back(pair.first); + pair.second.setGroupId(-1); + pair.second.setUseGroupColor(false); + } + } + //Delete group + m_groups.erase(group.getId()); + return { true, belongingTransactions }; + } + return { false, {} }; + } + + bool Account::addTransaction(const Transaction& transaction) + { + if(m_transactions.contains(transaction.getId()) || transaction.getId() <= 0) + { + return false; + } + if(m_repository.addTransaction(transaction)) + { + for(const std::string& tag : transaction.getTags()) + { + if(std::find(m_tags.begin(), m_tags.end(), tag) == m_tags.end()) + { + m_tags.push_back(tag); + } + } + m_transactions.emplace(std::make_pair(transaction.getId(), transaction)); + m_groups.at(transaction.getGroupId()).updateBalance(transaction); + if(transaction.getRepeatInterval() != TransactionRepeatInterval::Never && transaction.getRepeatFrom() == 0) + { + syncRepeatTransactions(); + } + return true; + } + return false; + } + + bool Account::updateTransaction(const Transaction& transaction, bool updateGenerated) + { + if(!m_transactions.contains(transaction.getId())) + { + return false; + } + if(m_repository.updateTransaction(transaction, updateGenerated)) + { + for(const std::string& tag : transaction.getTags()) + { + if(std::find(m_tags.begin(), m_tags.end(), tag) == m_tags.end()) + { + m_tags.push_back(tag); + } + } + if(m_transactions.at(transaction.getId()).getGroupId() != transaction.getGroupId()) + { + m_groups.at(m_transactions.at(transaction.getId()).getGroupId()).updateBalance(transaction, true); + } + m_transactions.at(transaction.getId()) = transaction; + m_groups.at(transaction.getGroupId()).updateBalance(transaction); + if(transaction.getRepeatFrom() == 0) //source repeat transaction + { + if(updateGenerated) + { + for(std::pair& pair : m_transactions) + { + if(pair.second.getRepeatFrom() == transaction.getId()) + { + pair.second.setDescription(transaction.getDescription()); + pair.second.setType(transaction.getType()); + pair.second.setRepeatInterval(transaction.getRepeatInterval()); + pair.second.setAmount(transaction.getAmount()); + pair.second.setGroupId(transaction.getGroupId()); + pair.second.setColor(transaction.getColor()); + pair.second.setReceipt(transaction.getReceipt()); + pair.second.setRepeatEndDate(transaction.getRepeatEndDate()); + pair.second.setUseGroupColor(transaction.getUseGroupColor()); + pair.second.setNotes(transaction.getNotes()); + pair.second.setTags(transaction.getTags()); + } + } + } + else + { + for(std::pair& pair : m_transactions) + { + if(pair.second.getRepeatFrom() == transaction.getId()) + { + pair.second.setRepeatInterval(TransactionRepeatInterval::Never); + pair.second.setRepeatFrom(-1); + pair.second.setRepeatEndDate({}); + } + } + } + syncRepeatTransactions(); + } + return true; + } + return false; + } + + bool Account::deleteTransaction(const Transaction& transaction, bool deleteGenerated) + { + if(!m_transactions.contains(transaction.getId())) + { + return false; + } + if(m_repository.deleteTransaction(transaction, deleteGenerated)) + { + m_groups.at(transaction.getGroupId()).updateBalance(transaction, true); + if(transaction.getRepeatFrom() == 0) //source repeat transaction + { + if(deleteGenerated) + { + for (std::unordered_map::iterator it = m_transactions.begin(); it != m_transactions.end();) + { + if(it->second.getRepeatFrom() == transaction.getId()) + { + it = m_transactions.erase(it); + m_groups.at(it->second.getGroupId()).updateBalance(it->second, true); + } + else + { + it++; + } + } + } + else + { + for(std::pair& pair : m_transactions) + { + if(pair.second.getRepeatFrom() == transaction.getId()) + { + pair.second.setRepeatInterval(TransactionRepeatInterval::Never); + pair.second.setRepeatFrom(-1); + pair.second.setRepeatEndDate({}); + } + } + } + } + return true; + } + return false; + } + + bool Account::deleteGeneratedTransactions(int sourceId) + { + if(m_repository.deleteGeneratedTransactions(sourceId)) + { + for (std::unordered_map::iterator it = m_transactions.begin(); it != m_transactions.end();) + { + if(it->second.getRepeatFrom() == sourceId) + { + it = m_transactions.erase(it); + m_groups.at(it->second.getGroupId()).updateBalance(it->second, true); + } + else + { + it++; + } + } + return true; + } + return false; + } + + bool Account::syncRepeatTransactions() + { + m_repository.beginTransaction(); + //TODO + //Delete repeat transactions if the date from the original transaction was changed to a smaller date + /** + SqlStatement deleteExtra{ m_database.createStatement("DELETE FROM transactions WHERE repeatFrom > 0 AND (SELECT fixDate(date) FROM transactions WHERE id = repeatFrom) < fixDate(date)") }; + if(!deleteExtra.step()) + { + for (std::unordered_map::iterator it = m_transactions.begin(); it != m_transactions.end();) + { + if(it->second.getRepeatFrom() > 0) + { + if(it->second.getDate() < m_transactions.at(it->second.getRepeatFrom()).getDate()) + { + m_transactions.erase(it->first); + continue; + } + } + it++; + } + } + */ + m_repository.commitTransaction(); + return true; + } + + std::optional Account::sendTransfer(const Transfer& transfer, const Color& color) + { + if(!m_loggedIn || transfer.getSourceAccountPath() != m_path) + { + return std::nullopt; + } + Account accountToSend{ transfer.getDestinationAccountPath() }; + if(accountToSend.login(transfer.getDestinationAccountPassword())) + { + accountToSend.receiveTransfer(transfer, color); + Transaction expense{ getNextAvailableTransactionId() }; + expense.setDescription(std::vformat(_("Transfer to {}"), std::make_format_args(accountToSend.getMetadata().getName()))); + expense.setType(TransactionType::Expense); + expense.setAmount(transfer.getSourceAmount()); + expense.setColor(color); + addTransaction(expense); + return expense; + } + return std::nullopt; + } + + std::optional Account::receiveTransfer(const Transfer& transfer, const Color& color) + { + if(!m_loggedIn) + { + return std::nullopt; + } + Transaction income{ getNextAvailableTransactionId() }; + income.setDescription(std::vformat(_("Transfer from {}"), std::make_format_args(transfer.getSourceAccountName()))); + income.setType(TransactionType::Income); + income.setAmount(transfer.getDestinationAmount()); + income.setColor(color); + addTransaction(income); + return income; + } + + ImportResult Account::importFromFile(const std::filesystem::path& path, const Color& defaultTransactionColor, const Color& defaultGroupColor) + { + if(!std::filesystem::exists(path)) + { + return {}; + } + std::string extension{ StringHelpers::toLower(path.extension().string()) }; + if(extension == ".csv") + { + return importFromCSV(path, defaultTransactionColor, defaultGroupColor); + } + else if(extension == ".ofx" || extension == ".ofc") + { + return importFromOFX(path, defaultTransactionColor); + } + else if(extension == ".qif") + { + return importFromQIF(path, defaultTransactionColor, defaultGroupColor); + } + return {}; + } + + bool Account::exportToCSV(const std::filesystem::path& path, const std::vector& filteredIds) const + { + /** + * CSV Header: + * ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA + */ + rapidcsv::Document csv{ {}, rapidcsv::LabelParams(), rapidcsv::SeparatorParams(';'), rapidcsv::ConverterParams(true) }; + csv.SetColumnName(0, "ID"); + csv.SetColumnName(1, "Date"); + csv.SetColumnName(2, "Description"); + csv.SetColumnName(3, "Type"); + csv.SetColumnName(4, "RepeatInterval"); + csv.SetColumnName(5, "RepeatFrom"); + csv.SetColumnName(6, "RepeatEndDate"); + csv.SetColumnName(7, "Amount"); + csv.SetColumnName(8, "RGBA"); + csv.SetColumnName(9, "UseGroupColor"); + csv.SetColumnName(10, "Group"); + csv.SetColumnName(11, "GroupName"); + csv.SetColumnName(12, "GroupDescription"); + csv.SetColumnName(13, "GroupRGBA"); + for(const std::pair& pair : m_transactions) + { + if(filteredIds.empty() || std::find(filteredIds.begin(), filteredIds.end(), pair.first) != filteredIds.end()) + { + csv.SetCell(0, pair.first, pair.first); + csv.SetCell(1, pair.first, DateHelpers::toUSDateString(pair.second.getDate())); + csv.SetCell(2, pair.first, pair.second.getDescription()); + csv.SetCell(3, pair.first, static_cast(pair.second.getType())); + csv.SetCell(4, pair.first, static_cast(pair.second.getRepeatInterval())); + csv.SetCell(5, pair.first, pair.second.getRepeatFrom()); + csv.SetCell(6, pair.first, DateHelpers::toUSDateString(pair.second.getRepeatEndDate())); + csv.SetCell(7, pair.first, pair.second.getAmount()); + csv.SetCell(8, pair.first, pair.second.getColor().toRGBAHexString()); + csv.SetCell(9, pair.first, pair.second.getUseGroupColor()); + if(pair.second.getGroupId() != -1) + { + const Group& group{ m_groups.at(pair.second.getGroupId()) }; + csv.SetCell(10, pair.first, group.getId()); + csv.SetCell(11, pair.first, group.getName()); + csv.SetCell(12, pair.first, group.getDescription()); + csv.SetCell(13, pair.first, group.getColor().toRGBAHexString()); + } + } + } + csv.Save(path.string()); + return true; + } + + bool Account::exportToPDF(const std::filesystem::path& path, const std::string& password, const std::vector& filteredIds) const + { + //TODO: Implement + return false; + } + + std::vector Account::generateGraph(GraphType type, bool darkMode, const std::vector& filteredIds, int width, int height) const + { + std::string tempPath{ StringHelpers::replace((UserDirectories::getApplicationCache() / "TEMP_DENARO_GRAPH.png").string(), "\\", "/") }; //gnuplot accepts paths with only / as separator + //Render graph + if(type == GraphType::IncomeExpensePie) + { + //TODO Implement + } + else if(type == GraphType::IncomeExpensePerGroup) + { + //TODO: Implement + } + else if(type == GraphType::IncomeExpenseOverTime) + { + //TODO: Implement + } + else if(type == GraphType::IncomeByGroup) + { + //TODO: Implement + } + else if(type == GraphType::ExpenseByGroup) + { + //TODO: Implement + } + //Get graph bytes + std::ifstream in{ tempPath, std::ios_base::binary }; + std::vector bytes{ std::istreambuf_iterator(in), std::istreambuf_iterator() }; + in.close(); + std::filesystem::remove(tempPath); + return bytes; + } + + ImportResult Account::importFromCSV(const std::filesystem::path& path, const Color& defaultTransactionColor, const Color& defaultGroupColor) + { + /** + * CSV Header: + * ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA + */ + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Starting CSV import... (" + m_path.string() + ")"); + rapidcsv::Document csv{ path.string(), rapidcsv::LabelParams(0, -1), rapidcsv::SeparatorParams(';'), rapidcsv::ConverterParams(true), rapidcsv::LineReaderParams(true, '#', true) }; + if(csv.GetColumnCount() != 14) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "CSV import failed. Invalid number of columns. (" + m_path.string() + ")"); + return {}; + } + ImportResult result; + m_repository.beginTransaction(); + for(size_t i = 0; i < csv.GetRowCount(); i++) + { + if(m_transactions.contains(csv.GetCell(0, i))) //Transaction IDs must be unique + { + Aura::getActive().getLogger().log(Logging::LogLevel::Warning, "Skipping row " + std::to_string(i) + ". ID already exists. (" + m_path.string() + ")"); + continue; + } + Transaction t{ csv.GetCell(0, i) }; + t.setDate(DateHelpers::fromUSDateString(csv.GetCell(1, i))); + t.setDescription(csv.GetCell(2, i)); + t.setType(static_cast(csv.GetCell(3, i))); + t.setRepeatInterval(static_cast(csv.GetCell(4, i))); + t.setRepeatFrom(csv.GetCell(5, i)); + t.setRepeatEndDate(DateHelpers::fromUSDateString(csv.GetCell(6, i))); + t.setAmount(csv.GetCell(7, i)); + if(t.getAmount() < 0) + { + t.setAmount(t.getAmount() * -1); + } + t.setColor({ csv.GetCell(8, i) }); + if(!t.getColor()) + { + t.setColor(defaultTransactionColor); + } + t.setUseGroupColor(static_cast(csv.GetCell(9, i))); + t.setGroupId(csv.GetCell(10, i)); + if(t.getGroupId() != -1 && !m_groups.contains(t.getGroupId())) + { + Group g{ t.getGroupId() }; + g.setName(csv.GetCell(11, i)); + if(!g.getName().empty()) //Group names must not be empty + { + g.setDescription(csv.GetCell(12, i)); + g.setColor({ csv.GetCell(13, i) }); + if(!g.getColor()) + { + g.setColor(defaultGroupColor); + } + if(addGroup(g)) + { + result.addGroup(g.getId()); + } + } + } + if(addTransaction(t)) + { + result.addTransaction(t.getId()); + } + } + m_repository.commitTransaction(); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Imported " + std::to_string(result.getNewTransactionIds().size()) + " transaction(s) from CSV. (" + m_path.string() + ")"); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Imported " + std::to_string(result.getNewGroupIds().size()) + " groups(s) from CSV. (" + m_path.string() + ")"); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Imported " + std::to_string(result.getNewTags().size()) + " tags(s) from CSV. (" + m_path.string() + ")"); + return result; + } + + ImportResult Account::importFromOFX(const std::filesystem::path& path, const Color& defaultTransactionColor) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Starting OFX import... (" + m_path.string() + ")"); + ImportResult result; + //Read all lines from ofx file + std::ifstream file{ path }; + std::string ofx; + if(file.is_open()) + { + for(std::string line; std::getline(file, line);) + { + size_t r{ line.find("\r") }; + if(r != std::string::npos) + { + line.erase(r); + } + ofx += line + "\n"; + } + } + //Parse ofx file + if(!ofx.empty()) + { + m_repository.beginTransaction(); + std::regex transactionRegex{ "([\\s\\S]+?)" }; + std::regex transactionInfoRegex{ "<(.+)>(.+)(\\s||$)" }; + //Find all transaction blocks (...) + for(std::sregex_iterator it{ ofx.begin(), ofx.end(), transactionRegex }, end{}; it != end; it++) + { + Transaction transaction{ getNextAvailableTransactionId() }; + bool nameSet{ false }; + bool dateSet{ false }; + std::string info{ it->str(1) }; + bool transactionValid{ true }; + //Populate transaction info + transaction.setColor(defaultTransactionColor); + for(std::sregex_iterator it2{ info.begin(), info.end(), transactionInfoRegex }; it2 != end; it2++) + { + std::string tag{ it2->str(1) }; + std::string content{ it2->str(2) }; + // Name + if(((tag == "NAME") || (tag == "MEMO")) && !nameSet) + { + transaction.setDescription(content); + nameSet = true; + } + // Amount + if(tag == "TRNAMT") + { + try + { + double amount{ std::stod(content) }; + transaction.setAmount(amount < 0 ? amount * -1 : amount); + transaction.setType(amount >= 0 ? TransactionType::Income : TransactionType::Expense); + } + catch(...) + { + transactionValid = false; + break; + } + } + // Date + if((tag == "DTPOSTED" || tag == "DTUSER") && !dateSet) + { + try + { + transaction.setDate(boost::gregorian::from_undelimited_string(content)); + } + catch(...) + { + transactionValid = false; + break; + } + dateSet = true; + } + } + //Add new transaction + if(transactionValid && addTransaction(transaction)) + { + result.addTransaction(transaction.getId()); + } + } + m_repository.commitTransaction(); + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Imported " + std::to_string(result.getNewTransactionIds().size()) + " transaction(s) from OFX. (" + m_path.string() + ")"); + return result; + } + + ImportResult Account::importFromQIF(const std::filesystem::path& path, const Color& defaultTransactionColor, const Color& defaultGroupColor) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Starting QIF import... (" + m_path.string() + ")"); + ImportResult result; + //Parse qif file + std::ifstream file{ path }; + std::unique_ptr transaction{ std::make_unique(getNextAvailableTransactionId()) }; + transaction->setColor(defaultTransactionColor); + if(file.is_open()) + { + bool amountSet{ false }; + bool descriptionSet{ false }; + bool transactionValid{ true }; + m_repository.beginTransaction(); + for(std::string line; std::getline(file, line);) + { + if(line.empty() || line[0] == '!') + { + continue; + } + //Add transaction + if(line[0] == '^') + { + if(amountSet && descriptionSet && transactionValid) + { + if(addTransaction(*transaction)) + { + result.addTransaction(transaction->getId()); + } + } + transaction.reset(); + transaction = std::make_unique(getNextAvailableTransactionId()); + transaction->setColor(defaultTransactionColor); + amountSet = false; + descriptionSet = false; + transactionValid = true; + } + //Date + else if(line[0] == 'D') + { + try + { + transaction->setDate(DateHelpers::fromUSDateString(line.substr(1))); + } + catch(...) + { + transactionValid = false; + break; + } + } + //Amount + else if(line[0] == 'T') + { + try + { + double amount{ std::stod(line.substr(1)) }; + transaction->setAmount(amount < 0 ? amount * -1 : amount); + transaction->setType(amount >= 0 ? TransactionType::Income : TransactionType::Expense); + amountSet = true; + } + catch(...) + { + transactionValid = false; + break; + } + } + //Description + else if((line[0] == 'P' || line[0] == 'M') && !descriptionSet) + { + transaction->setDescription(line.substr(1)); + descriptionSet = true; + } + //Group + else if(line[0] == 'L') + { + std::string name{ line.substr(1) }; + if(name.empty()) + { + continue; + } + if(name[0] == '[' && name[name.size() - 1] == ']') //remove [] if surrounding group name + { + name = name.substr(1, name.size() - 2); + } + Group g{ getNextAvailableGroupId() }; + g.setName(name); + g.setColor(defaultGroupColor); + if(addGroup(g)) + { + result.addGroup(g.getId()); + transaction->setGroupId(g.getId()); + } + else + { + for(const std::pair& pair : m_groups) + { + if(pair.second.getName() == g.getName()) + { + transaction->setGroupId(pair.first); + break; + } + } + } + } + } + m_repository.commitTransaction(); + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Imported " + std::to_string(result.getNewTransactionIds().size()) + " transaction(s) from QIF. (" + m_path.string() + ")"); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Imported " + std::to_string(result.getNewGroupIds().size()) + " groups(s) from QIF. (" + m_path.string() + ")"); + return result; + } + + Account::operator bool() const + { + return m_loggedIn; + } +} diff --git a/libdenaro/src/models/accountmetadata.cpp b/libdenaro/src/models/accountmetadata.cpp new file mode 100644 index 000000000..07127897d --- /dev/null +++ b/libdenaro/src/models/accountmetadata.cpp @@ -0,0 +1,118 @@ +#include "models/accountmetadata.h" + +namespace Nickvision::Money::Shared::Models +{ + AccountMetadata::AccountMetadata(const std::string& name, AccountType type) + : m_name{ name }, + m_type{ type }, + m_useCustomCurrency{ false }, + m_defaultTransactionType{ TransactionType::Income }, + m_transactionRemindersThreshold{ RemindersThreshold::OneDayBefore }, + m_showGroupsList{ true }, + m_showTagsList{ true }, + m_sortTransactionsBy{ SortBy::Date }, + m_sortFirstToLast{ false } + { + + } + + const std::string& AccountMetadata::getName() const + { + return m_name; + } + + void AccountMetadata::setName(const std::string& name) + { + m_name = name; + } + + AccountType AccountMetadata::getType() const + { + return m_type; + } + + void AccountMetadata::setType(AccountType type) + { + m_type = type; + } + + bool AccountMetadata::getUseCustomCurrency() const + { + return m_useCustomCurrency; + } + + void AccountMetadata::setUseCustomCurrency(bool useCustomCurrency) + { + m_useCustomCurrency = useCustomCurrency; + } + + const Currency& AccountMetadata::getCustomCurrency() const + { + return m_customCurrency; + } + + void AccountMetadata::setCustomCurrency(const Currency& customCurrency) + { + m_customCurrency = customCurrency; + } + + TransactionType AccountMetadata::getDefaultTransactionType() const + { + return m_defaultTransactionType; + } + + void AccountMetadata::setDefaultTransactionType(TransactionType defaultTransactionType) + { + m_defaultTransactionType = defaultTransactionType; + } + + RemindersThreshold AccountMetadata::getTransactionRemindersThreshold() const + { + return m_transactionRemindersThreshold; + } + + void AccountMetadata::setTransactionRemindersThreshold(RemindersThreshold remindersThreshold) + { + m_transactionRemindersThreshold = remindersThreshold; + } + + bool AccountMetadata::getShowGroupsList() const + { + return m_showGroupsList; + } + + void AccountMetadata::setShowGroupsList(bool showGroupsList) + { + m_showGroupsList = showGroupsList; + } + + bool AccountMetadata::getShowTagsList() const + { + return m_showTagsList; + } + + void AccountMetadata::setShowTagsList(bool showTagsList) + { + m_showTagsList = showTagsList; + } + + SortBy AccountMetadata::getSortTransactionsBy() const + { + return m_sortTransactionsBy; + } + + void AccountMetadata::setSortTransactionsBy(SortBy sortTransactionsBy) + { + m_sortTransactionsBy = sortTransactionsBy; + } + + bool AccountMetadata::getSortFirstToLast() const + { + return m_sortFirstToLast; + } + + void AccountMetadata::setSortFirstToLast(bool sortFirstToLast) + { + m_sortFirstToLast = sortFirstToLast; + } +} diff --git a/libdenaro/src/models/accountrepository.cpp b/libdenaro/src/models/accountrepository.cpp new file mode 100644 index 000000000..d4e88312b --- /dev/null +++ b/libdenaro/src/models/accountrepository.cpp @@ -0,0 +1,543 @@ +#include "models/accountrepository.h" +#include +#include +#include +#include +#include "helpers/datehelpers.h" + +using namespace Nickvision::App; +using namespace Nickvision::Database; + +namespace Nickvision::Money::Shared::Models +{ + AccountRepository::AccountRepository(const std::filesystem::path& path) + : m_database{ path, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE }, + m_transactionInProcess{ false } + { + + } + + bool AccountRepository::isEncrypted() const + { + return m_database.isEncrypted(); + } + + bool AccountRepository::login(const std::string& password) + { + //Unlock database + if(!m_database.unlock(password)) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Invalid database password (" + m_database.getPath().string() + ")"); + return false; + } + //Register fixdata sql function + m_database.registerFunction("fixdate", [](SqlContext& context) + { + context.result(DateHelpers::toIsoDateString(context.getArgs()[0].getString())); + }, 1); + //Setup metadata table + m_database.exec("CREATE TABLE IF NOT EXISTS metadata (id INTEGER PRIMARY KEY, name TEXT, type INTEGER, useCustomCurrency INTEGER, customSymbol TEXT, customCode TEXT, defaultTransactionType INTEGER, showGroupsList INTEGER, sortFirstToLast INTEGER, sortTransactionsBy INTEGER, customDecimalSeparator TEXT, customGroupSeparator TEXT, customDecimalDigits INTEGER, showTagsList INTEGER, transactionRemindersThreshold INTEGER, customAmountStyle INTEGER)"); + m_database.exec("ALTER TABLE metadata ADD COLUMN IF NOT EXISTS sortTransactionsBy INTEGER, ADD COLUMN IF NOT EXISTS customDecimalSeparator TEXT, ADD COLUMN IF NOT EXISTS customGroupSeparator TEXT, ADD COLUMN IF NOT EXISTS customDecimalDigits INTEGER, ADD COLUMN IF NOT EXISTS showTagsList INTEGER, ADD COLUMN IF NOT EXISTS transactionRemindersThreshold INTEGER, ADD COLUMN IF NOT EXISTS customAmountStyle INTEGER"); + //Setup groups table + m_database.exec("CREATE TABLE IF NOT EXISTS groups (id INTEGER PRIMARY KEY, name TEXT, description TEXT, rgba TEXT)"); + m_database.exec("ALTER TABLE groups ADD COLUMN rgba TEXT"); + //Setup transactions table + m_database.exec("CREATE TABLE IF NOT EXISTS transactions (id INTEGER PRIMARY KEY, date TEXT, description TEXT, type INTEGER, repeat INTEGER, amount TEXT, gid INTEGER, rgba TEXT, receipt TEXT, repeatFrom INTEGER, repeatEndDate TEXT, useGroupColor INTEGER, notes TEXT, tags TEXT)"); + m_database.exec("ALTER TABLE transactions ADD COLUMN IF NOT EXISTS gid INTEGER, ADD COLUMN IF NOT EXISTS rgba TEXT, ADD COLUMN IF NOT EXISTS receipt TEXT, ADD COLUMN IF NOT EXISTS repeatFrom INTEGER, ADD COLUMN IF NOT EXISTS repeatEndDate TEXT, ADD COLUMN IF NOT EXISTS useGroupColor INTEGER, ADD COLUMN IF NOT EXISTS notes TEXT, ADD COLUMN IF NOT EXISTS tags TEXT"); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Connected to database (" + m_database.getPath().string() + ")"); + return true; + } + + bool AccountRepository::changePassword(const std::string& password) + { + if(m_database.changePassword(password)) + { + if(password.empty()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Decrypted database. (" + m_database.getPath().string() + ")"); + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Encrypted database with password. (" + m_database.getPath().string() + ")"); + } + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Unable to change account password. (" + m_database.getPath().string() + ")"); + return false; + } + } + + bool AccountRepository::beginTransaction() + { + if(m_transactionInProcess) + { + return false; + } + if(m_database.exec("BEGIN TRANSACTION")) + { + m_transactionInProcess = true; + } + return m_transactionInProcess; + } + + bool AccountRepository::commitTransaction() + { + if(!m_transactionInProcess) + { + return false; + } + if(m_database.exec("COMMIT")) + { + m_transactionInProcess = false; + } + return !m_transactionInProcess; + } + + AccountMetadata AccountRepository::getMetadata() const + { + AccountMetadata metadata{ "", AccountType::Checking }; + SqlStatement statement{ m_database.createStatement("SELECT * FROM metadata where id = 0") }; + if(statement.step()) + { + metadata.setName(statement.getColumnString(1)); + metadata.setType(static_cast(statement.getColumnInt(2))); + metadata.setUseCustomCurrency(statement.getColumnBool(3)); + Currency curr{ statement.getColumnString(4), statement.getColumnString(5) }; + curr.setDecimalSeparator(statement.getColumnString(10)[0]); + curr.setGroupSeparator(statement.getColumnString(11)[0]); + curr.setDecimalDigits(statement.getColumnInt(12)); + curr.setAmountStyle(static_cast(statement.getColumnInt(15))); + metadata.setCustomCurrency(curr); + metadata.setDefaultTransactionType(static_cast(statement.getColumnInt(6))); + metadata.setTransactionRemindersThreshold(static_cast(statement.getColumnInt(14))); + metadata.setShowGroupsList(statement.getColumnBool(7)); + metadata.setShowTagsList(statement.getColumnBool(13)); + metadata.setSortTransactionsBy(static_cast(statement.getColumnInt(9))); + metadata.setSortFirstToLast(statement.getColumnBool(8)); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Fetched account metadata from database. (" + m_database.getPath().string() + ")"); + } + else + { + SqlStatement newStatement{ m_database.createStatement("INSERT INTO metadata (id, name, type, useCustomCurrency, customSymbol, customCode, defaultTransactionType, showGroupsList, sortFirstToLast, sortTransactionsBy, customDecimalSeparator, customGroupSeparator, customDecimalDigits, showTagsList, transactionRemindersThreshold, customAmountStyle) VALUES (0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") }; + newStatement.bind(1, metadata.getName()); + newStatement.bind(2, static_cast(metadata.getType())); + newStatement.bind(3, metadata.getUseCustomCurrency()); + newStatement.bind(4, metadata.getCustomCurrency().getSymbol()); + newStatement.bind(5, metadata.getCustomCurrency().getCode()); + newStatement.bind(10, std::string(1, metadata.getCustomCurrency().getDecimalSeparator())); + newStatement.bind(11, std::string(1, metadata.getCustomCurrency().getGroupSeparator())); + newStatement.bind(12, metadata.getCustomCurrency().getDecimalDigits()); + newStatement.bind(15, static_cast(metadata.getCustomCurrency().getAmountStyle())); + newStatement.bind(6, static_cast(metadata.getDefaultTransactionType())); + newStatement.bind(14, static_cast(metadata.getTransactionRemindersThreshold())); + newStatement.bind(7, metadata.getShowGroupsList()); + newStatement.bind(13, metadata.getShowTagsList()); + newStatement.bind(9, static_cast(metadata.getSortTransactionsBy())); + newStatement.bind(8, metadata.getSortFirstToLast()); + newStatement.step(); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Created default account metadata in database. (" + m_database.getPath().string() + ")"); + } + return metadata; + } + + void AccountRepository::setMetadata(const AccountMetadata& metadata) + { + SqlStatement statement{ m_database.createStatement("UPDATE metadata SET name = ?, type = ?, useCustomCurrency = ?, customSymbol = ?, customCode = ?, defaultTransactionType = ?, showGroupsList = ?, sortFirstToLast = ?, sortTransactionsBy = ?, customDecimalSeparator = ?, customGroupSeparator = ?, customDecimalDigits = ?, showTagsList = ?, transactionRemindersThreshold = ?, customAmountStyle = ? WHERE id = 0") }; + statement.bind(1, metadata.getName()); + statement.bind(2, static_cast(metadata.getType())); + statement.bind(3, metadata.getUseCustomCurrency()); + statement.bind(4, metadata.getCustomCurrency().getSymbol()); + statement.bind(5, metadata.getCustomCurrency().getCode()); + statement.bind(10, std::string(1, metadata.getCustomCurrency().getDecimalSeparator())); + statement.bind(11, std::string(1, metadata.getCustomCurrency().getGroupSeparator())); + statement.bind(12, metadata.getCustomCurrency().getDecimalDigits()); + statement.bind(15, static_cast(metadata.getCustomCurrency().getAmountStyle())); + statement.bind(6, static_cast(metadata.getDefaultTransactionType())); + statement.bind(14, static_cast(metadata.getTransactionRemindersThreshold())); + statement.bind(7, metadata.getShowGroupsList()); + statement.bind(13, metadata.getShowTagsList()); + statement.bind(9, static_cast(metadata.getSortTransactionsBy())); + statement.bind(8, metadata.getSortFirstToLast()); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Updated account metadata. (" + m_database.getPath().string() + ")"); + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Unable to update account metadata. (" + m_database.getPath().string() + ")"); + } + } + + std::unordered_map AccountRepository::getGroups() const + { + std::unordered_map groups; + SqlStatement groupsStatement{ m_database.createStatement("SELECT * FROM groups") }; + while(groupsStatement.step()) + { + Group g{ groupsStatement.getColumnInt(0) }; + g.setName(groupsStatement.getColumnString(1)); + g.setDescription(groupsStatement.getColumnString(2)); + g.setColor({ groupsStatement.getColumnString(3) }); + groups.emplace(std::make_pair(g.getId(), g)); + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Fetched " + std::to_string(groups.size()) + " group(s) from database. (" + m_database.getPath().string() + ")"); + return groups; + } + + std::vector AccountRepository::getTags() const + { + std::vector tags; + SqlStatement tagsStatement{ m_database.createStatement("SELECT tags FROM transactions") }; + while(tagsStatement.step()) + { + for(const std::string& tag : StringHelpers::split(tagsStatement.getColumnString(0), ",")) + { + if(std::find(tags.begin(), tags.end(), tag) == tags.end()) + { + tags.push_back(tag); + } + } + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Fetched " + std::to_string(tags.size()) + " tag(s) from database. (" + m_database.getPath().string() + ")"); + return tags; + } + + std::unordered_map AccountRepository::getTransactions() const + { + std::unordered_map transactions; + SqlStatement transactionsStatement{ m_database.createStatement("SELECT * FROM transactions") }; + while(transactionsStatement.step()) + { + Transaction t{ transactionsStatement.getColumnInt(0) }; + t.setDate(DateHelpers::fromUSDateString(transactionsStatement.getColumnString(1))); + t.setDescription(transactionsStatement.getColumnString(2)); + t.setType(static_cast(transactionsStatement.getColumnInt(3))); + t.setRepeatInterval(static_cast(transactionsStatement.getColumnInt(4))); + t.setAmount(transactionsStatement.getColumnDouble(5)); + t.setGroupId(transactionsStatement.getColumnInt(6)); + t.setColor({ transactionsStatement.getColumnString(7) }); + t.setReceipt({ transactionsStatement.getColumnString(8) }); + t.setRepeatFrom(transactionsStatement.getColumnInt(9)); + t.setRepeatEndDate(DateHelpers::fromUSDateString(transactionsStatement.getColumnString(10))); + t.setUseGroupColor(transactionsStatement.getColumnBool(11)); + t.setNotes(transactionsStatement.getColumnString(12)); + for(const std::string& tag : StringHelpers::split(transactionsStatement.getColumnString(13), ",")) + { + t.addTag(tag); + } + transactions.emplace(std::make_pair(t.getId(), t)); + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Fetched " + std::to_string(transactions.size()) + " transaction(s) from database. (" + m_database.getPath().string() + ")"); + return transactions; + } + + std::vector AccountRepository::getFutureTransactions(const boost::gregorian::date& max) const + { + std::vector transactions; + boost::gregorian::date today{ boost::gregorian::day_clock::local_day() }; + SqlStatement statement{ m_database.createStatement("SELECT * FROM transactions WHERE repeatFrom = -1 AND fixdate(date) > ? UNION SELECT t1.* FROM transactions t1 JOIN (SELECT repeatFrom, MAX(fixdate(date)) AS highest_date FROM transactions WHERE repeatFrom > 0 GROUP BY repeatFrom) t2 ON t1.repeatFrom = t2.repeatFrom AND fixdate(t1.date) = t2.highest_date") }; + statement.bind(1, boost::gregorian::to_iso_string(today)); + while(statement.step()) + { + Transaction t{ statement.getColumnInt(0) }; + t.setDate(DateHelpers::fromUSDateString(statement.getColumnString(1))); + t.setDescription(statement.getColumnString(2)); + t.setType(static_cast(statement.getColumnInt(3))); + t.setRepeatInterval(static_cast(statement.getColumnInt(4))); + t.setAmount(statement.getColumnDouble(5)); + t.setGroupId(statement.getColumnInt(6)); + t.setColor({ statement.getColumnString(7) }); + t.setReceipt({ statement.getColumnString(8) }); + t.setRepeatFrom(statement.getColumnInt(9)); + t.setRepeatEndDate(DateHelpers::fromUSDateString(statement.getColumnString(10))); + t.setUseGroupColor(statement.getColumnBool(11)); + t.setNotes(statement.getColumnString(12)); + for(const std::string& tag : StringHelpers::split(statement.getColumnString(13), ",")) + { + t.addTag(tag); + } + if(t.getRepeatFrom() != -1) + { + switch(t.getRepeatInterval()) + { + case TransactionRepeatInterval::Daily: + t.setDate(t.getDate() + boost::gregorian::days{ 1 }); + break; + case TransactionRepeatInterval::Weekly: + t.setDate(t.getDate() + boost::gregorian::weeks{ 1 }); + break; + case TransactionRepeatInterval::Biweekly: + t.setDate(t.getDate() + boost::gregorian::weeks{ 2 }); + break; + case TransactionRepeatInterval::Monthly: + t.setDate(t.getDate() + boost::gregorian::months{ 1 }); + break; + case TransactionRepeatInterval::Quarterly: + t.setDate(t.getDate() + boost::gregorian::months{ 3 }); + break; + case TransactionRepeatInterval::Yearly: + t.setDate(t.getDate() + boost::gregorian::years{ 1 }); + break; + case TransactionRepeatInterval::Biyearly: + t.setDate(t.getDate() + boost::gregorian::years{ 2 }); + break; + } + } + if(t.getDate() > today && t.getDate() <= max) + { + transactions.push_back(t); + } + } + std::sort(transactions.begin(), transactions.end(), [](const Transaction& a, const Transaction& b) + { + return a.getDate() < b.getDate(); + }); + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Fetched " + std::to_string(transactions.size()) + " future transactions(s) from database. (" + m_database.getPath().string() + ")"); + return transactions; + } + + bool AccountRepository::addGroup(const Group& group) + { + SqlStatement statement{ m_database.createStatement("INSERT INTO groups (id, name, description, rgba) VALUES (?, ?, ?, ?)") }; + statement.bind(1, group.getId()); + statement.bind(2, group.getName()); + statement.bind(3, group.getDescription()); + statement.bind(4, group.getColor().toRGBAHexString()); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Added Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to add Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + + bool AccountRepository::updateGroup(const Group& group) + { + SqlStatement statement{ m_database.createStatement("UPDATE groups SET name = ?, description = ?, rgba = ? WHERE id = ?") }; + statement.bind(1, group.getName()); + statement.bind(2, group.getDescription()); + statement.bind(3, group.getColor().toRGBAHexString()); + statement.bind(4, group.getId()); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Updated Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to update Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + + bool AccountRepository::deleteGroup(const Group& group) + { + SqlStatement statement{ m_database.createStatement("DELETE FROM groups WHERE id = ?") }; + statement.bind(1, group.getId()); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Deleted Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + SqlStatement updateStatement{ m_database.createStatement("UPDATE transactions SET gid = -1, useGroupColor = 0 WHERE gid = ?") }; + updateStatement.bind(1, group.getId()); + if(!updateStatement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Disassociated transactions from Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to dissassociate transactions from Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Failed to delete Group " + std::to_string(group.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + + bool AccountRepository::addTransaction(const Transaction& transaction) + { + SqlStatement statement{ m_database.createStatement("INSERT INTO transactions (id, date, description, type, repeat, amount, gid, rgba, receipt, repeatFrom, repeatEndDate, useGroupColor, notes, tags) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)") }; + statement.bind(1, transaction.getId()); + statement.bind(2, DateHelpers::toUSDateString(transaction.getDate())); + statement.bind(3, transaction.getDescription()); + statement.bind(4, static_cast(transaction.getType())); + statement.bind(5, static_cast(transaction.getRepeatInterval())); + statement.bind(6, transaction.getAmount()); + statement.bind(7, transaction.getGroupId()); + statement.bind(8, transaction.getColor().toRGBAHexString()); + statement.bind(9, transaction.getReceipt().toString()); + statement.bind(10, transaction.getRepeatFrom()); + statement.bind(11, DateHelpers::toUSDateString(transaction.getRepeatEndDate())); + statement.bind(12, transaction.getUseGroupColor()); + statement.bind(13, transaction.getNotes()); + std::string tags; + for(size_t i = 0; i < transaction.getTags().size(); i++) + { + const std::string& tag{ transaction.getTags()[i] }; + tags += tag; + if(i < transaction.getTags().size() - 1) + { + tags += ","; + } + } + statement.bind(14, tags); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Added Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to add Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + + bool AccountRepository::updateTransaction(const Transaction& transaction, bool updateGenerated) + { + SqlStatement statement{ m_database.createStatement("UPDATE transactions SET date = ?, description = ?, type = ?, repeat = ?, amount = ?, gid = ?, rgba = ?, receipt = ?, repeatFrom = ?, repeatEndDate = ?, useGroupColor = ?, notes = ?, tags = ? WHERE id = ?") }; + statement.bind(1, DateHelpers::toUSDateString(transaction.getDate())); + statement.bind(2, transaction.getDescription()); + statement.bind(3, static_cast(transaction.getType())); + statement.bind(4, static_cast(transaction.getRepeatInterval())); + statement.bind(5, transaction.getAmount()); + statement.bind(6, transaction.getGroupId()); + statement.bind(7, transaction.getColor().toRGBAHexString()); + statement.bind(8, transaction.getReceipt().toString()); + statement.bind(9, transaction.getRepeatFrom()); + statement.bind(10, DateHelpers::toUSDateString(transaction.getRepeatEndDate())); + statement.bind(11, transaction.getUseGroupColor()); + statement.bind(12, transaction.getNotes()); + std::string tags; + for(size_t i = 0; i < transaction.getTags().size(); i++) + { + const std::string& tag{ transaction.getTags()[i] }; + tags += tag; + if(i < transaction.getTags().size() - 1) + { + tags += ","; + } + } + statement.bind(13, tags); + statement.bind(14, transaction.getId()); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Updated Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + if(transaction.getRepeatFrom() == 0) //source repeat transaction + { + if(updateGenerated) + { + SqlStatement updateStatement{ m_database.createStatement("UPDATE transactions SET description = ?, type = ?, repeat = ?, amount = ?, gid = ?, rgba = ?, receipt = ?, repeatEndDate = ?, useGroupColor = ?, notes = ?, tags = ? WHERE repeatFrom = ?") }; + updateStatement.bind(1, transaction.getDescription()); + updateStatement.bind(2, static_cast(transaction.getType())); + updateStatement.bind(3, static_cast(transaction.getRepeatInterval())); + updateStatement.bind(4, transaction.getAmount()); + updateStatement.bind(5, transaction.getGroupId()); + updateStatement.bind(6, transaction.getColor().toRGBAHexString()); + updateStatement.bind(7, transaction.getReceipt().toString()); + updateStatement.bind(8, DateHelpers::toUSDateString(transaction.getRepeatEndDate())); + updateStatement.bind(9, transaction.getUseGroupColor()); + updateStatement.bind(10, transaction.getNotes()); + updateStatement.bind(11, tags); + updateStatement.bind(12, transaction.getId()); + if(!updateStatement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Updated repeat transactions of Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to update repeat transactions of Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + else + { + SqlStatement disassociateStatement{ m_database.createStatement("UPDATE transactions SET repeat = 0, repeatFrom = -1, repeatEndDate = '' WHERE repeatFrom = ?") }; + disassociateStatement.bind(1, transaction.getId()); + if(!disassociateStatement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Disassociated repeat transactions from Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to disassociated repeat transactions from Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + } + return true; + } + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to update Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + + bool AccountRepository::deleteTransaction(const Transaction& transaction, bool deleteGenerated) + { + SqlStatement statement{ m_database.createStatement("DELETE FROM transactions WHERE id = ?") }; + statement.bind(1, transaction.getId()); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Deleted Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + if(transaction.getRepeatFrom() == 0) //source repeat transaction + { + if(deleteGenerated) + { + SqlStatement deleteStatement{ m_database.createStatement("DELETE FROM transactions WHERE repeatFrom = ?") }; + deleteStatement.bind(1, transaction.getId()); + if(!deleteStatement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Deleted repeat transactions of Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to delete repeat transactions of Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + else + { + SqlStatement disassociateStatement{ m_database.createStatement("UPDATE transactions SET repeat = 0, repeatFrom = -1, repeatEndDate = '' WHERE repeatFrom = ?") }; + disassociateStatement.bind(1, transaction.getId()); + if(!disassociateStatement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Disassociated repeat transactions from Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to disassociate repeat transactions from Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } + } + return true; + } + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Failed to delete Transaction " + std::to_string(transaction.getId()) + ". (" + m_database.getPath().string() + ")"); + return false; + } + + bool AccountRepository::deleteGeneratedTransactions(int sourceId) + { + SqlStatement statement{ m_database.createStatement("DELETE FROM transactions WHERE repeatFrom = ?") }; + statement.bind(1, sourceId); + if(!statement.step()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Info, "Deleted repeat transactions of Transaction " + std::to_string(sourceId) + ". (" + m_database.getPath().string() + ")"); + return true; + } + else + { + Aura::getActive().getLogger().log(Logging::LogLevel::Error, "Failed to delete repeat transactions of Transaction " + std::to_string(sourceId) + ". (" + m_database.getPath().string() + ")"); + return false; + } + } +} diff --git a/libdenaro/src/models/color.cpp b/libdenaro/src/models/color.cpp new file mode 100644 index 000000000..6e9de80cb --- /dev/null +++ b/libdenaro/src/models/color.cpp @@ -0,0 +1,281 @@ +#include "models/color.h" +#include +#include +#include +#include + +namespace Nickvision::Money::Shared::Models +{ + Color::Color() + : m_r{ 0 }, + m_g{ 0 }, + m_b{ 0 }, + m_a{ 0 } + { + + } + + Color::Color(unsigned char r, unsigned char g, unsigned char b) + : m_r{ r }, + m_g{ g }, + m_b{ b }, + m_a{ 255 } + { + + } + + Color::Color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) + : m_r{ r }, + m_g{ g }, + m_b{ b }, + m_a{ a } + { + + } + + Color::Color(const std::string& s) + : m_r{ 0 }, + m_g{ 0 }, + m_b{ 0 }, + m_a{ 0 } + { + if(s.empty()) + { + return; + } + unsigned char max{ std::numeric_limits::max() }; + unsigned char min{ std::numeric_limits::min() }; + if(s[0] == '#') + { + if(s.length() == 7) //#rrggbb + { + try + { + int r{ std::stoi(s.substr(1, 2), 0, 16) }; + int g{ std::stoi(s.substr(3, 2), 0, 16) }; + int b{ std::stoi(s.substr(5, 2), 0, 16) }; + if(r >= min && r <= max && g >= min && g <= max && b >= min && b <= max) + { + m_r = static_cast(r); + m_g = static_cast(g); + m_b = static_cast(b); + m_a = 255; + } + } + catch(...) + { + m_r = 0; + m_g = 0; + m_b = 0; + m_a = 0; + } + } + else if(s.length() == 9) //#rrggbbaa + { + try + { + int r{ std::stoi(s.substr(1, 2), 0, 16) }; + int g{ std::stoi(s.substr(3, 2), 0, 16) }; + int b{ std::stoi(s.substr(5, 2), 0, 16) }; + int a{ std::stoi(s.substr(7, 2), 0, 16) }; + if(r >= min && r <= max && g >= min && g <= max && b >= min && b <= max && a >= min && a <= max) + { + m_r = static_cast(r); + m_g = static_cast(g); + m_b = static_cast(b); + m_a = static_cast(a); + } + } + catch(...) + { + m_r = 0; + m_g = 0; + m_b = 0; + m_a = 0; + } + } + } + else + { + std::vector values{ StringHelpers::split(s, ",") }; + if(values.size() == 3) + { + if(values[0].substr(0, 4) == "rgb(") + { + values[0] = values[0].substr(4); + values[2] = values[2].substr(0, values[2].size() - 1); + } + try + { + int r{ std::stoi(values[0]) }; + int g{ std::stoi(values[1]) }; + int b{ std::stoi(values[2]) }; + if(r >= min && r <= max && g >= min && g <= max && b >= min && b <= max) + { + m_r = static_cast(r); + m_g = static_cast(g); + m_b = static_cast(b); + m_a = 255; + } + } + catch(...) + { + m_r = 0; + m_g = 0; + m_b = 0; + m_a = 0; + } + } + else if(values.size() == 4) + { + if(values[0].substr(0, 5) == "rgba(") + { + values[0] = values[0].substr(5); + values[3] = values[3].substr(0, values[3].size() - 1); + } + try + { + int r{ std::stoi(values[0]) }; + int g{ std::stoi(values[1]) }; + int b{ std::stoi(values[2]) }; + int a{ std::stoi(values[3]) }; + if(r >= min && r <= max && g >= min && g <= max && b >= min && b <= max && a >= min && a <= max) + { + m_r = static_cast(r); + m_g = static_cast(g); + m_b = static_cast(b); + m_a = static_cast(a); + } + } + catch(...) + { + m_r = 0; + m_g = 0; + m_b = 0; + m_a = 0; + } + } + } + } + + bool Color::empty() const + { + return m_r == 0 && m_g == 0 && m_b == 0 && m_a == 0; + } + + unsigned char Color::getR() const + { + return m_r; + } + + void Color::setR(unsigned char r) + { + m_r = r; + } + + unsigned char Color::getG() const + { + return m_g; + } + + void Color::setG(unsigned char g) + { + m_g = g; + } + + unsigned char Color::getB() const + { + return m_b; + } + + void Color::setB(unsigned char b) + { + m_b = b; + } + + unsigned char Color::getA() const + { + return m_a; + } + + void Color::setA(unsigned char a) + { + m_a = a; + } + + unsigned int Color::toHex(bool alpha) const + { + return (m_r << 24) | (m_g << 16) | (m_b << 8) | (alpha ? m_a : 255); + } + + std::string Color::toRGBString(bool header) const + { + std::stringstream builder; + if(header) + { + builder << "rgb("; + } + builder << +m_r << ","; + builder << +m_g << ","; + builder << +m_b; + if(header) + { + builder << ")"; + } + return builder.str(); + } + + std::string Color::toRGBAString(bool header) const + { + std::stringstream builder; + if(header) + { + builder << "rgba("; + } + builder << +m_r << ","; + builder << +m_g << ","; + builder << +m_b << ","; + builder << +m_a; + if(header) + { + builder << ")"; + } + return builder.str(); + } + + std::string Color::toRGBHexString() const + { + std::stringstream builder; + builder << "#"; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_r; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_g; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_b; + return builder.str(); + } + + std::string Color::toRGBAHexString() const + { + std::stringstream builder; + builder << "#"; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_r; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_g; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_b; + builder << std::setfill ('0') << std::setw(2) << std::hex << +m_a; + return builder.str(); + } + + bool Color::operator==(const Color& compare) + { + return m_r == compare.m_r && m_g == compare.m_g && m_b == compare.m_b && m_a == compare.m_a; + } + + bool Color::operator!=(const Color& compare) + { + return !operator==(compare); + } + + Color::operator bool() const + { + return !empty(); + } +} \ No newline at end of file diff --git a/libdenaro/src/models/configuration.cpp b/libdenaro/src/models/configuration.cpp new file mode 100644 index 000000000..ffd1ba469 --- /dev/null +++ b/libdenaro/src/models/configuration.cpp @@ -0,0 +1,195 @@ +#include "models/configuration.h" + +namespace Nickvision::Money::Shared::Models +{ + Configuration::Configuration(const std::string& key) + : ConfigurationBase{ key } + { + } + + Theme Configuration::getTheme() const + { + return static_cast(m_json.get("Theme", static_cast(Theme::System)).asInt()); + } + + void Configuration::setTheme(Theme theme) + { + m_json["Theme"] = static_cast(theme); + } + + bool Configuration::getAutomaticallyCheckForUpdates() const + { +#ifdef _WIN32 + bool def{ true }; +#elif defined(__linux__) + bool def{ false }; +#endif + return m_json.get("AutomaticallyCheckForUpdates", def).asBool(); + } + + void Configuration::setAutomaticallyCheckForUpdates(bool check) + { + m_json["AutomaticallyCheckForUpdates"] = check; + } + + std::vector Configuration::getRecentAccounts() + { + std::vector recents; + bool update{ false }; + RecentAccount one{ getRecentAccount(1) }; + if(one) + { + recents.push_back(one); + } + else + { + update = true; + } + RecentAccount two{ getRecentAccount(2) }; + if(two) + { + recents.push_back(two); + } + else + { + update = true; + } + RecentAccount three{ getRecentAccount(3) }; + if(three) + { + recents.push_back(three); + } + else + { + update = true; + } + if(update) + { + if(recents.size() == 0) + { + setRecentAccount(1, {}); + setRecentAccount(2, {}); + setRecentAccount(3, {}); + } + else if(recents.size() == 1) + { + setRecentAccount(1, recents[0]); + setRecentAccount(2, {}); + setRecentAccount(3, {}); + } + else if(recents.size() == 2) + { + setRecentAccount(1, recents[0]); + setRecentAccount(2, recents[1]); + setRecentAccount(3, {}); + } + } + return recents; + } + + void Configuration::addRecentAccount(const RecentAccount& recent) + { + if(recent == getRecentAccount(1)) + { + setRecentAccount(1, recent); + } + else if(recent == getRecentAccount(2)) + { + setRecentAccount(2, getRecentAccount(1)); + setRecentAccount(1, recent); + } + else + { + setRecentAccount(3, getRecentAccount(2)); + setRecentAccount(2, getRecentAccount(1)); + setRecentAccount(1, recent); + } + } + + void Configuration::removeRecentAccount(const RecentAccount& recent) + { + RecentAccount one{ getRecentAccount(1) }; + RecentAccount two{ getRecentAccount(2) }; + RecentAccount three{ getRecentAccount(3) }; + if(one != recent && two != recent && three != recent) + { + return; + } + setRecentAccount(1, {}); + setRecentAccount(2, {}); + setRecentAccount(3, {}); + if(three != recent) + { + addRecentAccount(three); + } + if(two != recent) + { + addRecentAccount(two); + } + if(one != recent) + { + addRecentAccount(one); + } + } + + Color Configuration::getTransactionDefaultColor() const + { + return { m_json.get("TransactionDefaultColor", "rgb(53,132,228)").asString() }; + } + + void Configuration::setTransactionDefaultColor(const Color& color) + { + m_json["TransactionDefaultColor"] = color.toRGBAString(true); + } + + Color Configuration::getTransferDefaultColor() const + { + return { m_json.get("TransferDefaultColor", "rgb(192,97,203)").asString() }; + } + + void Configuration::setTransferDefaultColor(const Color& color) + { + m_json["TransferDefaultColor"] = color.toRGBAString(true); + } + + Color Configuration::getGroupDefaultColor() const + { + return { m_json.get("GroupDefaultColor", "rgb(51,209,122)").asString() }; + } + + void Configuration::setGroupDefaultColor(const Color& color) + { + m_json["GroupDefaultColor"] = color.toRGBAString(true); + } + + InsertSeparatorTrigger Configuration::getInsertSeparator() const + { + return static_cast(m_json.get("InsertSeparator", static_cast(InsertSeparatorTrigger::NumpadOnly)).asInt()); + } + + void Configuration::setInsertSeparator(InsertSeparatorTrigger separator) + { + m_json["InsertSeparator"] = static_cast(separator); + } + + RecentAccount Configuration::getRecentAccount(int index) const + { + Json::Value recentAccount{ m_json["RecentAccount" + std::to_string(index)] }; + if(recentAccount) + { + RecentAccount recent{ recentAccount.get("Path", "").asString() }; + recent.setName(recentAccount.get("Name", "").asString()); + recent.setType(static_cast(recentAccount.get("Type", static_cast(AccountType::Checking)).asInt())); + return recent; + } + return {}; + } + + void Configuration::setRecentAccount(int index, const RecentAccount& recent) + { + std::string key{ "RecentAccount" + std::to_string(index) }; + m_json[key]["Path"] = recent.getPath().string(); + m_json[key]["Name"] = recent.getName(); + m_json[key]["Type"] = static_cast(recent.getType()); + } +} \ No newline at end of file diff --git a/libdenaro/src/models/currency.cpp b/libdenaro/src/models/currency.cpp new file mode 100644 index 000000000..db44a7b2d --- /dev/null +++ b/libdenaro/src/models/currency.cpp @@ -0,0 +1,148 @@ +#include "models/currency.h" + +namespace Nickvision::Money::Shared::Models +{ + Currency::Currency() + : m_decimalSeparator{ '.' }, + m_groupSeparator{ ',' }, + m_decimalDigits{ 2 }, + m_amountStyle{ AmountStyle::SymbolNumber } + { + + } + + Currency::Currency(const std::string& symbol, const std::string& code) + : m_symbol{ symbol }, + m_code{ code }, + m_decimalSeparator{ '.' }, + m_groupSeparator{ ',' }, + m_decimalDigits{ 2 }, + m_amountStyle{ AmountStyle::SymbolNumber } + { + + } + + CurrencyCheckStatus Currency::validate() const + { + if(m_symbol.empty()) + { + return CurrencyCheckStatus::EmptySymbol; + } + else if(m_code.empty()) + { + return CurrencyCheckStatus::EmptyCode; + } + else if(m_decimalSeparator == '\0') + { + return CurrencyCheckStatus::EmptyDecimalSeparator; + } + else if(m_decimalSeparator == m_groupSeparator) + { + return CurrencyCheckStatus::SameSeparators; + } + else if(m_symbol.find(m_decimalSeparator) != std::string::npos) + { + return CurrencyCheckStatus::SameSymbolAndDecimalSeparator; + } + else if(m_symbol.find(m_groupSeparator) != std::string::npos) + { + return CurrencyCheckStatus::SameSymbolAndGroupSeparator; + } + return CurrencyCheckStatus::Valid; + } + + const std::string& Currency::getSymbol() const + { + return m_symbol; + } + + void Currency::setSymbol(const std::string& symbol) + { + m_symbol = symbol; + } + + const std::string& Currency::getCode() const + { + return m_code; + } + + void Currency::setCode(const std::string& code) + { + m_code = code; + if(m_code[m_code.size() - 1] == ' ') + { + m_code = m_code.substr(0, m_code.size() - 1); + } + } + + char Currency::getDecimalSeparator() const + { + return m_decimalSeparator; + } + + void Currency::setDecimalSeparator(char separator) + { + m_decimalSeparator = separator; + } + + char Currency::getGroupSeparator() const + { + return m_groupSeparator; + } + + void Currency::setGroupSeparator(char separator) + { + m_groupSeparator = separator; + } + + int Currency::getDecimalDigits() const + { + return m_decimalDigits; + } + + void Currency::setDecimalDigits(int digits) + { + if(digits <= 2) + { + m_decimalDigits = 2; + } + else if(digits > 6) + { + m_decimalDigits = 6; + } + else + { + m_decimalDigits = digits; + } + } + + AmountStyle Currency::getAmountStyle() const + { + return m_amountStyle; + } + + void Currency::setAmountStyle(AmountStyle style) + { + m_amountStyle = style; + } + + std::string Currency::toString() const + { + return m_symbol + " (" + m_code + ")"; + } + + Currency::operator bool() const + { + return validate() == CurrencyCheckStatus::Valid; + } + + bool Currency::operator==(const Currency& compare) const + { + return m_symbol == compare.m_symbol && m_code == compare.m_code; + } + + bool Currency::operator!=(const Currency& compare) const + { + return !operator==(compare); + } +} diff --git a/libdenaro/src/models/currencyconversion.cpp b/libdenaro/src/models/currencyconversion.cpp new file mode 100644 index 000000000..ad83452f0 --- /dev/null +++ b/libdenaro/src/models/currencyconversion.cpp @@ -0,0 +1,38 @@ +#include "models/currencyconversion.h" + +namespace Nickvision::Money::Shared::Models +{ + CurrencyConversion::CurrencyConversion(const std::string& sourceCurrency, double sourceAmount, const std::string& resultCurrency, double conversionRate) + : m_sourceCurrency{ sourceCurrency }, + m_sourceAmount{ sourceAmount }, + m_resultCurrency{ resultCurrency }, + m_conversionRate{ conversionRate } + { + + } + + const std::string& CurrencyConversion::getSourceCurrency() const + { + return m_sourceCurrency; + } + + double CurrencyConversion::getSourceAmount() const + { + return m_sourceAmount; + } + + const std::string& CurrencyConversion::getResultCurrency() const + { + return m_resultCurrency; + } + + double CurrencyConversion::getConversionRate() const + { + return m_conversionRate; + } + + double CurrencyConversion::getResultAmount() const + { + return m_sourceAmount / m_conversionRate; + } +} \ No newline at end of file diff --git a/libdenaro/src/models/currencyconversionservice.cpp b/libdenaro/src/models/currencyconversionservice.cpp new file mode 100644 index 000000000..8934b2e57 --- /dev/null +++ b/libdenaro/src/models/currencyconversionservice.cpp @@ -0,0 +1,89 @@ +#include "models/currencyconversionservice.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace Nickvision::App; +using namespace Nickvision::Filesystem; + +namespace Nickvision::Money::Shared::Models +{ + std::optional CurrencyConversionService::convert(const std::string& sourceCurrency, double sourceAmount, const std::string& resultCurrency) + { + if(sourceCurrency == resultCurrency) + { + return CurrencyConversion{ sourceCurrency, sourceAmount, resultCurrency, 1 }; + } + const std::map& rates{ getConversionRates(sourceCurrency) }; + if(rates.empty() || !rates.contains(resultCurrency)) + { + return std::nullopt; + } + return CurrencyConversion{ sourceCurrency, sourceAmount, resultCurrency, rates.at(resultCurrency) }; + } + + const std::map& CurrencyConversionService::getConversionRates(const std::string& sourceCurrency) + { + static std::unordered_map> cache; + std::filesystem::path path{ UserDirectories::getApplicationCache() / ("currency_" + sourceCurrency + ".json") }; + bool needsUpdate{ !std::filesystem::exists(path) }; + Json::Value json; + if(std::filesystem::exists(path)) + { + std::ifstream in{ path }; + in >> json; + std::int64_t seconds{ json.get("time_next_update_unix", 0).asInt64() }; + std::int64_t secondsNow{ std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count() }; + if(seconds <= secondsNow) + { + needsUpdate = true; + json.clear(); + cache[sourceCurrency].clear(); + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, sourceCurrency + " rates on disk out-of-date."); + } + else if(!cache[sourceCurrency].empty()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, sourceCurrency + " rates fetched from cache."); + return cache[sourceCurrency]; + } + } + if(needsUpdate) + { + std::string apiUrl{ "https://open.er-api.com/v6/latest/" + sourceCurrency }; + std::string response{ WebHelpers::fetchJsonString(apiUrl) }; + if(!response.empty()) + { + Json::Reader reader; + reader.parse(response, json, false); + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, sourceCurrency + " rates fetched from internet."); + } + } + if(!json.empty()) + { + Json::Value ratesJson{ json.get("rates", {}) }; + if(!ratesJson.empty()) + { + std::map& rates{ cache[sourceCurrency] }; + double sourceRate{ ratesJson.get(sourceCurrency, 0.0).asDouble() }; + for(const std::string& rate : ratesJson.getMemberNames()) + { + rates[rate] = sourceRate / ratesJson.get(rate, 0.0).asDouble(); + } + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, sourceCurrency + " rates cached."); + if(needsUpdate) + { + std::ofstream out{ path }; + out << json; + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, sourceCurrency + " rates saved to disk."); + } + } + } + return cache[sourceCurrency]; + } +} diff --git a/libdenaro/src/models/dashboardgroup.cpp b/libdenaro/src/models/dashboardgroup.cpp new file mode 100644 index 000000000..f4a83b093 --- /dev/null +++ b/libdenaro/src/models/dashboardgroup.cpp @@ -0,0 +1,29 @@ +#include "models/dashboardgroup.h" +#include +#include +#include +#include "helpers/currencyhelpers.h" + +namespace Nickvision::Money::Shared::Models +{ + DashboardGroup::DashboardGroup() + { + + } + + const std::unordered_map>& DashboardGroup::getData() const + { + return m_data; + } + + void DashboardGroup::addAmount(double amount, const Currency& currency, const std::string& accountName) + { + if(!m_data.contains(currency)) + { + m_data.emplace(currency, std::make_pair(amount, std::vformat(_("{} from {}"), std::make_format_args(CodeHelpers::unmove(CurrencyHelpers::toAmountString(amount, currency)), accountName)))); + return; + } + m_data.at(currency).first += amount; + m_data.at(currency).second += "\n" + std::vformat(_("{} from {}"), std::make_format_args(CodeHelpers::unmove(CurrencyHelpers::toAmountString(amount, currency)), accountName)); + } +} diff --git a/libdenaro/src/models/group.cpp b/libdenaro/src/models/group.cpp new file mode 100644 index 000000000..8692ed05d --- /dev/null +++ b/libdenaro/src/models/group.cpp @@ -0,0 +1,142 @@ +#include "models/group.h" +#include + +namespace Nickvision::Money::Shared::Models +{ + Group::Group(int id) + : m_id{ id }, + m_name{ "" }, + m_description{ "" }, + m_balance{ 0.0 } + { + + } + + int Group::getId() const + { + return m_id; + } + + const std::string& Group::getName() const + { + return m_name; + } + + void Group::setName(const std::string& name) + { + m_name = name; + } + + const std::string& Group::getDescription() const + { + return m_description; + } + + void Group::setDescription(const std::string& description) + { + m_description = description; + } + + const Color& Group::getColor() const + { + return m_color; + } + + void Group::setColor(const Color& color) + { + m_color = color; + } + + double Group::getBalance(const std::vector& transactionIds) const + { + if(transactionIds.empty()) + { + return m_balance; + } + double balance{ 0.0 }; + for(const std::pair& pair : m_amounts) + { + if(std::find(transactionIds.begin(), transactionIds.end(), pair.first) != transactionIds.end()) + { + balance += pair.second; + } + } + return balance; + } + + double Group::updateBalance(const Transaction& transaction, bool remove) + { + if(remove) + { + if(m_amounts.contains(transaction.getId())) + { + m_balance -= m_amounts[transaction.getId()]; + m_amounts.erase(transaction.getId()); + } + } + else + { + if(m_amounts.contains(transaction.getId())) + { + m_balance -= m_amounts[transaction.getId()]; + } + m_amounts[transaction.getId()] = transaction.getType() == TransactionType::Income ? transaction.getAmount() : transaction.getAmount() * -1.0; + m_balance += m_amounts[transaction.getId()]; + } + return m_balance; + } + + double Group::getIncome(const std::vector& transactionIds) const + { + double income{ 0.0 }; + for(const std::pair& pair : m_amounts) + { + if(!transactionIds.empty() && std::find(transactionIds.begin(), transactionIds.end(), pair.first) == transactionIds.end()) + { + continue; + } + if(pair.second >= 0.0) + { + income += pair.second; + } + } + return income; + } + + double Group::getExpense(const std::vector& transactionIds) const + { + double expense{ 0.0 }; + for(const std::pair& pair : m_amounts) + { + if(!transactionIds.empty() && std::find(transactionIds.begin(), transactionIds.end(), pair.first) == transactionIds.end()) + { + continue; + } + if(pair.second < 0.0) + { + expense += pair.second; + } + } + return expense; + } + + bool Group::operator==(const Group& compare) const + { + return m_id == compare.m_id; + } + + bool Group::operator!=(const Group& compare) const + { + return !operator==(compare); + } + + bool Group::operator<(const Group& compare) const + { + return m_name < compare.m_name; + } + + bool Group::operator>(const Group& compare) const + { + return m_name > compare.m_name; + } +} diff --git a/libdenaro/src/models/importresult.cpp b/libdenaro/src/models/importresult.cpp new file mode 100644 index 000000000..2dfafeb79 --- /dev/null +++ b/libdenaro/src/models/importresult.cpp @@ -0,0 +1,57 @@ +#include "models/importresult.h" +#include + +namespace Nickvision::Money::Shared::Models +{ + bool ImportResult::empty() const + { + return m_newTransactions.empty() && m_newGroups.empty() && m_newTags.empty(); + } + + const std::vector& ImportResult::getNewTransactionIds() const + { + return m_newTransactions; + } + + const std::vector& ImportResult::getNewGroupIds() const + { + return m_newGroups; + } + + const std::vector& ImportResult::getNewTags() const + { + return m_newTags; + } + + void ImportResult::addTransaction(int id) + { + if(std::find(m_newTransactions.begin(), m_newTransactions.end(), id) == m_newTransactions.end()) + { + m_newTransactions.push_back(id); + } + } + + void ImportResult::addGroup(int id) + { + if(std::find(m_newGroups.begin(), m_newGroups.end(), id) == m_newGroups.end()) + { + m_newGroups.push_back(id); + } + } + + void ImportResult::addTags(const std::vector& tags) + { + for(const std::string& tag : tags) + { + if(std::find(m_newTags.begin(), m_newTags.end(), tag) == m_newTags.end()) + { + m_newTags.push_back(tag); + } + } + } + + ImportResult::operator bool() const + { + return !empty(); + } +} \ No newline at end of file diff --git a/libdenaro/src/models/receipt.cpp b/libdenaro/src/models/receipt.cpp new file mode 100644 index 000000000..5a402c302 --- /dev/null +++ b/libdenaro/src/models/receipt.cpp @@ -0,0 +1,178 @@ +#include "models/receipt.h" +#include +#include +#include +#include +#include + +using namespace Nickvision::App; + +namespace Nickvision::Money::Shared::Models +{ + Receipt::Receipt() + : m_type{ ReceiptType::Unknown } + { + + } + + Receipt::Receipt(const std::filesystem::path& pathToFile) + : m_type{ ReceiptType::Unknown } + { + if(std::filesystem::exists(pathToFile)) + { + //Get type + std::string ext{ StringHelpers::toLower(pathToFile.extension().string()) }; + if(ext == ".jpeg" || ext == ".jpg") + { + m_type = ReceiptType::JPEG; + } + else if(ext == ".png") + { + m_type = ReceiptType::PNG; + } + else if(ext == ".pdf") + { + m_type = ReceiptType::PDF; + } + else + { + m_type = ReceiptType::Unknown; + } + //Get bytes + std::ifstream in{ pathToFile, std::ios_base::binary }; + m_bytes = { std::istreambuf_iterator(in), std::istreambuf_iterator() }; + //Encode type + bytes + std::vector bytes; + bytes.push_back(static_cast(m_type)); + bytes.insert(bytes.end(), m_bytes.begin(), m_bytes.end()); + m_base64 = StringHelpers::toBase64(bytes); + } + } + + Receipt::Receipt(const std::vector& bytes) + : m_type{ ReceiptType::Unknown }, + m_bytes{ bytes }, + m_base64{ StringHelpers::toBase64(bytes) } + { + if(!bytes.empty()) + { + if(m_base64.empty()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Critical, "Unable to convert bytes vector to base64 string."); + throw std::invalid_argument("Invalid bytes vector"); + } + //Get type + if(m_bytes[0] == 'J') + { + m_type = ReceiptType::JPEG; + } + else if(m_bytes[0] == 'P') + { + m_type = ReceiptType::PNG; + } + else if(m_bytes[0] == 'D') + { + m_type = ReceiptType::PDF; + } + else if(m_bytes[0] == 'U') + { + m_type = ReceiptType::Unknown; + } + else + { + m_type = ReceiptType::Unknown; + return; + } + //Remove type from bytes + m_bytes.erase(m_bytes.begin()); + } + } + + Receipt::Receipt(const std::string& base64) + : m_type{ ReceiptType::Unknown }, + m_base64{ base64 } + { + if(!m_base64.empty()) + { + //Get bytes + m_bytes = StringHelpers::toByteList(base64); + if(m_bytes.empty()) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Critical, "Unable to convert base64 string to bytes vector."); + throw std::invalid_argument("Invalid base64 string"); + } + //Get type + if(m_bytes[0] == 'J') + { + m_type = ReceiptType::JPEG; + } + else if(m_bytes[0] == 'P') + { + m_type = ReceiptType::PNG; + } + else if(m_bytes[0] == 'D') + { + m_type = ReceiptType::PDF; + } + else if(m_bytes[0] == 'U') + { + m_type = ReceiptType::Unknown; + } + else + { + m_type = ReceiptType::Unknown; + return; + } + //Remove type from bytes + m_bytes.erase(m_bytes.begin()); + } + } + + bool Receipt::empty() const + { + return m_bytes.empty(); + } + + ReceiptType Receipt::getType() const + { + return m_type; + } + + const std::string& Receipt::toString() const + { + return m_base64; + } + + bool Receipt::saveToDisk(const std::filesystem::path& pathToFile, bool overwrite) const + { + if(std::filesystem::exists(pathToFile) && !overwrite) + { + return false; + } + std::filesystem::path path{ pathToFile }; + if(m_type == ReceiptType::JPEG && (path.extension() != ".jpeg" || path.extension() != ".jpg")) + { + path.replace_extension(".jpg"); + } + else if(m_type == ReceiptType::PNG && path.extension() != ".png") + { + path.replace_extension(".png"); + } + else if(m_type == ReceiptType::PDF && path.extension() != ".pdf") + { + path.replace_extension(".pdf"); + } + else if(m_type == ReceiptType::Unknown && path.has_extension()) + { + path.replace_extension(); + } + std::ofstream out{ path, std::ios_base::binary | std::ios_base::trunc }; + out.write(reinterpret_cast(&m_bytes[0]), m_bytes.size()); + return true; + } + + Receipt::operator bool() const + { + return !empty(); + } +} diff --git a/libdenaro/src/models/recentaccount.cpp b/libdenaro/src/models/recentaccount.cpp new file mode 100644 index 000000000..32469c355 --- /dev/null +++ b/libdenaro/src/models/recentaccount.cpp @@ -0,0 +1,72 @@ +#include "models/recentaccount.h" + +namespace Nickvision::Money::Shared::Models +{ + RecentAccount::RecentAccount() + : m_type{ AccountType::Checking } + { + + } + + RecentAccount::RecentAccount(const std::filesystem::path& path) + : m_path{ path }, + m_name{ path.stem().string() }, + m_type{ AccountType::Checking } + { + + } + + const std::filesystem::path& RecentAccount::getPath() const + { + return m_path; + } + + void RecentAccount::setPath(const std::filesystem::path& path) + { + m_path = path; + if(m_name.empty()) + { + m_name = m_path.stem().string(); + } + } + + const std::string& RecentAccount::getName() const + { + return m_name; + } + + void RecentAccount::setName(const std::string& name) + { + m_name = name; + } + + AccountType RecentAccount::getType() const + { + return m_type; + } + + void RecentAccount::setType(AccountType type) + { + m_type = type; + } + + bool RecentAccount::empty() const + { + return m_path.empty() || !std::filesystem::exists(m_path); + } + + bool RecentAccount::operator==(const RecentAccount& compare) const + { + return m_path == compare.m_path; + } + + bool RecentAccount::operator!=(const RecentAccount& compare) const + { + return !operator==(compare); + } + + RecentAccount::operator bool() const + { + return !empty(); + } +} \ No newline at end of file diff --git a/libdenaro/src/models/transaction.cpp b/libdenaro/src/models/transaction.cpp new file mode 100644 index 000000000..d9eb32081 --- /dev/null +++ b/libdenaro/src/models/transaction.cpp @@ -0,0 +1,225 @@ +#include "models/transaction.h" +#include + +namespace Nickvision::Money::Shared::Models +{ + Transaction::Transaction(int id) + : m_id{ id }, + m_date{ boost::gregorian::day_clock::local_day() }, + m_type{ TransactionType::Income }, + m_amount{ 0.0 }, + m_groupId{ -1 }, + m_useGroupColor{ true }, + m_repeatInterval{ TransactionRepeatInterval::Never }, + m_repeatFrom{ -1 } + { + + } + + int Transaction::getId() const + { + return m_id; + } + + const boost::gregorian::date& Transaction::getDate() const + { + return m_date; + } + + void Transaction::setDate(const boost::gregorian::date& date) + { + m_date = date; + } + + const std::string& Transaction::getDescription() const + { + return m_description; + } + + void Transaction::setDescription(const std::string& description) + { + m_description = description; + } + + TransactionType Transaction::getType() const + { + return m_type; + } + + void Transaction::setType(TransactionType type) + { + m_type = type; + } + + double Transaction::getAmount() const + { + return m_amount; + } + + void Transaction::setAmount(double amount) + { + if(amount < 0) //Transaction amounts must not be negative. The type of the transaction determines if the amount should be added or subtracted. + { + amount *= -1; + m_type = TransactionType::Expense; + } + m_amount = amount; + } + + int Transaction::getGroupId() const + { + return m_groupId; + } + + void Transaction::setGroupId(int groupId) + { + if(groupId <= 0) + { + groupId = -1; + } + m_groupId = groupId; + } + + const Color& Transaction::getColor() const + { + return m_color; + } + + void Transaction::setColor(const Color& color) + { + m_color = color; + } + + bool Transaction::getUseGroupColor() const + { + return m_useGroupColor; + } + + void Transaction::setUseGroupColor(bool useGroupColor) + { + m_useGroupColor = useGroupColor; + } + + const Receipt& Transaction::getReceipt() const + { + return m_receipt; + } + + void Transaction::setReceipt(const Receipt& receipt) + { + m_receipt = receipt; + } + + TransactionRepeatInterval Transaction::getRepeatInterval() const + { + return m_repeatInterval; + } + + void Transaction::setRepeatInterval(TransactionRepeatInterval repeatInterval) + { + m_repeatInterval = repeatInterval; + } + + int Transaction::getRepeatFrom() const + { + return m_repeatFrom; + } + + void Transaction::setRepeatFrom(int repeatFrom) + { + m_repeatFrom = repeatFrom; + } + + const boost::gregorian::date& Transaction::getRepeatEndDate() const + { + return m_repeatEndDate; + } + + void Transaction::setRepeatEndDate(const boost::gregorian::date& repeatEndDate) + { + m_repeatEndDate = repeatEndDate; + } + + const std::vector& Transaction::getTags() const + { + return m_tags; + } + + bool Transaction::addTag(const std::string& tag) + { + if(std::find(m_tags.begin(), m_tags.end(), tag) == m_tags.end()) + { + m_tags.push_back(tag); + return true; + } + return false; + } + + bool Transaction::removeTag(const std::string& tag) + { + std::vector::iterator find{ std::find(m_tags.begin(), m_tags.end(), tag) }; + if(find == m_tags.end()) + { + return false; + } + m_tags.erase(find); + return true; + } + + void Transaction::setTags(const std::vector& tags) + { + m_tags = tags; + } + + const std::string& Transaction::getNotes() const + { + return m_notes; + } + + void Transaction::setNotes(const std::string& notes) + { + m_notes = notes; + } + + Transaction Transaction::repeat(int newId, const boost::gregorian::date& newDate) const + { + Transaction t{ newId }; + t.setDate(newDate); + t.setDescription(m_description); + t.setType(m_type); + t.setAmount(m_amount); + t.setGroupId(m_groupId); + t.setColor(m_color); + t.setUseGroupColor(m_useGroupColor); + t.setReceipt(m_receipt); + t.setRepeatInterval(m_repeatInterval); + t.setRepeatFrom(m_id); + t.setRepeatEndDate(m_repeatEndDate); + for(const std::string& tag : m_tags) + { + t.addTag(tag); + } + t.setNotes(m_notes); + return t; + } + + bool Transaction::operator==(const Transaction& compare) const + { + return m_id == compare.m_id; + } + + bool Transaction::operator!=(const Transaction& compare) const + { + return !operator==(compare); + } + + bool Transaction::operator<(const Transaction& compare) const + { + return m_id < compare.m_id; + } + + bool Transaction::operator>(const Transaction& compare) const + { + return m_id > compare.m_id; + } +} \ No newline at end of file diff --git a/libdenaro/src/models/transactionreminder.cpp b/libdenaro/src/models/transactionreminder.cpp new file mode 100644 index 000000000..84785df94 --- /dev/null +++ b/libdenaro/src/models/transactionreminder.cpp @@ -0,0 +1,80 @@ +#include "models/transactionreminder.h" +#include +#include +#include +#include "helpers/currencyhelpers.h" + +using namespace Nickvision::Money::Shared; + +namespace Nickvision::Money::Shared::Models +{ + TransactionReminder::TransactionReminder(const std::string& description, const boost::gregorian::date& when) + : m_description{ description }, + m_amount{ 0 }, + m_amountString{ "0" } + { + setWhen(when); + } + + const std::string& TransactionReminder::getDescription() const + { + return m_description; + } + + void TransactionReminder::setDescription(const std::string& description) + { + m_description = description; + } + + double TransactionReminder::getAmount() const + { + return m_amount; + } + + const std::string& TransactionReminder::getAmountString() const + { + return m_amountString; + } + + void TransactionReminder::setAmount(double amount, TransactionType type, const Currency& currency) + { + m_amount = type == TransactionType::Income ? amount : amount * -1; + m_amountString = CurrencyHelpers::toAmountString(m_amount, currency); + } + + const boost::gregorian::date& TransactionReminder::getWhen() const + { + return m_when; + } + + const std::string& TransactionReminder::getWhenString() const + { + return m_whenString; + } + + void TransactionReminder::setWhen(const boost::gregorian::date& when) + { + m_when = when; + boost::gregorian::date today{ boost::gregorian::day_clock::local_day() }; + if(m_when == today + boost::gregorian::days{ 1 }) + { + m_whenString = _("Tomorrow"); + } + else if(m_when == today + boost::gregorian::weeks{ 1 }) + { + m_whenString = _("One week from now"); + } + else if(m_when == today + boost::gregorian::months{ 1 }) + { + m_whenString = _("One month from now"); + } + else if(m_when == today + boost::gregorian::months{ 2 }) + { + m_whenString = _("Two months from now"); + } + else + { + m_whenString = std::vformat(_("{} days from now"), std::make_format_args(CodeHelpers::unmove((m_when - today).days()))); + } + } +} \ No newline at end of file diff --git a/libdenaro/src/models/transfer.cpp b/libdenaro/src/models/transfer.cpp new file mode 100644 index 000000000..50dda88b5 --- /dev/null +++ b/libdenaro/src/models/transfer.cpp @@ -0,0 +1,75 @@ +#include "models/transfer.h" + +namespace Nickvision::Money::Shared::Models +{ + Transfer::Transfer(const std::filesystem::path& sourceAccountPath, const std::string& sourceAccountName) + : m_sourceAccountPath{ sourceAccountPath }, + m_sourceAccountName{ sourceAccountName.empty() ? sourceAccountPath.stem().string() : sourceAccountName }, + m_sourceAmount{ 0.0 }, + m_destinationAccountPath{ std::filesystem::path() }, + m_destinationAccountPassword{ "" }, + m_conversionRate{ 1.0 } + { + + } + + const std::filesystem::path& Transfer::getSourceAccountPath() const + { + return m_sourceAccountPath; + } + + const std::string& Transfer::getSourceAccountName() const + { + return m_sourceAccountName; + } + + void Transfer::setSourceAccountName(const std::string& sourceAccountName) + { + m_sourceAccountName = sourceAccountName; + } + + double Transfer::getSourceAmount() const + { + return m_sourceAmount; + } + + void Transfer::setSourceAmount(double sourceAmount) + { + m_sourceAmount = sourceAmount; + } + + const std::filesystem::path& Transfer::getDestinationAccountPath() const + { + return m_destinationAccountPath; + } + + void Transfer::setDestinationAccountPath(const std::filesystem::path& destinationAccountPath) + { + m_destinationAccountPath = destinationAccountPath; + } + + const std::string& Transfer::getDestinationAccountPassword() const + { + return m_destinationAccountPassword; + } + + void Transfer::setDestinationAccountPassword(const std::string& destinationAccountPassword) + { + m_destinationAccountPassword = destinationAccountPassword; + } + + double Transfer::getConversionRate() const + { + return m_conversionRate; + } + + void Transfer::setConversionRate(double conversionRate) + { + m_conversionRate = conversionRate; + } + + double Transfer::getDestinationAmount() const + { + return m_sourceAmount / m_conversionRate; + } +} \ No newline at end of file diff --git a/libdenaro/tests/DenaroTestAccount1.csv b/libdenaro/tests/DenaroTestAccount1.csv new file mode 100644 index 000000000..481a34dd8 --- /dev/null +++ b/libdenaro/tests/DenaroTestAccount1.csv @@ -0,0 +1,1499 @@ +ID;Date;Description;Type;RepeatInterval;RepeatFrom;RepeatEndDate;Amount;RGBA;UseGroupColor;Group;GroupName;GroupDescription;GroupRGBA +1;1/2/2024;Income;0;0;-1;;5;#fcba03;0;1;Pay;Income from Work;#fcba03 +2;1/3/2024;Income;0;0;-1;;5;#fcba03;0;1;Pay;Income from Work;#fcba03 +3;1/4/2024;Income;0;0;-1;;5;#fcba03;0;-1;;; +4;1/5/2024;Income;0;0;-1;;5;#fcba03;0;-1;;; +5;1/5/2024;Income;0;0;-1;;5;#fcba03;0;-1;;; +6;1/5/2024;Income;0;0;-1;;5;#fcba03;0;-1;;; +7;1/5/2024;Income;0;0;-1;;5;#fcba03;0;-1;;; +8;1/5/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +9;1/5/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +10;1/6/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +11;1/7/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +12;1/8/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +13;1/9/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +14;1/10/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +15;1/11/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +16;1/12/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +17;1/13/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +18;1/14/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +19;1/15/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +20;1/16/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +21;1/17/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +22;1/18/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +23;1/19/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +24;1/20/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +25;1/21/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +26;1/22/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +27;1/23/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +28;1/24/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +29;1/25/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +30;1/26/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +31;1/27/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +32;1/28/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +33;1/29/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +34;1/30/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +35;1/31/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +36;2/1/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +37;2/2/2024;Income;0;0;-1;;6;#fcba03;0;-1;;; +38;1/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +39;1/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +40;1/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +41;1/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +42;1/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +43;1/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +44;1/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +45;1/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +46;1/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +47;1/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +48;1/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +49;1/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +50;1/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +51;1/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +52;1/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +53;1/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +54;1/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +55;1/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +56;1/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +57;1/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +58;1/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +59;1/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +60;1/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +61;1/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +62;1/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +63;1/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +64;1/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +65;1/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +66;1/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +67;1/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +68;1/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +69;2/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +70;2/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +71;2/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +72;2/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +73;2/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +74;2/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +75;2/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +76;2/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +77;2/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +78;2/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +79;2/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +80;2/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +81;2/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +82;2/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +83;2/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +84;2/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +85;2/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +86;2/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +87;2/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +88;2/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +89;2/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +90;2/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +91;2/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +92;2/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +93;2/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +94;2/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +95;2/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +96;2/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +97;3/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +98;3/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +99;3/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +100;3/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +101;3/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +102;3/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +103;3/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +104;3/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +105;3/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +106;3/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +107;3/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +108;3/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +109;3/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +110;3/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +111;3/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +112;3/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +113;3/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +114;3/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +115;3/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +116;3/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +117;3/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +118;3/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +119;3/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +120;3/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +121;3/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +122;3/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +123;3/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +124;3/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +125;3/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +126;3/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +127;3/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +128;4/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +129;4/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +130;4/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +131;4/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +132;4/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +133;4/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +134;4/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +135;4/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +136;4/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +137;4/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +138;4/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +139;4/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +140;4/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +141;4/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +142;4/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +143;4/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +144;4/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +145;4/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +146;4/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +147;4/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +148;4/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +149;4/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +150;4/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +151;4/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +152;4/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +153;4/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +154;4/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +155;4/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +156;4/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +157;4/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +158;5/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +159;5/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +160;5/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +161;5/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +162;5/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +163;5/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +164;5/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +165;5/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +166;5/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +167;5/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +168;5/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +169;5/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +170;5/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +171;5/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +172;5/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +173;5/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +174;5/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +175;5/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +176;5/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +177;5/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +178;5/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +179;5/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +180;5/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +181;5/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +182;5/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +183;5/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +184;5/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +185;5/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +186;5/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +187;5/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +188;5/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +189;6/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +190;6/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +191;6/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +192;6/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +193;6/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +194;6/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +195;6/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +196;6/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +197;6/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +198;6/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +199;6/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +200;6/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +201;6/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +202;6/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +203;6/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +204;6/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +205;6/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +206;6/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +207;6/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +208;6/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +209;6/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +210;6/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +211;6/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +212;6/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +213;6/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +214;6/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +215;6/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +216;6/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +217;6/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +218;6/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +219;7/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +220;7/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +221;7/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +222;7/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +223;7/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +224;7/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +225;7/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +226;7/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +227;7/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +228;7/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +229;7/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +230;7/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +231;7/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +232;7/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +233;7/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +234;7/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +235;7/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +236;7/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +237;7/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +238;7/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +239;7/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +240;7/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +241;7/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +242;7/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +243;7/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +244;7/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +245;7/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +246;7/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +247;7/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +248;7/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +249;7/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +250;8/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +251;8/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +252;8/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +253;8/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +254;8/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +255;8/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +256;8/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +257;8/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +258;8/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +259;8/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +260;8/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +261;8/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +262;8/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +263;8/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +264;8/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +265;8/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +266;8/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +267;8/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +268;8/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +269;8/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +270;8/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +271;8/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +272;8/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +273;8/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +274;8/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +275;8/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +276;8/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +277;8/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +278;8/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +279;8/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +280;8/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +281;9/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +282;9/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +283;9/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +284;9/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +285;9/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +286;9/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +287;9/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +288;9/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +289;9/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +290;9/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +291;9/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +292;9/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +293;9/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +294;9/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +295;9/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +296;9/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +297;9/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +298;9/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +299;9/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +300;9/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +301;9/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +302;9/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +303;9/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +304;9/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +305;9/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +306;9/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +307;9/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +308;9/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +309;9/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +310;9/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +311;10/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +312;10/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +313;10/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +314;10/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +315;10/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +316;10/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +317;10/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +318;10/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +319;10/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +320;10/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +321;10/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +322;10/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +323;10/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +324;10/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +325;10/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +326;10/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +327;10/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +328;10/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +329;10/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +330;10/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +331;10/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +332;10/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +333;10/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +334;10/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +335;10/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +336;10/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +337;10/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +338;10/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +339;10/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +340;10/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +341;10/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +342;11/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +343;11/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +344;11/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +345;11/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +346;11/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +347;11/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +348;11/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +349;11/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +350;11/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +351;11/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +352;11/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +353;11/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +354;11/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +355;11/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +356;11/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +357;11/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +358;11/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +359;11/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +360;11/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +361;11/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +362;11/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +363;11/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +364;11/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +365;11/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +366;11/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +367;11/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +368;11/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +369;11/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +370;11/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +371;11/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +372;12/1/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +373;12/2/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +374;12/3/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +375;12/4/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +376;12/5/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +377;12/6/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +378;12/7/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +379;12/8/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +380;12/9/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +381;12/10/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +382;12/11/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +383;12/12/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +384;12/13/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +385;12/14/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +386;12/15/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +387;12/16/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +388;12/17/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +389;12/18/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +390;12/19/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +391;12/20/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +392;12/21/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +393;12/22/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +394;12/23/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +395;12/24/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +396;12/25/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +397;12/26/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +398;12/27/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +399;12/28/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +400;12/29/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +401;12/30/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +402;12/31/2023;Income;0;0;-1;;10;#fcbaaa;0;-1;;; +403;1/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;2;Bills;;#fcbaaa +404;1/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;2;Bills;;#fcbaaa +405;1/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +406;1/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +407;1/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +408;1/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +409;1/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +410;1/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +411;1/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +412;1/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +413;1/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +414;1/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +415;1/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +416;1/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +417;1/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +418;1/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +419;1/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +420;1/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +421;1/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +422;1/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +423;1/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +424;1/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +425;1/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +426;1/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +427;1/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +428;1/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +429;1/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +430;1/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +431;1/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +432;1/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +433;1/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +434;2/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +435;2/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +436;2/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +437;2/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +438;2/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +439;2/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +440;2/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +441;2/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +442;2/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +443;2/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +444;2/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +445;2/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +446;2/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +447;2/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +448;2/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +449;2/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +450;2/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +451;2/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +452;2/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +453;2/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +454;2/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +455;2/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +456;2/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +457;2/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +458;2/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +459;2/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +460;2/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +461;2/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +462;3/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +463;3/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +464;3/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +465;3/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +466;3/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +467;3/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +468;3/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +469;3/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +470;3/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +471;3/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +472;3/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +473;3/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +474;3/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +475;3/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +476;3/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +477;3/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +478;3/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +479;3/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +480;3/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +481;3/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +482;3/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +483;3/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +484;3/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +485;3/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +486;3/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +487;3/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +488;3/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +489;3/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +490;3/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +491;3/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +492;3/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +493;4/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +494;4/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +495;4/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +496;4/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +497;4/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +498;4/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +499;4/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +500;4/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +501;4/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +502;4/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +503;4/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +504;4/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +505;4/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +506;4/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +507;4/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +508;4/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +509;4/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +510;4/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +511;4/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +512;4/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +513;4/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +514;4/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +515;4/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +516;4/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +517;4/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +518;4/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +519;4/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +520;4/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +521;4/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +522;4/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +523;5/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +524;5/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +525;5/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +526;5/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +527;5/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +528;5/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +529;5/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +530;5/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +531;5/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +532;5/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +533;5/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +534;5/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +535;5/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +536;5/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +537;5/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +538;5/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +539;5/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +540;5/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +541;5/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +542;5/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +543;5/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +544;5/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +545;5/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +546;5/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +547;5/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +548;5/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +549;5/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +550;5/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +551;5/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +552;5/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +553;5/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +554;6/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +555;6/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +556;6/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +557;6/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +558;6/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +559;6/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +560;6/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +561;6/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +562;6/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +563;6/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +564;6/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +565;6/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +566;6/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +567;6/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +568;6/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +569;6/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +570;6/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +571;6/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +572;6/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +573;6/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +574;6/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +575;6/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +576;6/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +577;6/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +578;6/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +579;6/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +580;6/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +581;6/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +582;6/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +583;6/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +584;7/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +585;7/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +586;7/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +587;7/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +588;7/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +589;7/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +590;7/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +591;7/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +592;7/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +593;7/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +594;7/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +595;7/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +596;7/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +597;7/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +598;7/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +599;7/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +600;7/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +601;7/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +602;7/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +603;7/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +604;7/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +605;7/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +606;7/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +607;7/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +608;7/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +609;7/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +610;7/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +611;7/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +612;7/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +613;7/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +614;7/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +615;8/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +616;8/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +617;8/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +618;8/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +619;8/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +620;8/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +621;8/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +622;8/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +623;8/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +624;8/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +625;8/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +626;8/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +627;8/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +628;8/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +629;8/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +630;8/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +631;8/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +632;8/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +633;8/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +634;8/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +635;8/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +636;8/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +637;8/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +638;8/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +639;8/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +640;8/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +641;8/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +642;8/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +643;8/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +644;8/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +645;8/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +646;9/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +647;9/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +648;9/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +649;9/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +650;9/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +651;9/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +652;9/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +653;9/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +654;9/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +655;9/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +656;9/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +657;9/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +658;9/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +659;9/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +660;9/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +661;9/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +662;9/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +663;9/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +664;9/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +665;9/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +666;9/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +667;9/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +668;9/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +669;9/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +670;9/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +671;9/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +672;9/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +673;9/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +674;9/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +675;9/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +676;10/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +677;10/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +678;10/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +679;10/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +680;10/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +681;10/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +682;10/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +683;10/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +684;10/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +685;10/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +686;10/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +687;10/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +688;10/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +689;10/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +690;10/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +691;10/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +692;10/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +693;10/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +694;10/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +695;10/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +696;10/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +697;10/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +698;10/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +699;10/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +700;10/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +701;10/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +702;10/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +703;10/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +704;10/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +705;10/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +706;10/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +707;11/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +708;11/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +709;11/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +710;11/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +711;11/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +712;11/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +713;11/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +714;11/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +715;11/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +716;11/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +717;11/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +718;11/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +719;11/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +720;11/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +721;11/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +722;11/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +723;11/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +724;11/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +725;11/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +726;11/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +727;11/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +728;11/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +729;11/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +730;11/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +731;11/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +732;11/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +733;11/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +734;11/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +735;11/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +736;11/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +737;12/1/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +738;12/2/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +739;12/3/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +740;12/4/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +741;12/5/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +742;12/6/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +743;12/7/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +744;12/8/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +745;12/9/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +746;12/10/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +747;12/11/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +748;12/12/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +749;12/13/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +750;12/14/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +751;12/15/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +752;12/16/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +753;12/17/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +754;12/18/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +755;12/19/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +756;12/20/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +757;12/21/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +758;12/22/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +759;12/23/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +760;12/24/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +761;12/25/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +762;12/26/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +763;12/27/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +764;12/28/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +765;12/29/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +766;12/30/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +767;12/31/2022;Expense;1;0;-1;0;2;#fcbaaa;0;-1;;; +768;1/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +769;1/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +770;1/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +771;1/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +772;1/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +773;1/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +774;1/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +775;1/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +776;1/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +777;1/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +778;1/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +779;1/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +780;1/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +781;1/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +782;1/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +783;1/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +784;1/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +785;1/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +786;1/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +787;1/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +788;1/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +789;1/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +790;1/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +791;1/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +792;1/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +793;1/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +794;1/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +795;1/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +796;1/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +797;1/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +798;1/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +799;2/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +800;2/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +801;2/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +802;2/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +803;2/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +804;2/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +805;2/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +806;2/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +807;2/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +808;2/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +809;2/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +810;2/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +811;2/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +812;2/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +813;2/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +814;2/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +815;2/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +816;2/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +817;2/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +818;2/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +819;2/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +820;2/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +821;2/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +822;2/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +823;2/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +824;2/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +825;2/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +826;2/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +827;3/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +828;3/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +829;3/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +830;3/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +831;3/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +832;3/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +833;3/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +834;3/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +835;3/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +836;3/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +837;3/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +838;3/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +839;3/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +840;3/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +841;3/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +842;3/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +843;3/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +844;3/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +845;3/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +846;3/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +847;3/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +848;3/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +849;3/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +850;3/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +851;3/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +852;3/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +853;3/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +854;3/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +855;3/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +856;3/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +857;3/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +858;4/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +859;4/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +860;4/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +861;4/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +862;4/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +863;4/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +864;4/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +865;4/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +866;4/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +867;4/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +868;4/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +869;4/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +870;4/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +871;4/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +872;4/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +873;4/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +874;4/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +875;4/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +876;4/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +877;4/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +878;4/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +879;4/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +880;4/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +881;4/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +882;4/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +883;4/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +884;4/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +885;4/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +886;4/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +887;4/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +888;5/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +889;5/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +890;5/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +891;5/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +892;5/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +893;5/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +894;5/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +895;5/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +896;5/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +897;5/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +898;5/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +899;5/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +900;5/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +901;5/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +902;5/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +903;5/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +904;5/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +905;5/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +906;5/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +907;5/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +908;5/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +909;5/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +910;5/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +911;5/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +912;5/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +913;5/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +914;5/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +915;5/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +916;5/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +917;5/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +918;5/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +919;6/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +920;6/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +921;6/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +922;6/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +923;6/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +924;6/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +925;6/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +926;6/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +927;6/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +928;6/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +929;6/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +930;6/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +931;6/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +932;6/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +933;6/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +934;6/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +935;6/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +936;6/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +937;6/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +938;6/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +939;6/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +940;6/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +941;6/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +942;6/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +943;6/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +944;6/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +945;6/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +946;6/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +947;6/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +948;6/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +949;7/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +950;7/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +951;7/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +952;7/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +953;7/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +954;7/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +955;7/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +956;7/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +957;7/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +958;7/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +959;7/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +960;7/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +961;7/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +962;7/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +963;7/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +964;7/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +965;7/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +966;7/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +967;7/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +968;7/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +969;7/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +970;7/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +971;7/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +972;7/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +973;7/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +974;7/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +975;7/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +976;7/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +977;7/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +978;7/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +979;7/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +980;8/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +981;8/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +982;8/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +983;8/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +984;8/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +985;8/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +986;8/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +987;8/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +988;8/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +989;8/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +990;8/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +991;8/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +992;8/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +993;8/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +994;8/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +995;8/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +996;8/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +997;8/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +998;8/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +999;8/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1000;8/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1001;8/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1002;8/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1003;8/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1004;8/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1005;8/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1006;8/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1007;8/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1008;8/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1009;8/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1010;8/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1011;9/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1012;9/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1013;9/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1014;9/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1015;9/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1016;9/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1017;9/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1018;9/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1019;9/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1020;9/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1021;9/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1022;9/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1023;9/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1024;9/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1025;9/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1026;9/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1027;9/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1028;9/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1029;9/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1030;9/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1031;9/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1032;9/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1033;9/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1034;9/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1035;9/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1036;9/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1037;9/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1038;9/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1039;9/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1040;9/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1041;10/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1042;10/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1043;10/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1044;10/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1045;10/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1046;10/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1047;10/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1048;10/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1049;10/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1050;10/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1051;10/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1052;10/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1053;10/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1054;10/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1055;10/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1056;10/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1057;10/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1058;10/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1059;10/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1060;10/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1061;10/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1062;10/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1063;10/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1064;10/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1065;10/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1066;10/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1067;10/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1068;10/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1069;10/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1070;10/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1071;10/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1072;11/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1073;11/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1074;11/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1075;11/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1076;11/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1077;11/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1078;11/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1079;11/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1080;11/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1081;11/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1082;11/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1083;11/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1084;11/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1085;11/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1086;11/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1087;11/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1088;11/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1089;11/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1090;11/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1091;11/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1092;11/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1093;11/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1094;11/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1095;11/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1096;11/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1097;11/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1098;11/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1099;11/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1100;11/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1101;11/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1102;12/1/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1103;12/2/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1104;12/3/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1105;12/4/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1106;12/5/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1107;12/6/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1108;12/7/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1109;12/8/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1110;12/9/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1111;12/10/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1112;12/11/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1113;12/12/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1114;12/13/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1115;12/14/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1116;12/15/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1117;12/16/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1118;12/17/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1119;12/18/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1120;12/19/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1121;12/20/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1122;12/21/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1123;12/22/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1124;12/23/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1125;12/24/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1126;12/25/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1127;12/26/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1128;12/27/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1129;12/28/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1130;12/29/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1131;12/30/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1132;12/31/2021;Income;0;0;-1;0;6;#fcbaaa;0;-1;;; +1133;1/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1134;1/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1135;1/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1136;1/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1137;1/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1138;1/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1139;1/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1140;1/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1141;1/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1142;1/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1143;1/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1144;1/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1145;1/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1146;1/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1147;1/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1148;1/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1149;1/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1150;1/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1151;1/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1152;1/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1153;1/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1154;1/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1155;1/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1156;1/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1157;1/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1158;1/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1159;1/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1160;1/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1161;1/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1162;1/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1163;1/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1164;2/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1165;2/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1166;2/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1167;2/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1168;2/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1169;2/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1170;2/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1171;2/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1172;2/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1173;2/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1174;2/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1175;2/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1176;2/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1177;2/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1178;2/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1179;2/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1180;2/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1181;2/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1182;2/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1183;2/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1184;2/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1185;2/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1186;2/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1187;2/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1188;2/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1189;2/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1190;2/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1191;2/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1192;2/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1193;3/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1194;3/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1195;3/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1196;3/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1197;3/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1198;3/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1199;3/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1200;3/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1201;3/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1202;3/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1203;3/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1204;3/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1205;3/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1206;3/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1207;3/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1208;3/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1209;3/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1210;3/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1211;3/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1212;3/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1213;3/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1214;3/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1215;3/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1216;3/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1217;3/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1218;3/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1219;3/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1220;3/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1221;3/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1222;3/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1223;3/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1224;4/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1225;4/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1226;4/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1227;4/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1228;4/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1229;4/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1230;4/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1231;4/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1232;4/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1233;4/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1234;4/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1235;4/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1236;4/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1237;4/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1238;4/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1239;4/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1240;4/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1241;4/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1242;4/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1243;4/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1244;4/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1245;4/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1246;4/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1247;4/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1248;4/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1249;4/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1250;4/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1251;4/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1252;4/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1253;4/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1254;5/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1255;5/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1256;5/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1257;5/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1258;5/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1259;5/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1260;5/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1261;5/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1262;5/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1263;5/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1264;5/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1265;5/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1266;5/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1267;5/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1268;5/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1269;5/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1270;5/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1271;5/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1272;5/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1273;5/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1274;5/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1275;5/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1276;5/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1277;5/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1278;5/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1279;5/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1280;5/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1281;5/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1282;5/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1283;5/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1284;5/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1285;6/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1286;6/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1287;6/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1288;6/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1289;6/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1290;6/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1291;6/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1292;6/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1293;6/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1294;6/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1295;6/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1296;6/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1297;6/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1298;6/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1299;6/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1300;6/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1301;6/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1302;6/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1303;6/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1304;6/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1305;6/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1306;6/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1307;6/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1308;6/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1309;6/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1310;6/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1311;6/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1312;6/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1313;6/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1314;6/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1315;7/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1316;7/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1317;7/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1318;7/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1319;7/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1320;7/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1321;7/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1322;7/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1323;7/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1324;7/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1325;7/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1326;7/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1327;7/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1328;7/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1329;7/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1330;7/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1331;7/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1332;7/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1333;7/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1334;7/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1335;7/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1336;7/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1337;7/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1338;7/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1339;7/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1340;7/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1341;7/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1342;7/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1343;7/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1344;7/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1345;7/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1346;8/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1347;8/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1348;8/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1349;8/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1350;8/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1351;8/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1352;8/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1353;8/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1354;8/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1355;8/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1356;8/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1357;8/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1358;8/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1359;8/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1360;8/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1361;8/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1362;8/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1363;8/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1364;8/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1365;8/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1366;8/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1367;8/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1368;8/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1369;8/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1370;8/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1371;8/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1372;8/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1373;8/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1374;8/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1375;8/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1376;8/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1377;9/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1378;9/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1379;9/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1380;9/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1381;9/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1382;9/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1383;9/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1384;9/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1385;9/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1386;9/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1387;9/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1388;9/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1389;9/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1390;9/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1391;9/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1392;9/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1393;9/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1394;9/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1395;9/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1396;9/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1397;9/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1398;9/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1399;9/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1400;9/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1401;9/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1402;9/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1403;9/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1404;9/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1405;9/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1406;9/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1407;10/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1408;10/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1409;10/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1410;10/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1411;10/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1412;10/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1413;10/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1414;10/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1415;10/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1416;10/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1417;10/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1418;10/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1419;10/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1420;10/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1421;10/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1422;10/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1423;10/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1424;10/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1425;10/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1426;10/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1427;10/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1428;10/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1429;10/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1430;10/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1431;10/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1432;10/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1433;10/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1434;10/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1435;10/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1436;10/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1437;10/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1438;11/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1439;11/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1440;11/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1441;11/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1442;11/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1443;11/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1444;11/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1445;11/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1446;11/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1447;11/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1448;11/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1449;11/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1450;11/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1451;11/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1452;11/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1453;11/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1454;11/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1455;11/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1456;11/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1457;11/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1458;11/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1459;11/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1460;11/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1461;11/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1462;11/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1463;11/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1464;11/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1465;11/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1466;11/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1467;11/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1468;12/1/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1469;12/2/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1470;12/3/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1471;12/4/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1472;12/5/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1473;12/6/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1474;12/7/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1475;12/8/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1476;12/9/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1477;12/10/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1478;12/11/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1479;12/12/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1480;12/13/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1481;12/14/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1482;12/15/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1483;12/16/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1484;12/17/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1485;12/18/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1486;12/19/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1487;12/20/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1488;12/21/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1489;12/22/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1490;12/23/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1491;12/24/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1492;12/25/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1493;12/26/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1494;12/27/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1495;12/28/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1496;12/29/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1497;12/30/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; +1498;12/31/2020;Expense;1;0;-1;0;4;#fcbaaa;0;-1;;; \ No newline at end of file diff --git a/libdenaro/tests/DenaroTestAccount2.ofx b/libdenaro/tests/DenaroTestAccount2.ofx new file mode 100644 index 000000000..2221ca6b8 --- /dev/null +++ b/libdenaro/tests/DenaroTestAccount2.ofx @@ -0,0 +1,65 @@ +OFXHEADER:100 +DATA:OFXSGML +VERSION:102 +SECURITY:NONE +ENCODING:USASCII +CHARSET:1252 +COMPRESSION:NONE +OLDFILEUID:NONE +NEWFILEUID:NONE + + + + + + 0 + INFO + + 20230128000000 + FRA + + + + + 20230128000000 + + 0 + INFO + + + EUR + + 10278 + 06153 + 00099999999 + CHECKING + + + 20230127000000 + 20230129000000 + + DEBIT + 20230127 + 20230127 + -25.00 + Lunch + + + DEBIT + 20230128 + 20230128 + 300.00 + Pay day + + + DEBIT + 20230129 + 20230129 + -75.00 + Phone bill + + + + + + diff --git a/libdenaro/tests/DenaroTestAccount3.qif b/libdenaro/tests/DenaroTestAccount3.qif new file mode 100644 index 000000000..0465d037b --- /dev/null +++ b/libdenaro/tests/DenaroTestAccount3.qif @@ -0,0 +1,47 @@ +!Type:Cat +NJob +I +^ +NFood +E +^ +NHousing +E +^ +NMiscellaneous/Other +E +^ +NHealth/Medical +E +^ +NTransportation +E +^ +NPersonal +E +^ +NRecreation +E +^ +NUtilities +E +^ +NCharity +E +^ +NClothing +E +^ +!Type:Bank +D01/22/2023 +T600.00 +CX +PPay day +LPay +^ +D1/22/2023 +MSome food +T-50.00 +PYour Local Supermarket +LFood +^ diff --git a/libdenaro/tests/accounttests.cpp b/libdenaro/tests/accounttests.cpp new file mode 100644 index 000000000..d3d368889 --- /dev/null +++ b/libdenaro/tests/accounttests.cpp @@ -0,0 +1,139 @@ +#include +#include +#include +#include +#include "models/account.h" + +using namespace Nickvision::App; +using namespace Nickvision::Money::Shared::Models; + +class AccountTest : public testing::Test +{ +public: + static std::filesystem::path m_accountPath; + static std::unique_ptr m_account; + static std::string m_password; + + static void SetUpTestSuite() + { + Aura::getActive().init("org.nickvision.money", "Nickvision Denaro", "Denaro"); + m_account = std::make_unique(m_accountPath); + } + + static void TearDownTestSuite() + { + m_account.reset(); + std::filesystem::remove(m_accountPath); + } +}; + +std::filesystem::path AccountTest::m_accountPath = "account.nmoney"; +std::unique_ptr AccountTest::m_account = nullptr; +std::string AccountTest::m_password = "abc72356"; + +TEST_F(AccountTest, Login) +{ + ASSERT_FALSE(m_account->isEncrypted()); + ASSERT_TRUE(m_account->login("")); +} + +TEST_F(AccountTest, EncryptedAccount) +{ + ASSERT_TRUE(m_account->changePassword(m_password)); + ASSERT_TRUE(m_account->isEncrypted()); +} + +TEST_F(AccountTest, UpdateMetadata) +{ + AccountMetadata metadata{ m_account->getMetadata() }; + metadata.setName("Piggy Bank"); + metadata.setType(AccountType::Savings); + ASSERT_NO_THROW(m_account->setMetadata(metadata)); + ASSERT_TRUE(m_account->getMetadata().getName() == "Piggy Bank"); + ASSERT_TRUE(m_account->getMetadata().getType() == AccountType::Savings); +} + +TEST_F(AccountTest, ImportTestAccountCSV) +{ + ImportResult result{ m_account->importFromFile(Aura::getActive().getExecutableDirectory() / "DenaroTestAccount1.csv", {}, {}) }; + ASSERT_EQ(result.getNewTransactionIds().size(), 1498); + ASSERT_EQ(result.getNewGroupIds().size(), 2); + ASSERT_TRUE(m_account->getTotal() > 0); + ASSERT_TRUE(m_account->getIncome() != m_account->getExpense()); +} + +TEST_F(AccountTest, ExportTestAccountCSV) +{ + std::filesystem::path exportPath{ Aura::getActive().getExecutableDirectory() / "export.csv" }; + ASSERT_TRUE(m_account->exportToCSV(exportPath, {})); + ASSERT_TRUE(std::filesystem::exists(exportPath)); + std::filesystem::remove(exportPath); +} + +TEST_F(AccountTest, UpdateTransaction2) +{ + Transaction t{ m_account->getTransactions().at(2) }; + t.setDescription("New and improved description"); + t.setAmount(100); + ASSERT_TRUE(m_account->updateTransaction(t)); +} + +TEST_F(AccountTest, CheckUpdatedTransaction2) +{ + Transaction t{ m_account->getTransactions().at(2) }; + ASSERT_TRUE(t.getDescription() == "New and improved description"); + ASSERT_TRUE(t.getAmount() == 100); +} + +TEST_F(AccountTest, ImportTestAccountOFX) +{ + ImportResult result{ m_account->importFromFile(Aura::getActive().getExecutableDirectory() / "DenaroTestAccount2.ofx", {}, {}) }; + ASSERT_EQ(result.getNewTransactionIds().size(), 3); + const Transaction& t1{ m_account->getTransactions().at(result.getNewTransactionIds()[0]) }; + const Transaction& t2{ m_account->getTransactions().at(result.getNewTransactionIds()[1]) }; + const Transaction& t3{ m_account->getTransactions().at(result.getNewTransactionIds()[2]) }; + ASSERT_EQ(t1.getDescription(), "Lunch"); + ASSERT_EQ(t1.getAmount(), 25.0); + ASSERT_EQ(t1.getType(), TransactionType::Expense); + ASSERT_EQ(t1.getDate(), boost::gregorian::date(2023, 1, 27)); + ASSERT_EQ(t2.getDescription(), "Pay day"); + ASSERT_EQ(t2.getAmount(), 300); + ASSERT_EQ(t2.getType(), TransactionType::Income); + ASSERT_EQ(t2.getDate(), boost::gregorian::date(2023, 1, 28)); + ASSERT_EQ(t3.getDescription(), "Phone bill"); + ASSERT_EQ(t3.getAmount(), 75.0); + ASSERT_EQ(t3.getType(), TransactionType::Expense); + ASSERT_EQ(t3.getDate(), boost::gregorian::date(2023, 1, 29)); +} + +TEST_F(AccountTest, ImportTestAccountQIF) +{ + ImportResult result{ m_account->importFromFile(Aura::getActive().getExecutableDirectory() / "DenaroTestAccount3.qif", {}, {}) }; + ASSERT_EQ(result.getNewGroupIds().size(), 1); + const Group& g1{ m_account->getGroups().at(result.getNewGroupIds()[0]) }; + ASSERT_EQ(g1.getName(), "Food"); + ASSERT_EQ(result.getNewTransactionIds().size(), 2); + const Transaction& t1{ m_account->getTransactions().at(result.getNewTransactionIds()[0]) }; + const Transaction& t2{ m_account->getTransactions().at(result.getNewTransactionIds()[1]) }; + ASSERT_EQ(t1.getDescription(), "Pay day"); + ASSERT_EQ(t1.getAmount(), 600); + ASSERT_EQ(t1.getType(), TransactionType::Income); + ASSERT_EQ(t1.getDate(), boost::gregorian::date(2023, 1, 22)); + ASSERT_EQ(t1.getGroupId(), 1); + ASSERT_EQ(t2.getDescription(), "Some food"); + ASSERT_EQ(t2.getAmount(), 50); + ASSERT_EQ(t2.getType(), TransactionType::Expense); + ASSERT_EQ(t2.getDate(), boost::gregorian::date(2023, 1, 22)); + ASSERT_EQ(t2.getGroupId(), g1.getId()); +} + +TEST_F(AccountTest, IncomeExpensePieGraph) +{ +#ifdef _WIN32 + if(!Aura::getActive().getEnvVar("GITHUB_ACTIONS").empty()) + { + return; + } +#endif + ASSERT_FALSE(m_account->generateGraph(GraphType::IncomeExpensePie, false).empty()); +} diff --git a/libdenaro/tests/colortests.cpp b/libdenaro/tests/colortests.cpp new file mode 100644 index 000000000..2c7a3d150 --- /dev/null +++ b/libdenaro/tests/colortests.cpp @@ -0,0 +1,78 @@ +#include +#include "models/color.h" + +using namespace Nickvision::Money::Shared::Models; + +TEST(ColorTests, Color1) +{ + Color c{ "rgb(123,234,3)" }; + ASSERT_TRUE(c); + ASSERT_EQ(c.getR(), 123); + ASSERT_EQ(c.getG(), 234); + ASSERT_EQ(c.getB(), 3); + ASSERT_EQ(c.getA(), 255); +} + +TEST(ColorTests, Color2) +{ + Color c{ "123,234,3" }; + ASSERT_TRUE(c); + ASSERT_EQ(c.getR(), 123); + ASSERT_EQ(c.getG(), 234); + ASSERT_EQ(c.getB(), 3); + ASSERT_EQ(c.getA(), 255); +} + +TEST(ColorTests, Color3) +{ + Color c{ "rgba(56,126,206,100)" }; + ASSERT_TRUE(c); + ASSERT_EQ(c.getR(), 56); + ASSERT_EQ(c.getG(), 126); + ASSERT_EQ(c.getB(), 206); + ASSERT_EQ(c.getA(), 100); +} + +TEST(ColorTests, Color4) +{ + Color c{ "56,126,206,100" }; + ASSERT_TRUE(c); + ASSERT_EQ(c.getR(), 56); + ASSERT_EQ(c.getG(), 126); + ASSERT_EQ(c.getB(), 206); + ASSERT_EQ(c.getA(), 100); +} + +TEST(ColorTests, Color5) +{ + Color c{ "#96f542aa" }; + ASSERT_TRUE(c); + ASSERT_EQ(c.getR(), 150); + ASSERT_EQ(c.getG(), 245); + ASSERT_EQ(c.getB(), 66); + ASSERT_EQ(c.getA(), 170); +} + +TEST(ColorTests, Color6) +{ + Color c{ "#96f542uu" }; + ASSERT_FALSE(c); +} + +TEST(ColorTests, Color7) +{ + Color c{ "270,100,6" }; + ASSERT_FALSE(c); +} + +TEST(ColorTests, RGBAString1) +{ + Color c{ "#96f542aa" }; + ASSERT_EQ(c.toRGBAString(true), "rgba(150,245,66,170)"); +} + +TEST(ColorTests, RGBHexString1) +{ + Color c{ "#96f542aa" }; + ASSERT_EQ(c.toRGBHexString(), "#96f542"); +} \ No newline at end of file diff --git a/libdenaro/tests/currencyconversiontests.cpp b/libdenaro/tests/currencyconversiontests.cpp new file mode 100644 index 000000000..8023a6708 --- /dev/null +++ b/libdenaro/tests/currencyconversiontests.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include "models/currencyconversion.h" +#include "models/currencyconversionservice.h" + +using namespace Nickvision::App; +using namespace Nickvision::Filesystem; +using namespace Nickvision::Money::Shared::Models; + +class CurrencyConversionTest : public testing::Test +{ +public: + static void SetUpTestSuite() + { + Aura::getActive().init("org.nickvision.money", "Nickvision Denaro", "Denaro"); + } +}; + +TEST_F(CurrencyConversionTest, ServiceGetRates) +{ + std::map rates{ CurrencyConversionService::getConversionRates("USD") }; + ASSERT_TRUE(rates.size() > 0); + ASSERT_TRUE(std::filesystem::exists(UserDirectories::getApplicationCache() / ("currency_USD.json"))); +} + +TEST_F(CurrencyConversionTest, ServiceConvert) +{ + std::optional conversion{ CurrencyConversionService::convert("USD", 2.0, "EUR") }; + ASSERT_TRUE(conversion.has_value()); + ASSERT_EQ(conversion->getSourceCurrency(), "USD"); + ASSERT_EQ(conversion->getResultCurrency(), "EUR"); + ASSERT_EQ(conversion->getSourceAmount(), 2.0); + ASSERT_TRUE(conversion->getResultAmount() > 0); +} \ No newline at end of file diff --git a/libdenaro/tests/currencytests.cpp b/libdenaro/tests/currencytests.cpp new file mode 100644 index 000000000..656e2aec8 --- /dev/null +++ b/libdenaro/tests/currencytests.cpp @@ -0,0 +1,73 @@ +#include +#include "helpers/currencyhelpers.h" + +using namespace Nickvision::Money::Shared; +using namespace Nickvision::Money::Shared::Models; + +TEST(CurrencyHelpers, GetUSCurrency) +{ + Currency currency{ CurrencyHelpers::getSystemCurrency() }; + ASSERT_EQ(currency.getSymbol(), "$"); + ASSERT_EQ(currency.getCode(), "USD"); + ASSERT_EQ(currency.getDecimalSeparator(), '.'); + ASSERT_EQ(currency.getGroupSeparator(), ','); + ASSERT_EQ(currency.getAmountStyle(), Models::AmountStyle::SymbolNumber); +} + +TEST(CurrencyHelpers, ToUSAmountString1) +{ + ASSERT_EQ(CurrencyHelpers::toAmountString(12347.89, CurrencyHelpers::getSystemCurrency()), "$12,347.89"); +} + +TEST(CurrencyHelpers, ToUSAmountString2) +{ + ASSERT_EQ(CurrencyHelpers::toAmountString(100, CurrencyHelpers::getSystemCurrency()), "$100.00"); +} + +TEST(CurrencyHelpers, ToUSAmountString3) +{ + ASSERT_EQ(CurrencyHelpers::toAmountString(5.50, CurrencyHelpers::getSystemCurrency(), false), "5.50"); +} + +TEST(CurrencyHelpers, FromUSAmountString1) +{ + ASSERT_EQ(CurrencyHelpers::toAmount("$12,347.89", CurrencyHelpers::getSystemCurrency()), 12347.89); +} + +TEST(CurrencyHelpers, ToCustomCurrency1) +{ + Currency currency{ "#", "HAS" }; + currency.setDecimalSeparator(','); + currency.setGroupSeparator('.'); + currency.setAmountStyle(Models::AmountStyle::NumberSpaceSymbol); + ASSERT_TRUE(currency.validate() == CurrencyCheckStatus::Valid); + ASSERT_EQ(CurrencyHelpers::toAmountString(12347.89, currency), "12.347,89 #"); + ASSERT_EQ(CurrencyHelpers::toAmountString(12347.89, currency, false), "12.347,89"); +} + +TEST(CurrencyHelpers, FromCustomCurrency1) +{ + Currency currency{ "#", "HAS" }; + currency.setDecimalSeparator(','); + currency.setGroupSeparator('.'); + currency.setAmountStyle(Models::AmountStyle::NumberSpaceSymbol); + ASSERT_EQ(CurrencyHelpers::toAmount("1.567,21 #", currency), 1567.21); +} + +TEST(CurrencyHelpers, ToCustomCurrency2) +{ + Currency currency{ "@", "HAS" }; + currency.setDecimalSeparator('-'); + currency.setGroupSeparator('*'); + currency.setAmountStyle(Models::AmountStyle::SymbolSpaceNumber); + ASSERT_TRUE(currency.validate() == CurrencyCheckStatus::Valid); + ASSERT_EQ(CurrencyHelpers::toAmountString(2765.9, currency), "@ 2*765-90"); +} + +TEST(CurrencyHelpers, ToCustomCurrency3) +{ + Currency currency{ "@", "HAS" }; + currency.setDecimalSeparator('-'); + currency.setGroupSeparator('-'); + ASSERT_TRUE(currency.validate() == CurrencyCheckStatus::SameSeparators); +} \ No newline at end of file diff --git a/libdenaro/tests/datetests.cpp b/libdenaro/tests/datetests.cpp new file mode 100644 index 000000000..179d81b71 --- /dev/null +++ b/libdenaro/tests/datetests.cpp @@ -0,0 +1,48 @@ +#include +#include "helpers/datehelpers.h" + +using namespace Nickvision::Money::Shared; + +TEST(DateTests, FromUs1) +{ + boost::gregorian::date d{ DateHelpers::fromUSDateString("12/3/2056") }; + ASSERT_EQ(d.month(), 12); + ASSERT_EQ(d.day(), 3); + ASSERT_EQ(d.year(), 2056); +} + +TEST(DateTests, FromUs2) +{ + boost::gregorian::date d{ DateHelpers::fromUSDateString("4/25/2024") }; + ASSERT_EQ(d.month(), 4); + ASSERT_EQ(d.day(), 25); + ASSERT_EQ(d.year(), 2024); +} + +TEST(DateTests, ToUs1) +{ + boost::gregorian::date d{ 1995, 4, 5 }; + ASSERT_EQ(DateHelpers::toUSDateString(d), "4/5/1995"); +} + +TEST(DateTests, ToUs2) +{ + boost::gregorian::date d{ 2015, 10, 14 }; + ASSERT_EQ(DateHelpers::toUSDateString(d), "10/14/2015"); +} + +TEST(DateTests, ToUs3) +{ + boost::gregorian::date d{ 1995, 4, 5 }; + ASSERT_EQ(DateHelpers::toUSDateString(d, true), "04/05/1995"); +} + +TEST(DateTests, ToIso1) +{ + ASSERT_EQ(DateHelpers::toIsoDateString("10/14/2015"), "20151014"); +} + +TEST(DateTests, ToIso2) +{ + ASSERT_EQ(DateHelpers::toIsoDateString("4/5/1995"), "19950405"); +} \ No newline at end of file diff --git a/libdenaro/tests/main.cpp b/libdenaro/tests/main.cpp new file mode 100644 index 000000000..b25ddfc27 --- /dev/null +++ b/libdenaro/tests/main.cpp @@ -0,0 +1,7 @@ +#include + +int main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/libdenaro/tests/receipttests.cpp b/libdenaro/tests/receipttests.cpp new file mode 100644 index 000000000..6571fdeef --- /dev/null +++ b/libdenaro/tests/receipttests.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include "models/receipt.h" + +using namespace Nickvision; +using namespace Nickvision::Money::Shared::Models; + +class ReceiptTest : public testing::Test +{ +public: + static std::filesystem::path m_receiptPath; + static std::filesystem::path m_receiptPath2; + static std::unique_ptr m_receipt; + + static void SetUpTestSuite() + { + WebHelpers::downloadFile("https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/280px-PNG_transparency_demonstration_1.png", m_receiptPath); + } + + static void TearDownTestSuite() + { + std::filesystem::remove(m_receiptPath); + std::filesystem::remove(m_receiptPath2); + } +}; + +std::filesystem::path ReceiptTest::m_receiptPath = "a.png"; +std::filesystem::path ReceiptTest::m_receiptPath2 = "b.png"; +std::unique_ptr ReceiptTest::m_receipt = nullptr; + +TEST_F(ReceiptTest, SetupReceiptObject) +{ + ASSERT_NO_THROW(m_receipt = std::make_unique(m_receiptPath)); +} + +TEST_F(ReceiptTest, EnsureReceiptObject) +{ + ASSERT_TRUE(m_receipt->operator bool()); + ASSERT_EQ(m_receipt->getType(), ReceiptType::PNG); + ASSERT_TRUE(!m_receipt->toString().empty()); +} + +TEST_F(ReceiptTest, SaveToDisk) +{ + ASSERT_NO_THROW(m_receipt->saveToDisk(m_receiptPath2)); +} diff --git a/org.nickvision.money.gnome/CMakeLists.txt b/org.nickvision.money.gnome/CMakeLists.txt new file mode 100644 index 000000000..7843c6757 --- /dev/null +++ b/org.nickvision.money.gnome/CMakeLists.txt @@ -0,0 +1,71 @@ +if(LINUX) + add_executable(org.nickvision.money.gnome + "src/controls/currencyconverterpage.cpp" + "src/helpers/builder.cpp" + "src/helpers/dialogbase.cpp" + "src/views/accountpage.cpp" + "src/views/accountsettingsdialog.cpp" + "src/views/newaccountdialog.cpp" + "src/views/mainwindow.cpp" + "src/views/preferencesdialog.cpp" + "src/application.cpp" + "src/main.cpp") + target_include_directories(org.nickvision.money.gnome PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include") + find_package(PkgConfig REQUIRED) + pkg_check_modules(gtk REQUIRED IMPORTED_TARGET gtk4) + pkg_check_modules(adwaita REQUIRED IMPORTED_TARGET libadwaita-1) + pkg_check_modules(libxmlpp REQUIRED IMPORTED_TARGET libxml++-5.0) + target_link_libraries(org.nickvision.money.gnome PRIVATE libdenaro PkgConfig::gtk PkgConfig::adwaita PkgConfig::libxmlpp) + + add_custom_target(gnome_commands ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/__gnome.h") + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__gnome.h" "${CMAKE_CURRENT_BINARY_DIR}/gnome.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/gnome.h") + + find_program(GLIB_COMPULE_RESOURCES_EXECUTABLE glib-compile-resources) + if(GLIB_COMPULE_RESOURCES_EXECUTABLE) + add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${GLIB_COMPULE_RESOURCES_EXECUTABLE}" --sourcedir "${CMAKE_CURRENT_SOURCE_DIR}/resources" "${CMAKE_CURRENT_SOURCE_DIR}/resources/org.nickvision.money.gresource.xml" --target="${CMAKE_CURRENT_BINARY_DIR}/org.nickvision.money.gresource") + endif() + + find_program(BLUEPRINT_COMPILER_EXECUTABLE blueprint-compiler) + if(BLUEPRINT_COMPILER_EXECUTABLE) + add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${BLUEPRINT_COMPILER_EXECUTABLE}" batch-compile "${CMAKE_CURRENT_BINARY_DIR}/ui" "${CMAKE_CURRENT_SOURCE_DIR}/blueprints" "${CMAKE_CURRENT_SOURCE_DIR}/blueprints/*.blp") + endif() + + if(HAS_GETTEXT) + foreach(LINGUA IN ITEMS ${LINGUAS}) + add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}") + add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/${SHORT_NAME}.mo") + endforeach() + endif() + + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/resources/${PROJECT_NAME}.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.desktop" @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/resources/${PROJECT_NAME}.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}" @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/resources/${PROJECT_NAME}.metainfo.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.metainfo.xml" @ONLY) + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/" DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.gnome" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.desktop" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/${PROJECT_NAME}.extension.xml" DESTINATION "${CMAKE_INSTALL_DATADIR}/mime/packages") + install(FILES "${CMAKE_SOURCE_DIR}/resources/${PROJECT_NAME}.svg" "${CMAKE_SOURCE_DIR}/resources/${PROJECT_NAME}-devel.svg" DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps") + install(FILES "${CMAKE_SOURCE_DIR}/resources/${PROJECT_NAME}-symbolic.svg" DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/symbolic/apps") + + install(DIRECTORY "${CMAKE_SOURCE_DIR}/docs/yelp/C/" DESTINATION "${CMAKE_INSTALL_DATADIR}/help/C/${SHORT_NAME}") + foreach(LINGUA IN ITEMS ${DOC_LINGUAS}) + install(DIRECTORY "${CMAKE_SOURCE_DIR}/docs/yelp/${LINGUA}/" DESTINATION "${CMAKE_INSTALL_DATADIR}/help/${LINGUA}/${SHORT_NAME}") + endforeach() + + find_program(GTK_UPDATE_ICON_CACHE_EXECUTABLE gtk-update-icon-cache) + if(GTK_UPDATE_ICON_CACHE_EXECUTABLE) + install(CODE "execute_process(COMMAND ${GTK_UPDATE_ICON_CACHE_EXECUTABLE})") + endif() + + find_program(UPDATE_DESKTOP_DATABASE_EXECUTABLE update-desktop-database) + if(UPDATE_DESKTOP_DATABASE_EXECUTABLE) + install(CODE "execute_process(COMMAND ${UPDATE_DESKTOP_DATABASE_EXECUTABLE})") + endif() + + find_program(UPDATE_MIME_DATABASE_EXECUTABLE update-mime-database) + if(UPDATE_MIME_DATABASE_EXECUTABLE) + install(CODE "execute_process(COMMAND ${UPDATE_MIME_DATABASE_EXECUTABLE} ${CMAKE_INSTALL_FULL_DATADIR}/mime)") + endif() +endif() diff --git a/org.nickvision.money.gnome/blueprints/account_page.blp b/org.nickvision.money.gnome/blueprints/account_page.blp new file mode 100644 index 000000000..cc649b7c7 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/account_page.blp @@ -0,0 +1,183 @@ +using Gtk 4.0; +using Adw 1; + +menu importExportMenu { + section { + item(_("Import from File"), "account.import") + } + + section { + item(_("Export to CSV"), "account.exportCSV") + item(_("Export to PDF"), "account.exportPDF") + } +} + +Adw.ViewStack root { + Adw.ViewStackPage { + title: _("Overview"); + icon-name: "newspaper-symbolic"; + child: Adw.Clamp { + margin-bottom: 12; + child: Gtk.Box { + orientation: vertical; + spacing: 6; + + Adw.PreferencesGroup overviewGroup { + header-suffix: Gtk.Box { + orientation: horizontal; + + Gtk.Button { + icon-name: "send-alt-symbolic"; + tooltip-text: _("Transfer Money"); + action-name: "account.transfer"; + } + + Gtk.MenuButton { + icon-name: "mail-send-receive-symbolic"; + tooltip-text: _("Import and Export"); + direction: none; + menu-model: importExportMenu; + } + + Gtk.Button { + action-name: "account.settings"; + tooltip-text: _("Account Settings"); + + Adw.ButtonContent { + icon-name: "wrench-wide-symbolic"; + label: _("Settings"); + } + } + + styles ["toolbar"] + }; + + Adw.ActionRow { + title: _("Total"); + + Gtk.Label overviewTotalLabel { + valign: center; + } + } + + Adw.ActionRow { + title: _("Income"); + + [prefix] + Gtk.Image { + icon-name: "list-add-symbolic"; + } + + Gtk.Label overviewIncomeLabel { + valign: center; + } + } + + Adw.ActionRow { + title: _("Expense"); + + [prefix] + Gtk.Image { + icon-name: "list-remove-symbolic"; + } + + Gtk.Label overviewExpenseLabel { + valign: center; + } + } + } + + Adw.PreferencesGroup remindersGroup { + title: _("Reminders"); + } + + Adw.PreferencesGroup groupsGroup { + title: _("Groups"); + header-suffix: Gtk.Box { + orientation: horizontal; + + Gtk.Button { + action-name: "account.newGroup"; + tooltip-text: _("New Group"); + + Adw.ButtonContent { + icon-name: "list-add-symbolic"; + label: _("New"); + } + } + + styles ["toolbar"] + }; + } + }; + }; + } + + Adw.ViewStackPage { + title: _("Transactions"); + icon-name: "money-symbolic"; + child: Gtk.Box { + + }; + } + + Adw.ViewStackPage { + title: _("Visualize"); + icon-name: "profit-symbolic"; + child: Gtk.Box { + orientation: vertical; + spacing: 6; + margin-start: 12; + margin-top: 12; + margin-end: 12; + margin-bottom: 12; + + Gtk.Overlay { + [overlay] + Gtk.Button { + margin-start: 6; + icon-name: "left-symbolic"; + action-name: "account.graphPrevious"; + halign: start; + valign: center; + tooltip-text: _("Previous"); + + styles ["circular", "flat"] + } + + [overlay] + Gtk.Button { + margin-end: 6; + icon-name: "right-symbolic"; + action-name: "account.graphNext"; + halign: end; + valign: center; + tooltip-text: _("Next"); + + styles ["circular", "flat"] + } + + Adw.Carousel carousel { + hexpand: true; + vexpand: true; + + Gtk.Image incomeExpensePie { } + + Gtk.Image incomeExpensePerGroup { } + + Gtk.Image incomeExpenseOverTime { } + + Gtk.Image incomeByGroup { } + + Gtk.Image expenseByGroup { } + + styles ["card"] + } + } + + Adw.CarouselIndicatorDots { + carousel: carousel; + } + }; + } +} diff --git a/org.nickvision.money.gnome/blueprints/account_settings_dialog.blp b/org.nickvision.money.gnome/blueprints/account_settings_dialog.blp new file mode 100644 index 000000000..8cff417e5 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/account_settings_dialog.blp @@ -0,0 +1,160 @@ +using Gtk 4.0; +using Adw 1; + +Adw.PreferencesDialog root { + content-height: 500; + search-enabled: true; + title: _("Account Settings"); + + Adw.PreferencesPage { + title: _("Account"); + icon-name: "wallet2-symbolic"; + Adw.PreferencesGroup { + Adw.EntryRow accountNameRow { + title: _("Account Name"); + } + + Adw.ComboRow accountTypeRow { + title: _("Account Type"); + model: Gtk.StringList { + strings [_("Checking"), _("Savings"), _("Business")] + }; + } + } + + Adw.PreferencesGroup { + Adw.ComboRow transactionTypeRow { + title: _("Default Transaction Type"); + model: Gtk.StringList { + strings [_("Income"), _("Expense")] + }; + } + + Adw.ComboRow transactionRemindersRow { + title: _("Transaction Reminders Threshold"); + subtitle: _("Determines how far in advanced Denaro should remind users of upcoming transactions in the account."); + subtitle-lines: 4; + model: Gtk.StringList { + strings [_("Never"), _("One Day Before"), _("One Week Before"), _("One Month Before"), _("Two Months Before")] + }; + } + } + } + + Adw.PreferencesPage { + title: _("Currency"); + icon-name: "money-symbolic"; + + Adw.PreferencesGroup { + Adw.ActionRow systemCurrencyRow { + use-markup: true; + } + } + + Adw.PreferencesGroup { + Adw.ExpanderRow customCurrencyRow { + title: _("Use Custom Currency"); + show-enable-switch: true; + enable-expansion: false; + + Adw.EntryRow customSymbolRow { + title: _("Symbol"); + } + + Adw.EntryRow customCodeRow { + title: _("Code"); + } + + Adw.ComboRow customDecimalSeparatorRow { + title: _("Decimal Separator"); + model: Gtk.StringList { + strings [" . ", " , ", _("Custom")] + }; + + [suffix] + Gtk.Entry customDecimalSeparatorEntry { + visible: false; + valign: center; + max-length: 1; + max-width-chars: 4; + } + } + + Adw.ComboRow customGroupSeparatorRow { + title: _("Group Separator"); + model: Gtk.StringList { + strings [" . ", " , ", " ' ", _("None"), _("Custom")] + }; + + [suffix] + Gtk.Entry customGroupSeparatorEntry { + visible: false; + valign: center; + max-length: 1; + max-width-chars: 4; + } + } + + Adw.ComboRow customDecimalDigitsRow { + title: _("Decimal Digits"); + model: Gtk.StringList { + strings [_("Two"), _("Three"), _("Four"), _("Five"), _("Six")] + }; + } + + Adw.ComboRow customAmountStyleRow { + title: _("Amount Display Style"); + subtitle: _("$ is the currency's symbol."); + subtitle-lines: 2; + model: Gtk.StringList { + strings ["$100", "100$", "$ 100", "100 $"] + }; + } + } + } + } + + Adw.PreferencesPage { + title: _("Password"); + icon-name: "dialog-password-symbolic"; + + Adw.PreferencesGroup { + description: _("If the password is lost, there is no way to restore the file!"); + + Adw.PasswordEntryRow newPasswordRow { + title: _("New Password"); + + styles ["error"] + } + + Adw.PasswordEntryRow newPasswordConfirmRow { + title: _("Confirm Password"); + } + } + + Adw.PreferencesGroup { + Adw.ActionRow changePasswordRow { + title: _("Change Password"); + sensitive: false; + activatable-widget: changePasswordImage; + + [suffix] + Gtk.Image changePasswordImage { + icon-name: "check-plain-symbolic"; + } + } + + Adw.ActionRow removePasswordRow { + title: _("Remove Current Password"); + activatable-widget: removePasswordImage; + + [suffix] + Gtk.Image removePasswordImage { + icon-name: "cross-symbolic"; + } + + styles ["destructive-action"] + } + } + } +} diff --git a/org.nickvision.money.gnome/blueprints/currency_converter_page.blp b/org.nickvision.money.gnome/blueprints/currency_converter_page.blp new file mode 100644 index 000000000..7d6a4e622 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/currency_converter_page.blp @@ -0,0 +1,66 @@ +using Gtk 4.0; +using Adw 1; + +Adw.Clamp root { + maximum-size: 600; + + child: Adw.ToastOverlay toastOverlay { + Gtk.Box { + orientation: vertical; + spacing: 24; + margin-start: 24; + margin-end: 24; + margin-bottom: 24; + + Adw.PreferencesGroup { + title: _("Currency"); + + header-suffix: Gtk.Box { + orientation: horizontal; + spacing: 6; + + Gtk.Button switchButton { + valign: center; + tooltip-text: _("Switch Currencies"); + + Adw.ButtonContent { + label: _("Switch"); + icon-name: "update-symbolic"; + } + + styles ["flat"] + } + }; + + Adw.ComboRow sourceCurrencyRow { + title: _("Source"); + } + + Adw.ComboRow resultCurrencyRow { + title: _("Result"); + } + } + + Adw.PreferencesGroup { + title: _("Amount"); + + Adw.EntryRow sourceAmountRow { } + + Adw.ActionRow resultAmountRow { + subtitle-selectable: true; + + [suffix] + Gtk.Button copyResultButton { + valign: center; + tooltip-text: _("Copy Result Amount"); + icon-name: "edit-copy-symbolic"; + + styles ["flat"] + } + + styles ["property"] + } + } + } + }; +} \ No newline at end of file diff --git a/org.nickvision.money.gnome/blueprints/main_window.blp b/org.nickvision.money.gnome/blueprints/main_window.blp new file mode 100644 index 000000000..1ffab0093 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/main_window.blp @@ -0,0 +1,389 @@ +using Gtk 4.0; +using Adw 1; + +menu mainMenu { + item(_("Preferences"), "win.preferences") + item(_("Keyboard Shortcuts"), "win.keyboardShortcuts") + item(_("Help"), "win.help") + item(_("About Denaro"), "win.about") +} + +Adw.ApplicationWindow root { + width-request: 360; + height-request: 200; + default-width: 900; + default-height: 700; + + Adw.Breakpoint breakpoint { + condition ("max-width: 400sp") + + setters { + navView.collapsed: true; + contentHeaderBar.title-widget: null; + contentSwitcherBar.reveal: true; + } + } + + content: Adw.NavigationSplitView navView { + show-content: true; + + sidebar: Adw.NavigationPage navPageSidebar { + tag: "sidebar"; + + child: Adw.ToolbarView { + [top] + Adw.HeaderBar { + [start] + Gtk.MenuButton { + direction: none; + icon-name: "wallet2-symbolic"; + tooltip-text: _("Account Menu"); + popover: Gtk.Popover accountMenuPopover { + child: Gtk.Box { + orientation: vertical; + spacing: 12; + margin-start: 6; + margin-top: 6; + margin-end: 6; + margin-bottom: 6; + width-request: 320; + + Gtk.Box { + orientation: horizontal; + spacing: 6; + + Gtk.Label { + halign: start; + hexpand: true; + label: _("Recents"); + + styles ["title-4"] + } + + Gtk.Box { + orientation: horizontal; + + Gtk.Button { + icon-name: "document-new-symbolic"; + tooltip-text: _("New Account (Ctrl+N)"); + action-name: "win.newAccount"; + } + + Gtk.Button { + tooltip-text: _("Open Account (Ctrl+O)"); + action-name: "win.openAccount"; + + Adw.ButtonContent { + label: _("Open"); + icon-name: "document-open-symbolic"; + } + + styles ["suggested-action"] + } + + styles ["linked"] + } + } + + Adw.PreferencesGroup { + Adw.ActionRow noRecentAccountsPopoverRow { + title: _("No Recent Accounts"); + + [prefix] + Gtk.Image { + icon-name: "document-open-recent-symbolic"; + } + } + + Adw.ActionRow recentAccount1PopoverRow { + activatable-widget: recentAccount1PopoverImg; + + [prefix] + Gtk.Image recentAccount1PopoverImg { + icon-name: "wallet2-symbolic"; + } + + [suffix] + Gtk.Button removeRecentAccount1PopoverButton { + valign: center; + icon-name: "cross-symbolic"; + tooltip-text: _("Remove"); + + styles ["flat"] + } + } + + Adw.ActionRow recentAccount2PopoverRow { + activatable-widget: recentAccount2PopoverImg; + + [prefix] + Gtk.Image recentAccount2PopoverImg { + icon-name: "wallet2-symbolic"; + } + + [suffix] + Gtk.Button removeRecentAccount2PopoverButton { + valign: center; + icon-name: "cross-symbolic"; + tooltip-text: _("Remove"); + + styles ["flat"] + } + } + + Adw.ActionRow recentAccount3PopoverRow { + activatable-widget: recentAccount3PopoverImg; + + [prefix] + Gtk.Image recentAccount3PopoverImg { + icon-name: "wallet2-symbolic"; + } + + [suffix] + Gtk.Button removeRecentAccount3PopoverButton { + valign: center; + icon-name: "cross-symbolic"; + tooltip-text: _("Remove"); + + styles ["flat"] + } + } + } + }; + }; + } + + [end] + Gtk.MenuButton { + direction: none; + menu-model: mainMenu; + tooltip-text: _("Main Menu"); + primary: true; + } + } + + content: Gtk.ScrolledWindow { + hscrollbar-policy: never; + vscrollbar-policy: automatic; + + Gtk.ListBox listNavItems { + Gtk.Box { + margin-start: 6; + margin-top: 6; + margin-end: 6; + margin-bottom: 6; + orientation: horizontal; + spacing: 12; + + Gtk.Image { + icon-name: "user-home-symbolic"; + } + + Gtk.Label { + label: _("Home"); + } + } + + Gtk.Box { + margin-start: 6; + margin-top: 6; + margin-end: 6; + margin-bottom: 6; + orientation: horizontal; + spacing: 12; + + Gtk.Image { + icon-name: "bank-symbolic"; + } + + Gtk.Label { + label: _("Currency Converter"); + } + } + + Gtk.ListBoxRow { + selectable: false; + activatable: false; + + Gtk.Label navAccountsLabel { + halign: start; + label: _("Accounts"); + + styles ["heading"] + } + } + + Gtk.Box { + margin-start: 6; + margin-top: 6; + margin-end: 6; + margin-bottom: 6; + orientation: horizontal; + spacing: 12; + + Gtk.Image { + icon-name: "shell-overview-symbolic"; + } + + Gtk.Label { + label: _("Dashboard"); + } + } + + styles ["navigation-sidebar"] + } + }; + }; + }; + + content: Adw.NavigationPage navPageContent { + tag: "content"; + + child: Adw.ToolbarView { + [top] + Adw.HeaderBar contentHeaderBar {} + + [bottom] + Adw.ViewSwitcherBar contentSwitcherBar {} + + content: Adw.ToastOverlay toastOverlay { + child: Gtk.ScrolledWindow { + hscrollbar-policy: automatic; + vscrollbar-policy: automatic; + + child: Adw.ViewStack viewStack { + hexpand: true; + vexpand: true; + + Adw.ViewStackPage { + name: "home"; + child: Adw.StatusPage statusPageHome { + icon-name: "org.nickvision.money"; + description: _("Create or open an account to get started. You may also drag a file into the app from your file browser"); + child: Adw.Clamp { + maximum-size: 420; + + Gtk.Box { + halign: fill; + hexpand: true; + orientation: vertical; + spacing: 6; + + Adw.PreferencesGroup { + Adw.ActionRow noRecentAccountsRow { + title: _("No Recent Accounts"); + + [prefix] + Gtk.Image { + icon-name: "document-open-recent-symbolic"; + } + } + + Adw.ActionRow recentAccount1Row { + activatable-widget: recentAccount1Img; + + [prefix] + Gtk.Image recentAccount1Img { + icon-name: "wallet2-symbolic"; + } + + [suffix] + Gtk.Button removeRecentAccount1Button { + valign: center; + icon-name: "cross-symbolic"; + tooltip-text: _("Remove"); + + styles ["flat"] + } + } + + Adw.ActionRow recentAccount2Row { + activatable-widget: recentAccount2Img; + + [prefix] + Gtk.Image recentAccount2Img { + icon-name: "wallet2-symbolic"; + } + + [suffix] + Gtk.Button removeRecentAccount2Button { + valign: center; + icon-name: "cross-symbolic"; + tooltip-text: _("Remove"); + + styles ["flat"] + } + } + + Adw.ActionRow recentAccount3Row { + activatable-widget: recentAccount3Img; + + [prefix] + Gtk.Image recentAccount3Img { + icon-name: "wallet2-symbolic"; + } + + [suffix] + Gtk.Button removeRecentAccount3Button { + valign: center; + icon-name: "cross-symbolic"; + tooltip-text: _("Remove"); + + styles ["flat"] + } + } + } + + Gtk.Box { + orientation: horizontal; + spacing: 6; + + Gtk.Button newAccountButton { + hexpand: true; + label: _("New"); + tooltip-text: _("New Account (Ctrl+N)"); + action-name: "win.newAccount"; + + styles ["pill"] + } + + Gtk.Button openAccountButton { + hexpand: true; + label: _("Open"); + tooltip-text: _("Open Account (Ctrl+O)"); + action-name: "win.openAccount"; + + styles ["pill", "suggested-action"] + } + } + } + }; + + styles ["icon-dropshadow"] + }; + } + + Adw.ViewStackPage { + name: "noAccounts"; + child: Adw.StatusPage { + icon-name: "wallet2-symbolic"; + title: _("No Accounts Open"); + + styles ["compact"] + }; + } + + Adw.ViewStackPage { + name: "custom"; + child: Adw.Bin customBin { + hexpand: true; + vexpand: true; + }; + } + }; + }; + }; + }; + }; + }; +} diff --git a/org.nickvision.money.gnome/blueprints/new_account_dialog.blp b/org.nickvision.money.gnome/blueprints/new_account_dialog.blp new file mode 100644 index 000000000..6fc18ca75 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/new_account_dialog.blp @@ -0,0 +1,327 @@ +using Gtk 4.0; +using Adw 1; + +Adw.Dialog root { + content-width: 420; + content-height: 460; + + child: Adw.ToolbarView { + [top] + Adw.HeaderBar { + title-widget: Adw.CarouselIndicatorDots { + carousel: carousel; + }; + + [start] + Gtk.Button backButton { + visible: false; + icon-name: "go-previous-symbolic"; + tooltip-text: _("Back"); + } + } + + Adw.ToastOverlay toastOverlay { + Gtk.ScrolledWindow { + hscrollbar-policy: never; + vscrollbar-policy: automatic; + + Adw.Carousel carousel { + vexpand: true; + hexpand: true; + allow-scroll-wheel: false; + allow-mouse-drag: false; + allow-long-swipes: false; + + Adw.StatusPage pageStart { + vexpand: true; + hexpand: true; + icon-name: "org.nickvision.money-symbolic"; + title: _("New Account"); + description: _("Use this wizard to get the most out of your new account"); + + child: Gtk.Button startButton { + halign: center; + valign: center; + label: _("Let's Start"); + + styles ["pill", "suggested-action"] + }; + } + + Gtk.Box pageStorage { + vexpand: true; + hexpand: true; + orientation: vertical; + spacing: 24; + margin-top: 24; + margin-start: 24; + margin-end: 24; + margin-bottom: 24; + + Gtk.Label { + label: _("Storage Location"); + + styles ["title-2"] + } + + Adw.PreferencesGroup { + vexpand: true; + + Adw.EntryRow accountNameRow { + title: _("Account Name"); + } + + Adw.PasswordEntryRow accountPasswordRow { + title: _("Account Password"); + } + + Adw.ActionRow accountFolderRow { + title: _("Folder"); + subtitle-selectable: true; + + [suffix] + Gtk.Button selectAccountFolderButton { + valign: center; + icon-name: "folder-open-symbolic"; + tooltip-text: _("Select Folder"); + + styles ["flat"] + } + + styles ["property"] + } + + Adw.SwitchRow accountOverwriteRow { + title: _("Overwrite Existing Accounts"); + } + } + + Gtk.Button storagePageNextButton { + halign: center; + valign: center; + margin-bottom: 12; + sensitive: false; + label: _("Next"); + + styles ["pill", "suggested-action"] + } + } + + Gtk.Box pageAccountOptions { + vexpand: true; + hexpand: true; + orientation: vertical; + spacing: 24; + margin-top: 24; + margin-start: 24; + margin-end: 24; + margin-bottom: 24; + + Gtk.Label { + label: _("Account Options"); + + styles ["title-2"] + } + + Adw.PreferencesGroup { + vexpand: true; + + Adw.ComboRow accountTypeRow { + title: _("Account Type"); + model: Gtk.StringList { + strings [_("Checking"), _("Savings"), _("Business")] + }; + } + + Adw.ComboRow transactionTypeRow { + title: _("Default Transaction Type"); + model: Gtk.StringList { + strings [_("Income"), _("Expense")] + }; + } + + Adw.ComboRow transactionRemindersRow { + title: _("Transaction Reminders Threshold"); + subtitle: _("Determines how far in advanced Denaro should remind users of upcoming transactions in the account."); + subtitle-lines: 4; + model: Gtk.StringList { + strings [_("Never"), _("One Day Before"), _("One Week Before"), _("One Month Before"), _("Two Months Before")] + }; + } + } + + Gtk.Button accountOptionsPageNextButton { + halign: center; + valign: center; + margin-bottom: 12; + label: _("Next"); + + styles ["pill", "suggested-action"] + } + } + + Gtk.Box pageCustomCurrency { + vexpand: true; + hexpand: true; + orientation: vertical; + spacing: 24; + margin-top: 24; + margin-start: 24; + margin-end: 24; + margin-bottom: 24; + + Gtk.Label { + label: _("Account Currency"); + + styles ["title-2"] + } + + Gtk.Label reportedCurrencyLabel { + justify: center; + use-markup: true; + } + + Adw.PreferencesGroup { + vexpand: true; + + Adw.ExpanderRow customCurrencyRow { + title: _("Use Custom Currency"); + show-enable-switch: true; + enable-expansion: false; + + Adw.EntryRow customSymbolRow { + title: _("Symbol"); + } + + Adw.EntryRow customCodeRow { + title: _("Code"); + } + + Adw.ComboRow customDecimalSeparatorRow { + title: _("Decimal Separator"); + model: Gtk.StringList { + strings [" . ", " , ", _("Custom")] + }; + + [suffix] + Gtk.Entry customDecimalSeparatorEntry { + visible: false; + valign: center; + max-length: 1; + max-width-chars: 4; + } + } + + Adw.ComboRow customGroupSeparatorRow { + title: _("Group Separator"); + model: Gtk.StringList { + strings [" . ", " , ", " ' ", _("None"), _("Custom")] + }; + + [suffix] + Gtk.Entry customGroupSeparatorEntry { + visible: false; + valign: center; + max-length: 1; + max-width-chars: 4; + } + } + + Adw.ComboRow customDecimalDigitsRow { + title: _("Decimal Digits"); + model: Gtk.StringList { + strings [_("Two"), _("Three"), _("Four"), _("Five"), _("Six")] + }; + } + + Adw.ComboRow customAmountStyleRow { + title: _("Amount Display Style"); + subtitle: _("$ is the currency's symbol."); + subtitle-lines: 2; + model: Gtk.StringList { + strings ["$100", "100$", "$ 100", "100 $"] + }; + } + } + } + + Gtk.Button customCurrencyPageNextButton { + halign: center; + valign: center; + margin-bottom: 12; + label: _("Next"); + + styles ["pill", "suggested-action"] + } + } + + Gtk.Box pageImport { + vexpand: true; + hexpand: true; + orientation: vertical; + spacing: 24; + margin-top: 24; + margin-start: 24; + margin-end: 24; + margin-bottom: 24; + + Gtk.Label { + label: _("Import Existing Information"); + + styles ["title-2"] + } + + Gtk.Label { + justify: center; + wrap: true; + wrap-mode: char; + label: _("Upload a supported file to use to import existing information into the new account. Denaro supports CSV, OFX, and QIF files."); + } + + Adw.PreferencesGroup { + vexpand: true; + + Adw.ActionRow importFileRow { + title: _("Import File"); + + [suffix] + Gtk.Box { + orientation: horizontal; + spacing: 6; + + Gtk.Button selectImportFileButton { + valign: center; + icon-name: "document-open-symbolic"; + tooltip-text: _("Select File"); + + styles ["flat"] + } + + Gtk.Button clearImportFileButton { + valign: center; + visible: false; + icon-name: "larger-brush-symbolic"; + tooltip-text: _("Clear File"); + + styles ["flat"] + } + } + + styles ["property"] + } + } + + Gtk.Button importPageCreateButton { + halign: center; + valign: center; + margin-bottom: 12; + label: _("Create"); + + styles ["pill", "suggested-action"] + } + } + } + } + } + }; +} diff --git a/org.nickvision.money.gnome/blueprints/preferences_dialog.blp b/org.nickvision.money.gnome/blueprints/preferences_dialog.blp new file mode 100644 index 000000000..390a3e707 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/preferences_dialog.blp @@ -0,0 +1,88 @@ +using Gtk 4.0; +using Adw 1; + +Adw.PreferencesDialog root { + content-width: 600; + content-height: 500; + search-enabled: true; + title: _("Preferences"); + + Adw.PreferencesPage { + Adw.PreferencesGroup { + title: _("User Interface"); + + Adw.ComboRow themeRow { + title: _("Theme"); + model: Gtk.StringList { + strings [C_("Theme", "Light"), C_("Theme", "Dark"), C_("Theme", "System")] + }; + + [prefix] + Gtk.Image { + icon-name: "dark-mode-symbolic"; + } + } + + Adw.ExpanderRow { + title: _("Colors"); + subtitle: _("Customize the colors used by Denaro."); + + [prefix] + Gtk.Image { + icon-name: "preferences-color-symbolic"; + } + + Adw.ActionRow { + title: _("Transaction Default Color"); + subtitle: _("A change in this setting will only be applied to newly added transactions."); + activatable-widget: transactionColorButton; + + [suffix] + Gtk.ColorDialogButton transactionColorButton { + valign: center; + } + } + + Adw.ActionRow { + title: _("Transfer Default Color"); + subtitle: _("A change in this setting will only be applied to new transfers."); + activatable-widget: transferColorButton; + + [suffix] + Gtk.ColorDialogButton transferColorButton { + valign: center; + } + } + + Adw.ActionRow { + title: _("Group Default Color"); + subtitle: _("A change in this setting will only be applied to newly added groups."); + activatable-widget: groupColorButton; + + [suffix] + Gtk.ColorDialogButton groupColorButton { + valign: center; + } + } + } + } + + Adw.PreferencesGroup { + title: _("Locale"); + + Adw.ComboRow insertSeparatorRow { + title: _("Insert Decimal Separator"); + subtitle: _("For the selected keys, the account's decimal separator will be inserted instead of the keyboard's value."); + subtitle-lines: 3; + model: Gtk.StringList { + strings [_("Off"), _("Numpad period only"), _("Period and Comma")] + }; + + [prefix] + Gtk.Image { + icon-name: "input-keyboard-symbolic"; + } + } + } + } +} diff --git a/org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp b/org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp new file mode 100644 index 000000000..ec8b947c8 --- /dev/null +++ b/org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp @@ -0,0 +1,50 @@ +using Gtk 4.0; +using Adw 1; + +Gtk.ShortcutsWindow root { + default-width: 600; + default-height: 500; + modal: true; + resizable: true; + destroy-with-parent: false; + + Gtk.ShortcutsSection { + Gtk.ShortcutsGroup { + title: C_("Shortcut", "Account"); + + Gtk.ShortcutsShortcut { + title: _("New Account"); + accelerator: "N"; + } + + Gtk.ShortcutsShortcut { + title: _("Open Account"); + accelerator: "O"; + } + } + + Gtk.ShortcutsGroup { + title: C_("Shortcut", "Application"); + + Gtk.ShortcutsShortcut { + title: _("Preferences"); + accelerator: "comma"; + } + + Gtk.ShortcutsShortcut { + title: _("Keyboard Shortcuts"); + accelerator: "question"; + } + + Gtk.ShortcutsShortcut _aboutShortcut { + title: _("About Application"); + accelerator: "F1"; + } + + Gtk.ShortcutsShortcut { + title: _("Quit"); + accelerator: "Q"; + } + } + } +} \ No newline at end of file diff --git a/org.nickvision.money.gnome/include/application.h b/org.nickvision.money.gnome/include/application.h new file mode 100644 index 000000000..b944fb7b3 --- /dev/null +++ b/org.nickvision.money.gnome/include/application.h @@ -0,0 +1,44 @@ +#ifndef APPLICATION_H +#define APPLICATION_H + +#include +#include +#include +#include "controllers/mainwindowcontroller.h" +#include "views/mainwindow.h" + +namespace Nickvision::Money::GNOME +{ + /** + * @brief The main GTK application point. + */ + class Application + { + public: + /** + * @brief Constructs an Application. + * @param argc The number of arguments passed to the application + * @param argv The array of argument strings passed to the application + */ + Application(int argc, char* argv[]); + /** + * @brief Runs the application. + * @brief This runs the gtk application loop. + * @returns The return code from the gtk application + */ + int run(); + + private: + /** + * @brief Handles starting the application. + * @param app The GtkApplication for the running app + */ + void onActivate(GtkApplication* app); + std::vector m_args; + std::shared_ptr m_controller; + AdwApplication* m_adw; + std::shared_ptr m_mainWindow; + }; +} + +#endif //APPLCIATION_H \ No newline at end of file diff --git a/org.nickvision.money.gnome/include/controls/currencyconverterpage.h b/org.nickvision.money.gnome/include/controls/currencyconverterpage.h new file mode 100644 index 000000000..d07c8feaf --- /dev/null +++ b/org.nickvision.money.gnome/include/controls/currencyconverterpage.h @@ -0,0 +1,61 @@ +#ifndef CURRENCYCONVERTERDIALOG_H +#define CURRENCYCONVERTERDIALOG_H + +#include +#include + +namespace Nickvision::Money::GNOME::Controls +{ + /** + * @brief A page for converting currencies. + */ + class CurrencyConverterPage + { + public: + /** + * @brief Constructs a CurrencyConverterPage. + * @param parent The parent window + */ + CurrencyConverterPage(GtkWindow* parent); + /** + * @brief Destructs a CurrencyConverterPage. + */ + ~CurrencyConverterPage(); + /** + * @brief Gets the gobj of the control + * @return AdwClamp* + */ + AdwClamp* gobj(); + + private: + /** + * @brief Switches the source and result currencies. + */ + void switchCurrencies(); + /** + * @brief Handles when the source currency is changed. + */ + void onSourceCurrencyChanged(); + /** + * @brief Handles when the result currency is changed. + */ + void onResultCurrencyChanged(); + /** + * @brief Handles when the source amount is changed. + */ + void onSourceAmountChanged(); + /** + * @brief Copies the result to the clipboard. + */ + void copyResult(); + /** + * @brief Handles when the currency is changed. + */ + void onCurrencyChange(); + GtkBuilder* m_builder; + AdwClamp* m_page; + GtkStringList* m_currencyList; + }; +} + +#endif //CURRENCYCONVERTERDIALOG_H diff --git a/org.nickvision.money.gnome/include/helpers/builder.h b/org.nickvision.money.gnome/include/helpers/builder.h new file mode 100644 index 000000000..983ebb77f --- /dev/null +++ b/org.nickvision.money.gnome/include/helpers/builder.h @@ -0,0 +1,18 @@ +#ifndef BUILDER_H +#define BUILDER_H + +#include +#include + +namespace Nickvision::Money::GNOME::BuilderHelpers +{ + /** + * @brief Gets a GtkBuilder object for a compiled blueprint ui file. + * @brief Compiled blueprint ui files (.ui not .blp) should be stored in the path: "Current_Running_Direction/ui/blueprint_file_name.ui". + * @param blueprint The name of the blueprint ui file + * @return The GtkBiilder object for the blueprint file or nullptr on error + */ + GtkBuilder* fromBlueprint(const std::string& blueprint); +} + +#endif //BUILDER_H \ No newline at end of file diff --git a/org.nickvision.money.gnome/include/helpers/dialogbase.h b/org.nickvision.money.gnome/include/helpers/dialogbase.h new file mode 100644 index 000000000..31a07b1c0 --- /dev/null +++ b/org.nickvision.money.gnome/include/helpers/dialogbase.h @@ -0,0 +1,51 @@ +#ifndef DIALOGBASE_H +#define DIALOGBASE_H + +#include +#include +#include +#include + +namespace Nickvision::Money::GNOME::Helpers +{ + /** + * @brief A base class for custom AdwDialogs with blueprints. + */ + class DialogBase + { + public: + /** + * @brief Constructs a DialogBase. + * @param parent GtkWindow* + * @param fileName The file name for the blueprint file of the dialog + * @param rootName The name of the AdwDialog component in the blueprint file + */ + DialogBase(GtkWindow* parent, const std::string& fileName, const std::string& rootName = "root"); + /** + * @brief Destructs a DialogBase. + */ + ~DialogBase(); + /** + * @brief Gets the underlying AdwDialog pointer. + * @return AdwDialog* + */ + AdwDialog* get(); + /** + * @brief Gets the event for when the dialog is closed. + * @return The closed event + */ + Nickvision::Events::Event& closed(); + /** + * @brief Presents the AdwDialog. + */ + void present() const; + + protected: + GtkBuilder* m_builder; + GtkWindow* m_parent; + AdwDialog* m_dialog; + Nickvision::Events::Event m_closed; + }; +} + +#endif //DIALOGBASE_H diff --git a/org.nickvision.money.gnome/include/helpers/dialogptr.h b/org.nickvision.money.gnome/include/helpers/dialogptr.h new file mode 100644 index 000000000..0ff089047 --- /dev/null +++ b/org.nickvision.money.gnome/include/helpers/dialogptr.h @@ -0,0 +1,54 @@ +#ifndef DIALOGPTR_H +#define DIALOGPTR_H + +#include +#include "dialogbase.h" + +namespace Nickvision::Money::GNOME::Helpers +{ + template + concept DerivedDialogBase = std::is_base_of_v; + + /** + * @brief A pointer for a custom AdwDialog. + * @brief Keeps the pointer alive until the dialog has closed. + */ + template + class DialogPtr + { + public: + /** + * @brief Constructs a DialogPtr. + * @param args The arguments to pass to T's constructor. + */ + template + DialogPtr(Args... args) + : m_ptr{ new T(args...) } + { + g_signal_connect(m_ptr->get(), "closed", GCallback(+[](AdwDialog*, gpointer data){ delete reinterpret_cast(data); }), m_ptr); + } + /** + * @brief Constructs a DialogPtr. + * @brief The DialogPtr assumes ownership of ptr. + * @param ptr T* + */ + DialogPtr(T* ptr) + : m_ptr{ ptr } + { + g_signal_connect(m_ptr->get(), "closed", GCallback(+[](AdwDialog*, gpointer data){ delete reinterpret_cast(data); }), m_ptr); + } + /** + * @brief Returns the underlying pointer. + * @return T* + */ + T* operator->() + { + return m_ptr; + } + + private: + T* m_ptr; + }; +} + +#endif //DIALOGPTR_H diff --git a/org.nickvision.money.gnome/include/views/accountpage.h b/org.nickvision.money.gnome/include/views/accountpage.h new file mode 100644 index 000000000..a5216473d --- /dev/null +++ b/org.nickvision.money.gnome/include/views/accountpage.h @@ -0,0 +1,75 @@ +#ifndef ACCOUNTPAGE_H +#define ACCOUNTPAGE_H + +#include +#include +#include +#include "controllers/accountviewcontroller.h" + +namespace Nickvision::Money::GNOME::Views +{ + /** + * @brief A page for displaying an account + */ + class AccountPage + { + public: + /** + * @brief Constructs an AccountPage + * @param controller The AccountViewController + * @param parent The parent window + */ + AccountPage(const std::shared_ptr& controller, GtkWindow* parent); + /** + * @brief Destructs an AccountView + */ + ~AccountPage(); + /** + * @brief Gets the gobj of the control + * @return AdwViewStack* + */ + AdwViewStack* gobj(); + /** + * @brief Gets the title of the page + * @return The page title + */ + const std::string& getTitle() const; + + private: + /** + * @brief Opens the TransactionDialog to create a new transaction. + */ + void newTransaction(); + /** + * @brief Opens the GroupDialog to create a new group. + */ + void newGroup(); + /** + * @brief Opens the TransferDialog. + */ + void transfer(); + /** + * @brief Prompts the user to select a file to import. + */ + void importFromFile(); + /** + * @brief Prompts the user to export to a CSV file. + */ + void exportToCSV(); + /** + * @brief Prompts the user to export to a PDF file. + */ + void exportToPDF(); + /** + * @brief Opens the AccountSettingsDialog. + */ + void accountSettings(); + std::shared_ptr m_controller; + GtkBuilder* m_builder; + GtkWindow* m_parent; + AdwViewStack* m_page; + GSimpleActionGroup* m_actionGroup; + }; +} + +#endif //ACCOUNTPAGE_H diff --git a/org.nickvision.money.gnome/include/views/accountsettingsdialog.h b/org.nickvision.money.gnome/include/views/accountsettingsdialog.h new file mode 100644 index 000000000..5b20ea207 --- /dev/null +++ b/org.nickvision.money.gnome/include/views/accountsettingsdialog.h @@ -0,0 +1,49 @@ +#ifndef ACCOUNTSETTINGSDIALOG_H +#define ACCOUNTSETTINGSDIALOG_H + +#include +#include +#include "controllers/accountsettingsdialogcontroller.h" +#include "helpers/dialogbase.h" + +namespace Nickvision::Money::GNOME::Views +{ + /** + * @brief A dialog for managing account settings. + */ + class AccountSettingsDialog : public Helpers::DialogBase + { + public: + /** + * @brief Constructs an AccountSettingsDialog. + * @param controller AccountSettingsDialogController + * @param parent The GtkWindow object of the parent window + */ + AccountSettingsDialog(const std::shared_ptr& controller, GtkWindow* parent); + + private: + /** + * @brief Handles when the basic account information is changed. + */ + void onAccountInfoChanged(); + /** + * @brief Handles when the custom currency is changed. + */ + void onCurrencyChange(); + /** + * @brief Handles when the new password is changed. + */ + void onNewPasswordChange(); + /** + * @brief Changes the account password. + */ + void changePassword(); + /** + * @brief Removes the account password. + */ + void removePassword(); + std::shared_ptr m_controller; + }; +} + +#endif //ACCOUNTSETTINGSDIALOG_H diff --git a/org.nickvision.money.gnome/include/views/mainwindow.h b/org.nickvision.money.gnome/include/views/mainwindow.h new file mode 100644 index 000000000..05f7ab5d6 --- /dev/null +++ b/org.nickvision.money.gnome/include/views/mainwindow.h @@ -0,0 +1,130 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include "controls/currencyconverterpage.h" +#include "controllers/mainwindowcontroller.h" +#include "views/accountpage.h" + +#define SET_ACCEL_FOR_ACTION(App, Action, Accel) { \ +const char* accels[2] { Accel, nullptr }; \ +gtk_application_set_accels_for_action(App, Action, accels); \ +} + +namespace Nickvision::Money::GNOME::Views +{ + /** + * @brief The main window for the application. + */ + class MainWindow + { + public: + /** + * @brief Constructs a MainWindow. + * @param controller The MainWindowController + * @param app The GtkApplication object of the running app + */ + MainWindow(const std::shared_ptr& controller, GtkApplication* app); + /** + * @brief Destructs a MainWindow. + */ + ~MainWindow(); + /** + * @brief Gets the GObject object for the main window. + * @return The GObject for the main window + */ + GObject* gobj() const; + /** + * @brief Shows the main window. + */ + void show(); + + private: + /** + * @brief Handles when the window requests to close. + * @return True to prevent closing, else false + */ + bool onCloseRequested(); + /** + * @brief Handles when a file is dropped on the window. + * @param value The GValue dropped on the window + * @return True if drop was accepted, else false + */ + bool onDrop(const GValue* value); + /** + * @brief Handles when a notification is sent to the window. + * @param args Nickvision::Notifications::NotificationSentEventArgs + */ + void onNotificationSent(const Nickvision::Notifications::NotificationSentEventArgs& args); + /** + * @brief Handles when a shell notification is sent to the window. + * @param args Nickvision::Notifications::ShellNotificationSentEventArgs + */ + void onShellNotificationSent(const Nickvision::Notifications::ShellNotificationSentEventArgs& args); + /** + * @brief Quits the application. + */ + void quit(); + /** + * @brief Opens the application's preferences dialog. + */ + void preferences(); + /** + * @brief Opens the application's keyboard shortcut dialog. + */ + void keyboardShortcuts(); + /** + * @brief Opens the application's help documentation. + */ + void help(); + /** + * @brief Opens the application's about dialog. + */ + void about(); + /** + * @brief Handles when a navigation item is selected. + * @param box The listNavItems box + * @param row The selected row + */ + void onNavItemSelected(GtkListBox* box, GtkListBoxRow* row); + /** + * @brief Handles when an account is added. + * @param args Nickvision::Events::ParamEventArgs + */ + void onAccountAdded(const Nickvision::Events::ParamEventArgs&>& args); + /** + * @brief Opens the new account dialog for account creation. + */ + void newAccount(); + /** + * @brief Prompts the user to open an account. + */ + void openAccount(); + /** + * @brief Loads the recent accounts list. + * @param args Nickvision::Events::ParamEventArgs> + */ + void loadRecentAccounts(const Nickvision::Events::ParamEventArgs>& args); + /** + * @brief Removes a recent account from the list. + * @param path The path of the account file to remove + */ + void removeRecentAccount(const std::filesystem::path& path); + /** + * @brief Opens an account. + * @param path The path of the account file to open + */ + void openAccount(const std::filesystem::path& path); + std::shared_ptr m_controller; + GtkApplication* m_app; + GtkBuilder* m_builder; + AdwApplicationWindow* m_window; + Controls::CurrencyConverterPage m_currencyConverterPage; + std::unordered_map> m_accountPages; + }; +} + +#endif //MAINWINDOW_H diff --git a/org.nickvision.money.gnome/include/views/newaccountdialog.h b/org.nickvision.money.gnome/include/views/newaccountdialog.h new file mode 100644 index 000000000..b02c1f740 --- /dev/null +++ b/org.nickvision.money.gnome/include/views/newaccountdialog.h @@ -0,0 +1,74 @@ +#ifndef NEWACCOUNTDIALOG_H +#define NEWACCOUNTDIALOG_H + +#include +#include +#include +#include +#include "controllers/newaccountdialogcontroller.h" +#include "helpers/dialogbase.h" + +namespace Nickvision::Money::GNOME::Views +{ + /** + * @brief A dialog for creating a new account. + */ + class NewAccountDialog : public Helpers::DialogBase + { + public: + /** + * @brief Constructs a NewAccountDialog. + * @param controller NewAccountDialogController + * @param parent The GtkWindow object of the parent window + */ + NewAccountDialog(const std::shared_ptr& controller, GtkWindow* parent); + /** + * @brief Gets the event when the user has created the account + * @return The created event + */ + Nickvision::Events::Event>>& created(); + + private: + /** + * @brief Navigates to the previous page. + */ + void goBack(); + /** + * @brief Navigates to the next page. + */ + void goForward(); + /** + * @brief Handles when the account name is changed. + */ + void onAccountNameChanged(); + /** + * @brief Prompts the user to select the folder where to store the account. + */ + void selectAccountFolder(); + /** + * @brief Handles when the account overwrite is changed. + */ + void onAccountOverwriteChanged(); + /** + * @brief Handles when the custom currency is changed. + */ + void onCurrencyChange(); + /** + * @brief Prompts the user to select an import file. + */ + void selectImportFile(); + /** + * @brief Clears the import file. + */ + void clearImportFile(); + /** + * @brief Finishes the dialog. + */ + void finish(); + std::shared_ptr m_controller; + Nickvision::Events::Event>> m_created; + int m_currentPageNumber; + }; +} + +#endif //NEWACCOUNTDIALOG_H diff --git a/org.nickvision.money.gnome/include/views/preferencesdialog.h b/org.nickvision.money.gnome/include/views/preferencesdialog.h new file mode 100644 index 000000000..fd7f7c646 --- /dev/null +++ b/org.nickvision.money.gnome/include/views/preferencesdialog.h @@ -0,0 +1,37 @@ +#ifndef PREFERENCESDIALOG_H +#define PREFERENCESDIALOG_H + +#include +#include +#include "controllers/preferencesviewcontroller.h" +#include "helpers/dialogbase.h" + +namespace Nickvision::Money::GNOME::Views +{ + /** + * @brief The preferences dialog for the application. + */ + class PreferencesDialog : public Helpers::DialogBase + { + public: + /** + * @brief Constructs a PreferencesDialog. + * @param controller The PreferencesViewController + * @param parent The GtkWindow object of the parent window + */ + PreferencesDialog(const std::shared_ptr& controller, GtkWindow* parent); + + private: + /** + * @brief Handles when the dialog is closed. + */ + void onClosed(); + /** + * @brief Handles when the theme preference is changed. + */ + void onThemeChanged(); + std::shared_ptr m_controller; + }; +} + +#endif //PREFERENCESDIALOG_H diff --git a/NickvisionMoney.GNOME/Resources/bank-symbolic.svg b/org.nickvision.money.gnome/resources/bank-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/bank-symbolic.svg rename to org.nickvision.money.gnome/resources/bank-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/bell-outline-symbolic.svg b/org.nickvision.money.gnome/resources/bell-outline-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/bell-outline-symbolic.svg rename to org.nickvision.money.gnome/resources/bell-outline-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/bell-symbolic.svg b/org.nickvision.money.gnome/resources/bell-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/bell-symbolic.svg rename to org.nickvision.money.gnome/resources/bell-symbolic.svg diff --git a/org.nickvision.money.gnome/resources/check-plain-symbolic.svg b/org.nickvision.money.gnome/resources/check-plain-symbolic.svg new file mode 100644 index 000000000..096db0780 --- /dev/null +++ b/org.nickvision.money.gnome/resources/check-plain-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/NickvisionMoney.GNOME/Resources/cross-symbolic.svg b/org.nickvision.money.gnome/resources/cross-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/cross-symbolic.svg rename to org.nickvision.money.gnome/resources/cross-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/dark-mode-symbolic.svg b/org.nickvision.money.gnome/resources/dark-mode-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/dark-mode-symbolic.svg rename to org.nickvision.money.gnome/resources/dark-mode-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/dock-top-symbolic.svg b/org.nickvision.money.gnome/resources/dock-top-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/dock-top-symbolic.svg rename to org.nickvision.money.gnome/resources/dock-top-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/document-send-symbolic.svg b/org.nickvision.money.gnome/resources/document-send-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/document-send-symbolic.svg rename to org.nickvision.money.gnome/resources/document-send-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/edit-select-all-symbolic.svg b/org.nickvision.money.gnome/resources/edit-select-all-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/edit-select-all-symbolic.svg rename to org.nickvision.money.gnome/resources/edit-select-all-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/edit-select-none-symbolic.svg b/org.nickvision.money.gnome/resources/edit-select-none-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/edit-select-none-symbolic.svg rename to org.nickvision.money.gnome/resources/edit-select-none-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/larger-brush-symbolic.svg b/org.nickvision.money.gnome/resources/larger-brush-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/larger-brush-symbolic.svg rename to org.nickvision.money.gnome/resources/larger-brush-symbolic.svg diff --git a/org.nickvision.money.gnome/resources/left-symbolic.svg b/org.nickvision.money.gnome/resources/left-symbolic.svg new file mode 100644 index 000000000..f86a0fb20 --- /dev/null +++ b/org.nickvision.money.gnome/resources/left-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/NickvisionMoney.GNOME/Resources/money-none-symbolic.svg b/org.nickvision.money.gnome/resources/money-none-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/money-none-symbolic.svg rename to org.nickvision.money.gnome/resources/money-none-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/money-symbolic.svg b/org.nickvision.money.gnome/resources/money-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/money-symbolic.svg rename to org.nickvision.money.gnome/resources/money-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/month-symbolic.svg b/org.nickvision.money.gnome/resources/month-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/month-symbolic.svg rename to org.nickvision.money.gnome/resources/month-symbolic.svg diff --git a/org.nickvision.money.gnome/resources/newspaper-symbolic.svg b/org.nickvision.money.gnome/resources/newspaper-symbolic.svg new file mode 100644 index 000000000..2217b3578 --- /dev/null +++ b/org.nickvision.money.gnome/resources/newspaper-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/NickvisionMoney.GNOME/Resources/org.nickvision.money-dark.css b/org.nickvision.money.gnome/resources/org.nickvision.money-dark.css similarity index 100% rename from NickvisionMoney.GNOME/Resources/org.nickvision.money-dark.css rename to org.nickvision.money.gnome/resources/org.nickvision.money-dark.css diff --git a/NickvisionMoney.GNOME/Resources/org.nickvision.money.css b/org.nickvision.money.gnome/resources/org.nickvision.money.css similarity index 87% rename from NickvisionMoney.GNOME/Resources/org.nickvision.money.css rename to org.nickvision.money.gnome/resources/org.nickvision.money.css index d83db257a..838ae2c75 100644 --- a/NickvisionMoney.GNOME/Resources/org.nickvision.money.css +++ b/org.nickvision.money.gnome/resources/org.nickvision.money.css @@ -173,34 +173,4 @@ row.error button.circular { /* Transaction Row */ .id-image { border-radius: 34px; -} - -/* Recent Account Row */ -.wallet-button { - background-color: rgba(0, 0, 0, 0); -} - -.wallet-bg { - border-radius: 6px; -} - -/* Password Strength */ -.strength block.veryweak { - background-color: @warning_bg_color; -} - -.strength block.weak { - background-color: @warning_bg_color; -} - -.strength block.medium { - background-color: @accent_bg_color; -} - -.strength block.strong { - background-color: @success_bg_color; -} - -.strength block.verystrong { - background-color: @success_bg_color; } \ No newline at end of file diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in b/org.nickvision.money.gnome/resources/org.nickvision.money.desktop.in similarity index 77% rename from NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in rename to org.nickvision.money.gnome/resources/org.nickvision.money.desktop.in index bed7377c4..9a71c1add 100644 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in +++ b/org.nickvision.money.gnome/resources/org.nickvision.money.desktop.in @@ -2,14 +2,14 @@ Version=1.0 Name=Denaro Comment=Manage your personal finances -Exec=@EXEC@ %F -Icon=org.nickvision.money +Exec=@CMAKE_INSTALL_FULL_LIBDIR@/@PROJECT_NAME@/@PROJECT_NAME@.gnome +Icon=@PROJECT_NAME@ Terminal=false Type=Application MimeType=application/x-nmoney -X-GNOME-UsesNotifications=true Categories=Office;Finance; Keywords=money;finance;wallet;cash;bank;Nickvision; -StartupNotify = true +X-GNOME-UsesNotifications=true +StartupNotify=true # Translators: Do NOT translate or transliterate this text (these are enum types)! X-Purism-FormFactor=Workstation;Mobile; diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.extension.xml b/org.nickvision.money.gnome/resources/org.nickvision.money.extension.xml similarity index 100% rename from NickvisionMoney.Shared/Linux/org.nickvision.money.extension.xml rename to org.nickvision.money.gnome/resources/org.nickvision.money.extension.xml diff --git a/org.nickvision.money.gnome/resources/org.nickvision.money.gresource.xml b/org.nickvision.money.gnome/resources/org.nickvision.money.gresource.xml new file mode 100644 index 000000000..fb9418e2f --- /dev/null +++ b/org.nickvision.money.gnome/resources/org.nickvision.money.gresource.xml @@ -0,0 +1,40 @@ + + + + org.nickvision.money.css + org.nickvision.money-dark.css + + + ../../resources/org.nickvision.money.svg + ../../resources/org.nickvision.money-devel.svg + + + ../../resources/org.nickvision.money-symbolic.svg + + + bank-symbolic.svg + bell-outline-symbolic.svg + bell-symbolic.svg + check-plain-symbolic.svg + cross-symbolic.svg + dark-mode-symbolic.svg + dock-top-symbolic.svg + document-send-symbolic.svg + edit-select-all-symbolic.svg + edit-select-none-symbolic.svg + larger-brush-symbolic.svg + left-symbolic.svg + money-none-symbolic.svg + money-symbolic.svg + month-symbolic.svg + newspaper-symbolic.svg + profit-symbolic.svg + right-symbolic.svg + send-alt-symbolic.svg + shell-overview-symbolic.svg + today-symbolic.svg + update-symbolic.svg + wallet2-symbolic.svg + wrench-wide-symbolic.svg + + diff --git a/org.nickvision.money.gnome/resources/org.nickvision.money.in b/org.nickvision.money.gnome/resources/org.nickvision.money.in new file mode 100644 index 000000000..fa0efed79 --- /dev/null +++ b/org.nickvision.money.gnome/resources/org.nickvision.money.in @@ -0,0 +1,2 @@ +#!/bin/sh +exec @CMAKE_INSTALL_FULL_LIBDIR@/@PROJECT_NAME@/@PROJECT_NAME@.gnome "$@" diff --git a/org.nickvision.money.gnome/resources/org.nickvision.money.metainfo.xml.in b/org.nickvision.money.gnome/resources/org.nickvision.money.metainfo.xml.in new file mode 100644 index 000000000..a457d6c82 --- /dev/null +++ b/org.nickvision.money.gnome/resources/org.nickvision.money.metainfo.xml.in @@ -0,0 +1,68 @@ + + + @PROJECT_NAME@ + CC0-1.0 + MIT + @SHORT_NAME@ + Nickvision + Nickvision + Manage your personal finances + +

— Manage multiple accounts at a time, with a familiar tab interface

+

— Easily filter transactions by type, group, or date

+

— Easily repeat transactions, such as bills that occur every month

+

— Transfer money from one account to another

+

— Export an account as a CSV file and import a CSV, OFX or QIF file to bulk add transactions to an account

+
+ @PROJECT_NAME@.desktop + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/MainWindow.png + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/OpenAccount.png + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/OpenAccountDark.png + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/CompactMode.png + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/Transaction.png + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/AccountSettings.png + + + https://raw.githubusercontent.com/NickvisionApps/Denaro/master/NickvisionMoney.GNOME/Screenshots/CurrencyConverter.png + + + https://github.com/NickvisionApps/@SHORT_NAME@ + https://github.com/NickvisionApps/@SHORT_NAME@/issues + https://github.com/sponsors/nlogozzo + https://github.com/NickvisionApps/@SHORT_NAME@/blob/master/CONTRIBUTING.md#providing-translations + + @PROJECT_NAME@ + application/x-nmoney + + + + +

- Initial Release

+
+
+
+ + + pointing + keyboard + touch + + + 360 + + + mobile + +
diff --git a/org.nickvision.money.gnome/resources/profit-symbolic.svg b/org.nickvision.money.gnome/resources/profit-symbolic.svg new file mode 100644 index 000000000..6a1669329 --- /dev/null +++ b/org.nickvision.money.gnome/resources/profit-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/org.nickvision.money.gnome/resources/right-symbolic.svg b/org.nickvision.money.gnome/resources/right-symbolic.svg new file mode 100644 index 000000000..bedb1bbbf --- /dev/null +++ b/org.nickvision.money.gnome/resources/right-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/org.nickvision.money.gnome/resources/send-alt-symbolic.svg b/org.nickvision.money.gnome/resources/send-alt-symbolic.svg new file mode 100644 index 000000000..462ea5ab7 --- /dev/null +++ b/org.nickvision.money.gnome/resources/send-alt-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/org.nickvision.money.gnome/resources/shell-overview-symbolic.svg b/org.nickvision.money.gnome/resources/shell-overview-symbolic.svg new file mode 100644 index 000000000..3cb495101 --- /dev/null +++ b/org.nickvision.money.gnome/resources/shell-overview-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/NickvisionMoney.GNOME/Resources/today-symbolic.svg b/org.nickvision.money.gnome/resources/today-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/today-symbolic.svg rename to org.nickvision.money.gnome/resources/today-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/update-symbolic.svg b/org.nickvision.money.gnome/resources/update-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/update-symbolic.svg rename to org.nickvision.money.gnome/resources/update-symbolic.svg diff --git a/NickvisionMoney.GNOME/Resources/wallet2-symbolic.svg b/org.nickvision.money.gnome/resources/wallet2-symbolic.svg similarity index 100% rename from NickvisionMoney.GNOME/Resources/wallet2-symbolic.svg rename to org.nickvision.money.gnome/resources/wallet2-symbolic.svg diff --git a/org.nickvision.money.gnome/resources/wrench-wide-symbolic.svg b/org.nickvision.money.gnome/resources/wrench-wide-symbolic.svg new file mode 100644 index 000000000..0ba6403c3 --- /dev/null +++ b/org.nickvision.money.gnome/resources/wrench-wide-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/org.nickvision.money.gnome/src/application.cpp b/org.nickvision.money.gnome/src/application.cpp new file mode 100644 index 000000000..63064f952 --- /dev/null +++ b/org.nickvision.money.gnome/src/application.cpp @@ -0,0 +1,60 @@ +#include "application.h" +#include +#include + +using namespace Nickvision::App; +using namespace Nickvision::Money::Shared::Controllers; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::GNOME +{ + Application::Application(int argc, char* argv[]) + : m_controller{ std::make_shared() }, + m_adw{ adw_application_new(m_controller->getAppInfo().getId().c_str(), G_APPLICATION_DEFAULT_FLAGS) }, + m_mainWindow{ nullptr } + { + m_args.reserve(static_cast(argc)); + for(int i = 0; i < argc; i++) + { + m_args.push_back(argv[i]); + } + m_controller->getAppInfo().setChangelog("- Initial Release"); + std::filesystem::path resources{ Aura::getActive().getExecutableDirectory() / (m_controller->getAppInfo().getId() + ".gresource") }; + GError* resourceLoadError{ nullptr }; + GResource* resource{ g_resource_load(resources.string().c_str(), &resourceLoadError) }; + if(resourceLoadError) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Critical, "Unable to load GResource. " + std::string(resourceLoadError->message)); + throw std::runtime_error(resourceLoadError->message); + } + g_resources_register(resource); + g_signal_connect(m_adw, "activate", G_CALLBACK(+[](GtkApplication* app, gpointer data){ reinterpret_cast(data)->onActivate(app); }), this); + } + + int Application::run() + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Started GTK application."); + return g_application_run(G_APPLICATION(m_adw), static_cast(m_args.size()), &m_args[0]); + } + + void Application::onActivate(GtkApplication* app) + { + switch (m_controller->getTheme()) + { + case Theme::Light: + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_FORCE_LIGHT); + break; + case Theme::Dark: + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_FORCE_DARK); + break; + default: + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_DEFAULT); + break; + } + if(!m_mainWindow) + { + m_mainWindow = std::make_shared(m_controller, app); + } + m_mainWindow->show(); + } +} diff --git a/org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp b/org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp new file mode 100644 index 000000000..279d8ccbc --- /dev/null +++ b/org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp @@ -0,0 +1,131 @@ +#include "controls/currencyconverterpage.h" +#include +#include "helpers/builder.h" +#include "helpers/currencyhelpers.h" +#include "models/currencyconversionservice.h" + +using namespace Nickvision::Money::Shared; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::GNOME::Controls +{ + CurrencyConverterPage::CurrencyConverterPage(GtkWindow* parent) + : m_builder{ BuilderHelpers::fromBlueprint("currency_converter_page") }, + m_page{ ADW_CLAMP(gtk_builder_get_object(m_builder, "root")) }, + m_currencyList{ gtk_string_list_new(nullptr) } + { + //Signals + g_signal_connect(gtk_builder_get_object(m_builder, "switchButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->switchCurrencies(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "sourceCurrencyRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onSourceCurrencyChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "resultCurrencyRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onResultCurrencyChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "sourceAmountRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onSourceAmountChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "copyResultButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->copyResult(); }), this); + //Load + const std::map& conversionRates{ CurrencyConversionService::getConversionRates("USD") }; + if(conversionRates.empty()) + { + AdwAlertDialog* alertDialog{ ADW_ALERT_DIALOG(adw_alert_dialog_new(_("Error"), _("Unable to load currency data. Please try again. If the error still persists, report a bug."))) }; + adw_alert_dialog_add_response(alertDialog, "close", _("Close")); + adw_alert_dialog_set_default_response(alertDialog, "close"); + adw_alert_dialog_set_close_response(alertDialog, "close"); + g_signal_connect(alertDialog, "response", G_CALLBACK(+[](AdwAlertDialog* self, const char*, gpointer){ adw_dialog_force_close(ADW_DIALOG(self)); }), nullptr); + adw_dialog_present(ADW_DIALOG(alertDialog), GTK_WIDGET(parent)); + } + else + { + unsigned int usdIndex{ 0 }; + unsigned int eurIndex{ 0 }; + unsigned int i{ 0 }; + for(const std::pair& pair : conversionRates) + { + gtk_string_list_append(m_currencyList, pair.first.c_str()); + if(pair.first == "USD") + { + usdIndex = i; + } + else if(pair.first == "EUR") + { + eurIndex = i; + } + i++; + } + adw_combo_row_set_model(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "sourceCurrencyRow")), G_LIST_MODEL(m_currencyList)); + adw_combo_row_set_model(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "resultCurrencyRow")), G_LIST_MODEL(m_currencyList)); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "sourceCurrencyRow")), usdIndex); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "resultCurrencyRow")), eurIndex); + } + } + + CurrencyConverterPage::~CurrencyConverterPage() + { + g_object_unref(m_currencyList); + g_object_unref(m_builder); + } + + AdwClamp* CurrencyConverterPage::gobj() + { + return m_page; + } + + void CurrencyConverterPage::switchCurrencies() + { + unsigned int sourceIndex{ adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "sourceCurrencyRow"))) }; + unsigned int resultIndex{ adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "resultCurrencyRow"))) }; + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "resultCurrencyRow")), sourceIndex); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "sourceCurrencyRow")), resultIndex); + } + + void CurrencyConverterPage::onSourceCurrencyChanged() + { + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(gtk_builder_get_object(m_builder, "sourceAmountRow")), gtk_string_list_get_string(m_currencyList, adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "sourceCurrencyRow"))))); + onCurrencyChange(); + } + + void CurrencyConverterPage::onResultCurrencyChanged() + { + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(gtk_builder_get_object(m_builder, "resultAmountRow")), gtk_string_list_get_string(m_currencyList, adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "resultCurrencyRow"))))); + onCurrencyChange(); + } + + void CurrencyConverterPage::onSourceAmountChanged() + { + onCurrencyChange(); + } + + void CurrencyConverterPage::copyResult() + { + std::string resultText{ adw_action_row_get_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(m_builder, "resultAmountRow"))) }; + if(!resultText.empty()) + { + GdkClipboard* clipboard{ gtk_widget_get_clipboard(GTK_WIDGET(gtk_builder_get_object(m_builder, "resultAmountRow"))) }; + gdk_clipboard_set_text(clipboard, resultText.c_str()); + adw_toast_overlay_add_toast(ADW_TOAST_OVERLAY(gtk_builder_get_object(m_builder, "toastOverlay")), adw_toast_new(_("Result was copied to clipboard."))); + } + } + + void CurrencyConverterPage::onCurrencyChange() + { + std::string sourceText{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "sourceAmountRow"))) }; + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "resultAmountRow")), "error"); + if(sourceText.empty()) + { + adw_action_row_set_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(m_builder, "resultAmountRow")), ""); + } + else + { + double sourceAmount{ CurrencyHelpers::toAmount(sourceText, CurrencyHelpers::getSystemCurrency()) }; + std::string sourceCurrency{ gtk_string_list_get_string(m_currencyList, adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "sourceCurrencyRow")))) }; + std::string resultCurrency{ gtk_string_list_get_string(m_currencyList, adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "resultCurrencyRow")))) }; + std::optional conversion{ CurrencyConversionService::convert(sourceCurrency, sourceAmount, resultCurrency) }; + if (conversion.has_value()) + { + std::string resultAmountString{ CurrencyHelpers::toAmountString(conversion->getResultAmount(), CurrencyHelpers::getSystemCurrency(), false, true) }; + adw_action_row_set_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(m_builder, "resultAmountRow")), resultAmountString.c_str()); + } + else + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "resultAmountRow")), "error"); + } + } + } +} \ No newline at end of file diff --git a/org.nickvision.money.gnome/src/helpers/builder.cpp b/org.nickvision.money.gnome/src/helpers/builder.cpp new file mode 100644 index 000000000..1d02417b0 --- /dev/null +++ b/org.nickvision.money.gnome/src/helpers/builder.cpp @@ -0,0 +1,44 @@ +#include "helpers/builder.h" +#include +#include +#include +#include +#include + +using namespace Nickvision::App; + +namespace Nickvision::Money::GNOME +{ + GtkBuilder* BuilderHelpers::fromBlueprint(const std::string& blueprint) + { + std::filesystem::path path{ Aura::getActive().getExecutableDirectory() / "ui" / (blueprint + ".ui") }; + if(!std::filesystem::exists(path)) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Critical, "UI file not found. (" + path.string() + ")"); + throw std::runtime_error("UI file not found: " + path.string()); + } + xmlpp::DomParser xml{ path.string() }; + xmlpp::Element* root{ xml.get_document()->get_root_node() }; + for(xmlpp::Node* node : root->find("//text()")) + { + xmlpp::Element* e{ node->get_parent() }; + if(e->get_attribute("translatable")) + { + xmlpp::TextNode* t{ dynamic_cast(node) }; + e->remove_attribute("translatable"); + std::string context{ e->get_attribute_value("context") }; + if(!context.empty()) + { + std::string p{ context + "\004" + t->get_content() }; + t->set_content(Nickvision::Localization::Gettext::pgettext(p.c_str(), t->get_content().c_str())); + } + else + { + t->set_content(_(t->get_content().c_str())); + } + } + } + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "Loaded builder from blueprint " + blueprint + "."); + return gtk_builder_new_from_string(xml.get_document()->write_to_string().c_str(), -1); + } +} diff --git a/org.nickvision.money.gnome/src/helpers/dialogbase.cpp b/org.nickvision.money.gnome/src/helpers/dialogbase.cpp new file mode 100644 index 000000000..e8f1395eb --- /dev/null +++ b/org.nickvision.money.gnome/src/helpers/dialogbase.cpp @@ -0,0 +1,37 @@ +#include "helpers/dialogbase.h" +#include "helpers/builder.h" + +using namespace Nickvision::Events; + +namespace Nickvision::Money::GNOME::Helpers +{ + DialogBase::DialogBase(GtkWindow* parent, const std::string& fileName, const std::string& rootName) + : m_builder{ BuilderHelpers::fromBlueprint(fileName) }, + m_parent{ parent }, + m_dialog{ ADW_DIALOG(gtk_builder_get_object(m_builder, rootName.c_str())) } + { + + } + + DialogBase::~DialogBase() + { + m_closed.invoke({}); + adw_dialog_force_close(m_dialog); + g_object_unref(m_builder); + } + + AdwDialog* DialogBase::get() + { + return m_dialog; + } + + Event& DialogBase::closed() + { + return m_closed; + } + + void DialogBase::present() const + { + adw_dialog_present(m_dialog, GTK_WIDGET(m_parent)); + } +} diff --git a/org.nickvision.money.gnome/src/main.cpp b/org.nickvision.money.gnome/src/main.cpp new file mode 100644 index 000000000..87963b8f4 --- /dev/null +++ b/org.nickvision.money.gnome/src/main.cpp @@ -0,0 +1,9 @@ +#include "application.h" + +using namespace Nickvision::Money::GNOME; + +int main(int argc, char* argv[]) +{ + Application app{ argc, argv }; + return app.run(); +} \ No newline at end of file diff --git a/org.nickvision.money.gnome/src/views/accountpage.cpp b/org.nickvision.money.gnome/src/views/accountpage.cpp new file mode 100644 index 000000000..87eaf07ee --- /dev/null +++ b/org.nickvision.money.gnome/src/views/accountpage.cpp @@ -0,0 +1,159 @@ +#include "views/accountpage.h" +#include +#include "helpers/builder.h" +#include "helpers/dialogptr.h" +#include "views/accountsettingsdialog.h" + +using namespace Nickvision::Events; +using namespace Nickvision::Money::GNOME::Helpers; +using namespace Nickvision::Money::Shared::Controllers; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::GNOME::Views +{ + AccountPage::AccountPage(const std::shared_ptr& controller, GtkWindow* parent) + : m_controller(controller), + m_builder{ BuilderHelpers::fromBlueprint("account_page") }, + m_parent{ parent }, + m_page{ ADW_VIEW_STACK(gtk_builder_get_object(m_builder, "root")) }, + m_actionGroup{ g_simple_action_group_new() } + { + gtk_widget_insert_action_group(GTK_WIDGET(m_page), "account", G_ACTION_GROUP(m_actionGroup)); + //New Transaction Action + GSimpleAction* actTransaction{ g_simple_action_new("newTransaction", nullptr) }; + g_signal_connect(actTransaction, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->newTransaction(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actTransaction)); + //New Group Action + GSimpleAction* actGroup{ g_simple_action_new("newGroup", nullptr) }; + g_signal_connect(actGroup, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->newGroup(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actGroup)); + //Transfer Action + GSimpleAction* actTransfer{ g_simple_action_new("transfer", nullptr) }; + g_signal_connect(actTransfer, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->transfer(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actTransfer)); + //Import From File Action + GSimpleAction* actImport{ g_simple_action_new("import", nullptr) }; + g_signal_connect(actImport, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->importFromFile(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actImport)); + //Export To CSV Action + GSimpleAction* actExportCSV{ g_simple_action_new("exportCSV", nullptr) }; + g_signal_connect(actExportCSV, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->exportToCSV(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actExportCSV)); + //Export To PDF Action + GSimpleAction* actExportPDF{ g_simple_action_new("exportPDF", nullptr) }; + g_signal_connect(actExportPDF, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->exportToPDF(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actExportPDF)); + //Account Settings Action + GSimpleAction* actSettings{ g_simple_action_new("settings", nullptr) }; + g_signal_connect(actSettings, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->accountSettings(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_actionGroup), G_ACTION(actSettings)); + //Load overview amounts + adw_preferences_group_set_title(ADW_PREFERENCES_GROUP(gtk_builder_get_object(m_builder, "overviewGroup")), m_controller->getMetadata().getName().c_str()); + gtk_label_set_label(GTK_LABEL(gtk_builder_get_object(m_builder, "overviewTotalLabel")), m_controller->getTotalAmountString().c_str()); + gtk_label_set_label(GTK_LABEL(gtk_builder_get_object(m_builder, "overviewIncomeLabel")), m_controller->getIncomeAmountString().c_str()); + gtk_label_set_label(GTK_LABEL(gtk_builder_get_object(m_builder, "overviewExpenseLabel")), m_controller->getExpenseAmountString().c_str()); + //Load overview reminders + std::vector reminders{ m_controller->getTransactionReminders() }; + if(reminders.empty()) + { + AdwActionRow* row{ ADW_ACTION_ROW(adw_action_row_new()) }; + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), _("No Transaction Reminders")); + adw_action_row_add_prefix(row, gtk_image_new_from_icon_name("bell-outline-symbolic")); + adw_preferences_group_add(ADW_PREFERENCES_GROUP(gtk_builder_get_object(m_builder, "remindersGroup")), GTK_WIDGET(row)); + } + for(const TransactionReminder& reminder : reminders) + { + AdwActionRow* row{ ADW_ACTION_ROW(adw_action_row_new()) }; + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), reminder.getDescription().c_str()); + adw_action_row_set_subtitle(row, reminder.getWhenString().c_str()); + adw_action_row_add_prefix(row, gtk_image_new_from_icon_name("bell-symbolic")); + adw_action_row_add_suffix(row, gtk_label_new(reminder.getAmountString().c_str())); + } + //Load overview groups + for(const std::pair& pair : m_controller->getGroups()) + { + GdkPixbuf* colorBuf{ gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 1, 1) }; + gdk_pixbuf_fill(colorBuf, pair.first.getColor().toHex(false)); + GdkTexture* colorTexture{ gdk_texture_new_for_pixbuf(colorBuf) }; + AdwAvatar* colorAvatar{ ADW_AVATAR(adw_avatar_new(8, nullptr, false)) }; + gtk_widget_set_valign(GTK_WIDGET(colorAvatar), GTK_ALIGN_CENTER); + adw_avatar_set_custom_image(ADW_AVATAR(colorAvatar), GDK_PAINTABLE(colorTexture)); + AdwActionRow* row{ ADW_ACTION_ROW(adw_action_row_new()) }; + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), pair.first.getName().c_str()); + if(!pair.first.getDescription().empty()) + { + adw_action_row_set_subtitle(row, pair.first.getDescription().c_str()); + } + adw_action_row_add_prefix(row, GTK_WIDGET(colorAvatar)); + adw_action_row_add_suffix(row, gtk_label_new(pair.second.c_str())); + if(pair.first.getName() != _("Ungrouped")) + { + GtkButton* editButton{ GTK_BUTTON(gtk_button_new_from_icon_name("document-edit-symbolic")) }; + gtk_widget_set_tooltip_text(GTK_WIDGET(editButton), _("Edit Group")); + gtk_widget_set_valign(GTK_WIDGET(editButton), GTK_ALIGN_CENTER); + gtk_widget_add_css_class(GTK_WIDGET(editButton), "flat"); + adw_action_row_add_suffix(row, GTK_WIDGET(editButton)); + adw_action_row_set_activatable_widget(row, GTK_WIDGET(editButton)); + } + adw_preferences_group_add(ADW_PREFERENCES_GROUP(gtk_builder_get_object(m_builder, "groupsGroup")), GTK_WIDGET(row)); + g_object_unref(colorTexture); + g_object_unref(colorBuf); + } + } + + AccountPage::~AccountPage() + { + g_object_unref(m_actionGroup); + g_object_unref(m_builder); + } + + AdwViewStack* AccountPage::gobj() + { + return m_page; + } + + const std::string& AccountPage::getTitle() const + { + return m_controller->getMetadata().getName(); + } + + void AccountPage::newTransaction() + { + + } + + void AccountPage::newGroup() + { + + } + + void AccountPage::transfer() + { + + } + + void AccountPage::importFromFile() + { + + } + + void AccountPage::exportToCSV() + { + + } + + void AccountPage::exportToPDF() + { + + } + + void AccountPage::accountSettings() + { + DialogPtr settingsDialog{ m_controller->createAccountSettingsDialogController(), m_parent }; + settingsDialog->closed() += [&](const EventArgs& args) + { + m_controller->accountNameChanged().invoke({ m_controller->getMetadata().getName() }); + }; + settingsDialog->present(); + } +} diff --git a/org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp b/org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp new file mode 100644 index 000000000..ba02fdc3c --- /dev/null +++ b/org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp @@ -0,0 +1,231 @@ +#include "views/accountsettingsdialog.h" +#include +#include "models/currencycheckstatus.h" + +using namespace Nickvision::Money::GNOME::Helpers; +using namespace Nickvision::Money::Shared::Controllers; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::GNOME::Views +{ + AccountSettingsDialog::AccountSettingsDialog(const std::shared_ptr& controller, GtkWindow* parent) + : DialogBase{ parent, "account_settings_dialog" }, + m_controller{ controller } + { + //Load + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "accountNameRow")), m_controller->getMetadata().getName().c_str()); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "accountTypeRow")), static_cast(m_controller->getMetadata().getType())); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionTypeRow")), static_cast(m_controller->getMetadata().getDefaultTransactionType())); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionRemindersRow")), static_cast(m_controller->getMetadata().getTransactionRemindersThreshold())); + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(gtk_builder_get_object(m_builder, "systemCurrencyRow")), m_controller->getReportedCurrencyString().c_str()); + adw_expander_row_set_enable_expansion(ADW_EXPANDER_ROW(gtk_builder_get_object(m_builder, "customCurrencyRow")), m_controller->getMetadata().getUseCustomCurrency()); + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customSymbolRow")), m_controller->getMetadata().getCustomCurrency().getSymbol().c_str()); + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customCodeRow")), m_controller->getMetadata().getCustomCurrency().getCode().c_str()); + switch(m_controller->getMetadata().getCustomCurrency().getDecimalSeparator()) + { + case '.': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), 0); + break; + case ',': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), 1); + break; + default: + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), 2); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), true); + std::string separator{ std::to_string(m_controller->getMetadata().getCustomCurrency().getDecimalSeparator()) }; + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), separator.c_str()); + break; + } + switch(m_controller->getMetadata().getCustomCurrency().getGroupSeparator()) + { + case '.': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 0); + break; + case ',': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 1); + break; + case '\'': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 2); + break; + case '\0': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 3); + break; + default: + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 4); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), true); + std::string separator{ std::to_string(m_controller->getMetadata().getCustomCurrency().getGroupSeparator()) }; + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), separator.c_str()); + break; + } + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalDigitsRow")), static_cast(m_controller->getMetadata().getCustomCurrency().getDecimalDigits() - 2)); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customAmountStyleRow")), static_cast(m_controller->getMetadata().getCustomCurrency().getAmountStyle())); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "removePasswordRow")), m_controller->isEncrypted()); + //Signals + g_signal_connect(gtk_builder_get_object(m_builder, "accountNameRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onAccountInfoChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "accountTypeRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onAccountInfoChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "transactionTypeRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onAccountInfoChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "transactionRemindersRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onAccountInfoChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customCurrencyRow"), "notify::enable-expansion", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customSymbolRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customCodeRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customGroupSeparatorRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customDecimalDigitsRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customAmountStyleRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "newPasswordRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onNewPasswordChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "newPasswordConfirmRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onNewPasswordChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "changePasswordRow"), "activated", G_CALLBACK(+[](AdwActionRow*, gpointer data){ reinterpret_cast(data)->changePassword(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removePasswordRow"), "activated", G_CALLBACK(+[](AdwActionRow*, gpointer data){ reinterpret_cast(data)->removePassword(); }), this); + } + + void AccountSettingsDialog::onAccountInfoChanged() + { + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "accountNameRow")), "error"); + if(!m_controller->setName(gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "accountNameRow"))))) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "accountNameRow")), "error"); + } + m_controller->setAccountType(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "accountTypeRow"))))); + m_controller->setDefaultTransactionType(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionTypeRow"))))); + m_controller->setTransactionRemindersThreshold(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionRemindersRow"))))); + } + + void AccountSettingsDialog::onCurrencyChange() + { + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customCodeRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), "error"); + if(!adw_expander_row_get_enable_expansion(ADW_EXPANDER_ROW(gtk_builder_get_object(m_builder, "customCurrencyRow")))) + { + m_controller->setCustomCurrencyOff(); + } + else + { + std::string symbol{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customSymbolRow"))) }; + std::string code{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customCodeRow"))) }; + char decimalSeparator; + switch(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")))) + { + case 0: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), false); + decimalSeparator = '.'; + break; + case 1: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), false); + decimalSeparator = ','; + break; + default: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), true); + decimalSeparator = gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")))[0]; + break; + } + char groupSeparator; + switch(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")))) + { + case 0: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = '.'; + break; + case 1: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = ','; + break; + case 2: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = '\''; + break; + case 3: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = '\0'; + break; + default: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), true); + groupSeparator = gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")))[0]; + break; + } + int decimalDigits{ static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalDigitsRow")))) + 2 }; + AmountStyle amountStyle{ static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customAmountStyleRow")))) }; + CurrencyCheckStatus status{ m_controller->setCustomCurrency(symbol, code, decimalSeparator, groupSeparator, decimalDigits, amountStyle) }; + if(status == CurrencyCheckStatus::EmptySymbol) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + } + else if(status == CurrencyCheckStatus::EmptyCode) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customCodeRow")), "error"); + } + else if(status == CurrencyCheckStatus::EmptyDecimalSeparator) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + } + else if(status == CurrencyCheckStatus::SameSeparators) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), "error"); + } + else if(status == CurrencyCheckStatus::SameSymbolAndDecimalSeparator) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + } + else if(status == CurrencyCheckStatus::SameSymbolAndGroupSeparator) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), "error"); + } + } + } + + void AccountSettingsDialog::onNewPasswordChange() + { + std::string newPassword{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "newPasswordRow"))) }; + std::string newPasswordConfirm{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "newPasswordConfirmRow"))) }; + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "newPasswordRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "newPasswordConfirmRow")), "error"); + if(newPassword.empty()) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "newPasswordRow")), "error"); + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(m_builder, "changePasswordRow")), false); + } + else if(newPassword == newPasswordConfirm) + { + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(m_builder, "changePasswordRow")), true); + } + else + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "newPasswordConfirmRow")), "error"); + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(m_builder, "changePasswordRow")), false); + } + } + + void AccountSettingsDialog::changePassword() + { + if(m_controller->setPassword(gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "newPasswordRow"))))) + { + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "removePasswordRow")), true); + adw_preferences_dialog_add_toast(ADW_PREFERENCES_DIALOG(m_dialog), adw_toast_new(_("Password changed"))); + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "newPasswordRow")), ""); + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "newPasswordConfirmRow")), ""); + } + else + { + adw_preferences_dialog_add_toast(ADW_PREFERENCES_DIALOG(m_dialog), adw_toast_new(_("Unable to change password"))); + } + } + + void AccountSettingsDialog::removePassword() + { + if(m_controller->setPassword("")) + { + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "removePasswordRow")), false); + adw_preferences_dialog_add_toast(ADW_PREFERENCES_DIALOG(m_dialog), adw_toast_new(_("Password removed"))); + } + else + { + adw_preferences_dialog_add_toast(ADW_PREFERENCES_DIALOG(m_dialog), adw_toast_new(_("Unable to change password"))); + } + } +} diff --git a/org.nickvision.money.gnome/src/views/mainwindow.cpp b/org.nickvision.money.gnome/src/views/mainwindow.cpp new file mode 100644 index 000000000..67e8a5519 --- /dev/null +++ b/org.nickvision.money.gnome/src/views/mainwindow.cpp @@ -0,0 +1,440 @@ +#include "views/mainwindow.h" +#include +#include +#include +#include +#include +#include +#include "helpers/builder.h" +#include "helpers/dialogptr.h" +#include "views/newaccountdialog.h" +#include "views/preferencesdialog.h" + +using namespace Nickvision; +using namespace Nickvision::App; +using namespace Nickvision::Events; +using namespace Nickvision::Localization; +using namespace Nickvision::Money::GNOME::Controls; +using namespace Nickvision::Money::GNOME::Helpers; +using namespace Nickvision::Money::Shared::Controllers; +using namespace Nickvision::Money::Shared::Models; +using namespace Nickvision::Notifications; + +namespace Nickvision::Money::GNOME::Views +{ + enum Pages + { + Home = 0, + CurrencyConverter = 1, + Dashboard = 3 + }; + + MainWindow::MainWindow(const std::shared_ptr& controller, GtkApplication* app) + : m_controller{ controller }, + m_app{ app }, + m_builder{ BuilderHelpers::fromBlueprint("main_window") }, + m_window{ ADW_APPLICATION_WINDOW(gtk_builder_get_object(m_builder, "root")) }, + m_currencyConverterPage{ GTK_WINDOW(m_window) } + { + //Setup Window + gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(m_window)); + gtk_window_set_title(GTK_WINDOW(m_window), m_controller->getAppInfo().getShortName().c_str()); + gtk_window_set_icon_name(GTK_WINDOW(m_window), m_controller->getAppInfo().getId().c_str()); + if(m_controller->isDevVersion()) + { + gtk_widget_add_css_class(GTK_WIDGET(m_window), "devel"); + } + adw_navigation_page_set_title(ADW_NAVIGATION_PAGE(gtk_builder_get_object(m_builder, "navPageSidebar")), m_controller->getAppInfo().getShortName().c_str()); + adw_status_page_set_title(ADW_STATUS_PAGE(gtk_builder_get_object(m_builder, "statusPageHome")), m_controller->getGreeting().c_str()); + //Register Events + g_signal_connect(m_window, "close_request", G_CALLBACK(+[](GtkWindow*, gpointer data) -> bool { return reinterpret_cast(data)->onCloseRequested(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "listNavItems"), "row-activated", G_CALLBACK(+[](GtkListBox*, GtkListBoxRow*, gpointer data) { adw_navigation_split_view_set_show_content(ADW_NAVIGATION_SPLIT_VIEW(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "navView")), true); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "listNavItems"), "row-selected", G_CALLBACK(+[](GtkListBox* self, GtkListBoxRow* row, gpointer data) { reinterpret_cast(data)->onNavItemSelected(self, row); }), this); + m_controller->notificationSent() += [&](const NotificationSentEventArgs& args) { onNotificationSent(args); }; + m_controller->shellNotificationSent() += [&](const ShellNotificationSentEventArgs& args) { onShellNotificationSent(args); }; + m_controller->recentAccountsChanged() += [&](const ParamEventArgs>& args) { loadRecentAccounts(args); }; + m_controller->accountAdded() += [&](const ParamEventArgs&>& args) { onAccountAdded(args); }; + //Drop Target + GtkDropTarget* dropTarget{ gtk_drop_target_new(G_TYPE_FILE, GDK_ACTION_COPY) }; + g_signal_connect(dropTarget, "drop", G_CALLBACK(+[](GtkDropTarget*, const GValue* value, double, double, gpointer data) -> bool { return reinterpret_cast(data)->onDrop(value); }), this); + gtk_widget_add_controller(GTK_WIDGET(m_window), GTK_EVENT_CONTROLLER(dropTarget)); + //Quit Action + GSimpleAction* actQuit{ g_simple_action_new("quit", nullptr) }; + g_signal_connect(actQuit, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->quit(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actQuit)); + SET_ACCEL_FOR_ACTION(m_app, "win.quit", "Q"); + //Preferences Action + GSimpleAction* actPreferences{ g_simple_action_new("preferences", nullptr) }; + g_signal_connect(actPreferences, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->preferences(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actPreferences)); + SET_ACCEL_FOR_ACTION(m_app, "win.preferences", "comma"); + //Keyboard Shortcuts Action + GSimpleAction* actKeyboardShortcuts{ g_simple_action_new("keyboardShortcuts", nullptr) }; + g_signal_connect(actKeyboardShortcuts, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->keyboardShortcuts(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actKeyboardShortcuts)); + SET_ACCEL_FOR_ACTION(m_app, "win.keyboardShortcuts", "question"); + //Preferences Action + GSimpleAction* actHelp{ g_simple_action_new("help", nullptr) }; + g_signal_connect(actHelp, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->help(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actHelp)); + SET_ACCEL_FOR_ACTION(m_app, "win.help", "F1"); + //About Action + GSimpleAction* actAbout{ g_simple_action_new("about", nullptr) }; + g_signal_connect(actAbout, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->about(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actAbout)); + SET_ACCEL_FOR_ACTION(m_app, "win.about", "F1"); + //New Account Action + GSimpleAction* actNewAccount{ g_simple_action_new("newAccount", nullptr) }; + g_signal_connect(actNewAccount, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->newAccount(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actNewAccount)); + SET_ACCEL_FOR_ACTION(m_app, "win.newAccount", "N"); + //Open Account Action + GSimpleAction* actOpenAccount{ g_simple_action_new("openAccount", nullptr) }; + g_signal_connect(actOpenAccount, "activate", G_CALLBACK(+[](GSimpleAction*, GVariant*, gpointer data){ reinterpret_cast(data)->openAccount(); }), this); + g_action_map_add_action(G_ACTION_MAP(m_window), G_ACTION(actOpenAccount)); + SET_ACCEL_FOR_ACTION(m_app, "win.openAccount", "O"); + //Recent Account Callbacks + g_signal_connect(gtk_builder_get_object(m_builder, "recentAccount1PopoverRow"), "activated", G_CALLBACK(+[](AdwActionRow* row, gpointer data){ reinterpret_cast(data)->openAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(row))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removeRecentAccount1PopoverButton"), "clicked", G_CALLBACK(+[](GtkButton* button, gpointer data){ reinterpret_cast(data)->removeRecentAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "recentAccount1PopoverRow")))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "recentAccount2PopoverRow"), "activated", G_CALLBACK(+[](AdwActionRow* row, gpointer data){ reinterpret_cast(data)->openAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(row))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removeRecentAccount2PopoverButton"), "clicked", G_CALLBACK(+[](GtkButton* button, gpointer data){ reinterpret_cast(data)->removeRecentAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "recentAccount2PopoverRow")))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "recentAccount3PopoverRow"), "activated", G_CALLBACK(+[](AdwActionRow* row, gpointer data){ reinterpret_cast(data)->openAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(row))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removeRecentAccount3PopoverButton"), "clicked", G_CALLBACK(+[](GtkButton* button, gpointer data){ reinterpret_cast(data)->removeRecentAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "recentAccount3PopoverRow")))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "recentAccount1Row"), "activated", G_CALLBACK(+[](AdwActionRow* row, gpointer data){ reinterpret_cast(data)->openAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(row))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removeRecentAccount1Button"), "clicked", G_CALLBACK(+[](GtkButton* button, gpointer data){ reinterpret_cast(data)->removeRecentAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "recentAccount1Row")))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "recentAccount2Row"), "activated", G_CALLBACK(+[](AdwActionRow* row, gpointer data){ reinterpret_cast(data)->openAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(row))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removeRecentAccount2Button"), "clicked", G_CALLBACK(+[](GtkButton* button, gpointer data){ reinterpret_cast(data)->removeRecentAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "recentAccount2Row")))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "recentAccount3Row"), "activated", G_CALLBACK(+[](AdwActionRow* row, gpointer data){ reinterpret_cast(data)->openAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(row))); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "removeRecentAccount3Button"), "clicked", G_CALLBACK(+[](GtkButton* button, gpointer data){ reinterpret_cast(data)->removeRecentAccount(gtk_widget_get_tooltip_text(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "recentAccount3Row")))); }), this); + } + + MainWindow::~MainWindow() + { + gtk_window_destroy(GTK_WINDOW(m_window)); + g_object_unref(m_builder); + } + + GObject* MainWindow::gobj() const + { + return G_OBJECT(m_window); + } + + void MainWindow::show() + { + gtk_window_present(GTK_WINDOW(m_window)); + m_controller->connectTaskbar(m_controller->getAppInfo().getId() + ".desktop"); + m_controller->startup(); + gtk_list_box_select_row(GTK_LIST_BOX(gtk_builder_get_object(m_builder, "listNavItems")), gtk_list_box_get_row_at_index(GTK_LIST_BOX(gtk_builder_get_object(m_builder, "listNavItems")), 0)); + } + + bool MainWindow::onCloseRequested() + { + return false; + } + + bool MainWindow::onDrop(const GValue* value) + { + if(G_VALUE_HOLDS(value, G_TYPE_FILE)) + { + openAccount(g_file_get_path(G_FILE(g_value_get_object(value)))); + return true; + } + return false; + } + + void MainWindow::onNotificationSent(const NotificationSentEventArgs& args) + { + AdwToast* toast{ adw_toast_new(args.getMessage().c_str()) }; + adw_toast_overlay_add_toast(ADW_TOAST_OVERLAY(gtk_builder_get_object(m_builder, "toastOverlay")), toast); + } + + void MainWindow::onShellNotificationSent(const ShellNotificationSentEventArgs& args) + { + Aura::getActive().getLogger().log(Logging::LogLevel::Debug, "ShellNotification sent. (" + args.getMessage() + ")"); + ShellNotification::send(args, _("Open")); + } + + void MainWindow::quit() + { + if(!onCloseRequested()) + { + g_application_quit(G_APPLICATION(m_app)); + } + } + + void MainWindow::preferences() + { + DialogPtr dialog{ m_controller->createPreferencesViewController(), GTK_WINDOW(m_window) }; + dialog->present(); + } + + void MainWindow::keyboardShortcuts() + { + GtkBuilder* builderHelp{ BuilderHelpers::fromBlueprint("shortcuts_dialog") }; + GtkShortcutsWindow* shortcuts{ GTK_SHORTCUTS_WINDOW(gtk_builder_get_object(builderHelp, "root")) }; + gtk_window_set_transient_for(GTK_WINDOW(shortcuts), GTK_WINDOW(m_window)); + gtk_window_set_icon_name(GTK_WINDOW(shortcuts), m_controller->getAppInfo().getId().c_str()); + g_signal_connect(shortcuts, "close-request", G_CALLBACK(+[](GtkWindow*, gpointer data){ g_object_unref(reinterpret_cast(data)); }), builderHelp); + gtk_window_present(GTK_WINDOW(shortcuts)); + } + + void MainWindow::help() + { + std::string helpUrl{ Documentation::getHelpUrl("index") }; + GtkUriLauncher* launcher{ gtk_uri_launcher_new(helpUrl.c_str()) }; + gtk_uri_launcher_launch(launcher, GTK_WINDOW(m_window), nullptr, GAsyncReadyCallback(+[](GObject* source, GAsyncResult* res, gpointer) + { + gtk_uri_launcher_launch_finish(GTK_URI_LAUNCHER(source), res, nullptr); + g_object_unref(source); + }), nullptr); + } + + void MainWindow::about() + { + std::string extraDebug; + extraDebug += "GTK " + std::to_string(gtk_get_major_version()) + "." + std::to_string(gtk_get_minor_version()) + "." + std::to_string(gtk_get_micro_version()) + "\n"; + extraDebug += "libadwaita " + std::to_string(adw_get_major_version()) + "." + std::to_string(adw_get_minor_version()) + "." + std::to_string(adw_get_micro_version()); + AdwAboutDialog* dialog{ ADW_ABOUT_DIALOG(adw_about_dialog_new()) }; + adw_about_dialog_set_application_name(dialog, m_controller->getAppInfo().getShortName().c_str()); + adw_about_dialog_set_application_icon(dialog, std::string(m_controller->getAppInfo().getId() + (m_controller->isDevVersion() ? "-devel" : "")).c_str()); + adw_about_dialog_set_developer_name(dialog, "Nickvision"); + adw_about_dialog_set_version(dialog, m_controller->getAppInfo().getVersion().toString().c_str()); + adw_about_dialog_set_release_notes(dialog, m_controller->getAppInfo().getHtmlChangelog().c_str()); + adw_about_dialog_set_debug_info(dialog, m_controller->getDebugInformation(extraDebug).c_str()); + adw_about_dialog_set_comments(dialog, m_controller->getAppInfo().getDescription().c_str()); + adw_about_dialog_set_license_type(dialog, GTK_LICENSE_GPL_3_0); + adw_about_dialog_set_copyright(dialog, "© Nickvision 2021-2024"); + adw_about_dialog_set_website(dialog, "https://nickvision.org/"); + adw_about_dialog_set_issue_url(dialog, m_controller->getAppInfo().getIssueTracker().c_str()); + adw_about_dialog_set_support_url(dialog, m_controller->getAppInfo().getSupportUrl().c_str()); + adw_about_dialog_add_link(dialog, _("GitHub Repo"), m_controller->getAppInfo().getSourceRepo().c_str()); + for(const std::pair& pair : m_controller->getAppInfo().getExtraLinks()) + { + adw_about_dialog_add_link(dialog, pair.first.c_str(), pair.second.c_str()); + } + std::vector urls; + std::vector developers{ AppInfo::convertUrlMapToVector(m_controller->getAppInfo().getDevelopers()) }; + for(const std::string& developer : developers) + { + urls.push_back(developer.c_str()); + } + urls.push_back(nullptr); + adw_about_dialog_set_developers(dialog, &urls[0]); + urls.clear(); + std::vector designers{ AppInfo::convertUrlMapToVector(m_controller->getAppInfo().getDesigners()) }; + for(const std::string& designer : designers) + { + urls.push_back(designer.c_str()); + } + urls.push_back(nullptr); + adw_about_dialog_set_designers(dialog, &urls[0]); + urls.clear(); + std::vector artists{ AppInfo::convertUrlMapToVector(m_controller->getAppInfo().getArtists()) }; + for(const std::string& artist : artists) + { + urls.push_back(artist.c_str()); + } + urls.push_back(nullptr); + adw_about_dialog_set_artists(dialog, &urls[0]); + adw_about_dialog_set_translator_credits(dialog, m_controller->getAppInfo().getTranslatorCredits().c_str()); + adw_dialog_present(ADW_DIALOG(dialog), GTK_WIDGET(m_window)); + } + + void MainWindow::onNavItemSelected(GtkListBox* box, GtkListBoxRow* row) + { + adw_navigation_split_view_set_show_content(ADW_NAVIGATION_SPLIT_VIEW(gtk_builder_get_object(m_builder, "navView")), true); + //Reset content header and switcher bar + adw_header_bar_set_title_widget(ADW_HEADER_BAR(gtk_builder_get_object(m_builder, "contentHeaderBar")), nullptr); + adw_view_switcher_bar_set_stack(ADW_VIEW_SWITCHER_BAR(gtk_builder_get_object(m_builder, "contentSwitcherBar")), nullptr); + if(row == gtk_list_box_get_row_at_index(box, Pages::Home)) + { + adw_navigation_page_set_title(ADW_NAVIGATION_PAGE(gtk_builder_get_object(m_builder, "navPageContent")), _("Home")); + adw_view_stack_set_visible_child_name(ADW_VIEW_STACK(gtk_builder_get_object(m_builder, "viewStack")), "home"); + } + else if(row == gtk_list_box_get_row_at_index(box, Pages::CurrencyConverter)) + { + adw_navigation_page_set_title(ADW_NAVIGATION_PAGE(gtk_builder_get_object(m_builder, "navPageContent")), _("Currency Converter")); + adw_view_stack_set_visible_child_name(ADW_VIEW_STACK(gtk_builder_get_object(m_builder, "viewStack")), "custom"); + adw_bin_set_child(ADW_BIN(gtk_builder_get_object(m_builder, "customBin")), GTK_WIDGET(m_currencyConverterPage.gobj())); + } + else if(row == gtk_list_box_get_row_at_index(box, Pages::Dashboard)) + { + adw_navigation_page_set_title(ADW_NAVIGATION_PAGE(gtk_builder_get_object(m_builder, "navPageContent")), _("Dashboard")); + if(m_controller->hasOpenAccounts()) + { + adw_view_stack_set_visible_child_name(ADW_VIEW_STACK(gtk_builder_get_object(m_builder, "viewStack")), "custom"); + adw_bin_set_child(ADW_BIN(gtk_builder_get_object(m_builder, "customBin")), nullptr); + } + else + { + adw_view_stack_set_visible_child_name(ADW_VIEW_STACK(gtk_builder_get_object(m_builder, "viewStack")), "noAccounts"); + } + } + else //Account + { + const std::shared_ptr& page{ m_accountPages.at(gtk_widget_get_tooltip_text(GTK_WIDGET(row))) }; + //Set AccountPage as child + adw_navigation_page_set_title(ADW_NAVIGATION_PAGE(gtk_builder_get_object(m_builder, "navPageContent")), page->getTitle().c_str()); + adw_view_stack_set_visible_child_name(ADW_VIEW_STACK(gtk_builder_get_object(m_builder, "viewStack")), "custom"); + adw_bin_set_child(ADW_BIN(gtk_builder_get_object(m_builder, "customBin")), GTK_WIDGET(page->gobj())); + //Set content header and switcher bar for AccountPage's viewstack + if(!adw_navigation_split_view_get_collapsed(ADW_NAVIGATION_SPLIT_VIEW(gtk_builder_get_object(m_builder, "navView")))) + { + AdwViewSwitcher* viewSwitcher{ ADW_VIEW_SWITCHER(adw_view_switcher_new()) }; + adw_view_switcher_set_policy(viewSwitcher, ADW_VIEW_SWITCHER_POLICY_WIDE); + adw_view_switcher_set_stack(viewSwitcher, page->gobj()); + adw_header_bar_set_title_widget(ADW_HEADER_BAR(gtk_builder_get_object(m_builder, "contentHeaderBar")), GTK_WIDGET(viewSwitcher)); + } + adw_view_switcher_bar_set_stack(ADW_VIEW_SWITCHER_BAR(gtk_builder_get_object(m_builder, "contentSwitcherBar")), page->gobj()); + } + } + + void MainWindow::onAccountAdded(const ParamEventArgs&>& args) + { + //Create sidebar item for account + GtkBox* row{ GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12)) }; + gtk_widget_set_margin_start(GTK_WIDGET(row), 6); + gtk_widget_set_margin_top(GTK_WIDGET(row), 6); + gtk_widget_set_margin_end(GTK_WIDGET(row), 6); + gtk_widget_set_margin_bottom(GTK_WIDGET(row), 6); + GtkImage* img{ GTK_IMAGE(gtk_image_new_from_icon_name("wallet2-symbolic")) }; + gtk_box_append(row, GTK_WIDGET(img)); + GtkLabel* lbl{ GTK_LABEL(gtk_label_new(args.getParam()->getMetadata().getName().c_str())) }; + gtk_box_append(row, GTK_WIDGET(lbl)); + gtk_list_box_append(GTK_LIST_BOX(gtk_builder_get_object(m_builder, "listNavItems")), GTK_WIDGET(row)); + //Handle account name change event + args.getParam()->accountNameChanged() += [lbl](const ParamEventArgs& args){ gtk_label_set_text(lbl, args.getParam().c_str()); }; + //Create view for account + m_accountPages[args.getParam()->getPath()] = std::make_shared(args.getParam(), GTK_WINDOW(m_window)); + GtkListBoxRow* listRow{ gtk_list_box_get_row_at_index(GTK_LIST_BOX(gtk_builder_get_object(m_builder, "listNavItems")), m_accountPages.size() + Pages::Dashboard) }; + gtk_widget_set_tooltip_text(GTK_WIDGET(listRow), args.getParam()->getPath().string().c_str()); + gtk_list_box_select_row(GTK_LIST_BOX(gtk_builder_get_object(m_builder, "listNavItems")), listRow); + } + + void MainWindow::newAccount() + { + gtk_popover_popdown(GTK_POPOVER(gtk_builder_get_object(m_builder, "accountMenuPopover"))); + DialogPtr newAccountDialog{ m_controller->createNewAccountDialogController(), GTK_WINDOW(m_window) }; + newAccountDialog->created() += [&](const ParamEventArgs>& args) + { + m_controller->newAccount(args.getParam()); + }; + newAccountDialog->present(); + } + + void MainWindow::openAccount() + { + gtk_popover_popdown(GTK_POPOVER(gtk_builder_get_object(m_builder, "accountMenuPopover"))); + GtkFileDialog* fileDialog{ gtk_file_dialog_new() }; + gtk_file_dialog_set_title(fileDialog, _("Open Account")); + GtkFileFilter* filter{ gtk_file_filter_new() }; + gtk_file_filter_set_name(filter, _("Nickvision Denaro Account (*.nmoney)")); + gtk_file_filter_add_pattern(filter, "*.nmoney"); + gtk_file_filter_add_pattern(filter, "*.NMONEY"); + GListStore* filters{ g_list_store_new(gtk_file_filter_get_type()) }; + g_list_store_append(filters, G_OBJECT(filter)); + gtk_file_dialog_set_filters(fileDialog, G_LIST_MODEL(filters)); + gtk_file_dialog_open(fileDialog, GTK_WINDOW(m_window), nullptr, GAsyncReadyCallback(+[](GObject* self, GAsyncResult* res, gpointer data) + { + GFile* file{ gtk_file_dialog_open_finish(GTK_FILE_DIALOG(self), res, nullptr) }; + if(file) + { + reinterpret_cast(data)->openAccount(g_file_get_path(file)); + } + }), this); + } + + void MainWindow::loadRecentAccounts(const ParamEventArgs>& args) + { + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "noRecentAccountsPopoverRow")), args.getParam().size() == 0); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "recentAccount1PopoverRow")), false); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "recentAccount2PopoverRow")), false); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "recentAccount3PopoverRow")), false); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "noRecentAccountsRow")), args.getParam().size() == 0); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "recentAccount1Row")), false); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "recentAccount2Row")), false); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "recentAccount3Row")), false); + for(size_t i = 0; i < args.getParam().size(); i++) + { + const RecentAccount& recentAccount{ args.getParam().at(i) }; + std::string popoverRowName{ "recentAccount" + std::to_string(i + 1) + "PopoverRow" }; + std::string rowName{ "recentAccount" + std::to_string(i + 1) + "Row" }; + AdwActionRow* popoverRow{ ADW_ACTION_ROW(gtk_builder_get_object(m_builder, popoverRowName.c_str())) }; + AdwActionRow* row{ ADW_ACTION_ROW(gtk_builder_get_object(m_builder, rowName.c_str())) }; + gtk_widget_set_visible(GTK_WIDGET(popoverRow), true); + gtk_widget_set_visible(GTK_WIDGET(row), true); + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(popoverRow), recentAccount.getName().c_str()); + adw_preferences_row_set_title(ADW_PREFERENCES_ROW(row), recentAccount.getName().c_str()); + switch(recentAccount.getType()) + { + case AccountType::Checking: + adw_action_row_set_subtitle(popoverRow, _("Checking")); + adw_action_row_set_subtitle(row, _("Checking")); + break; + case AccountType::Savings: + adw_action_row_set_subtitle(popoverRow, _("Savings")); + adw_action_row_set_subtitle(row, _("Savings")); + break; + case AccountType::Business: + adw_action_row_set_subtitle(popoverRow, _("Business")); + adw_action_row_set_subtitle(row, _("Business")); + break; + } + gtk_widget_set_tooltip_text(GTK_WIDGET(popoverRow), recentAccount.getPath().string().c_str()); + gtk_widget_set_tooltip_text(GTK_WIDGET(row), recentAccount.getPath().string().c_str()); + } + } + + void MainWindow::removeRecentAccount(const std::filesystem::path& path) + { + m_controller->removeRecentAccount(path); + } + + void MainWindow::openAccount(const std::filesystem::path& path) + { + gtk_popover_popdown(GTK_POPOVER(gtk_builder_get_object(m_builder, "accountMenuPopover"))); + if(StringHelpers::toLower(path.extension().string()) != ".nmoney") + { + return; + } + std::string password; + //Get password if needed + if(m_controller->isAccountPasswordProtected(path)) + { + bool done{ false }; + GValue valTrue; + g_value_init(&valTrue, G_TYPE_BOOLEAN); + g_value_set_boolean(&valTrue, true); + GValue valPlaceholderText; + g_value_init(&valPlaceholderText, G_TYPE_STRING); + g_value_set_string(&valPlaceholderText, _("Enter password here")); + GtkPasswordEntry* passwordEntry{ GTK_PASSWORD_ENTRY(gtk_password_entry_new()) }; + gtk_password_entry_set_show_peek_icon(passwordEntry, true); + g_object_set_property(G_OBJECT(passwordEntry), "activates-default", &valTrue); + g_object_set_property(G_OBJECT(passwordEntry), "placeholder-text", &valPlaceholderText); + g_signal_connect(passwordEntry, "changed", G_CALLBACK(+[](GtkEditable* self, gpointer data){ *(reinterpret_cast(data)) = gtk_editable_get_text(self); }), &password); + AdwAlertDialog* passwordDialog{ ADW_ALERT_DIALOG(adw_alert_dialog_new(path.filename().string().c_str(), nullptr)) }; + adw_alert_dialog_set_extra_child(passwordDialog, GTK_WIDGET(passwordEntry)); + adw_alert_dialog_add_responses(passwordDialog, "cancel", _("Cancel"), "unlock", _("Unlock"), nullptr); + adw_alert_dialog_set_default_response(passwordDialog, "unlock"); + adw_alert_dialog_set_close_response(passwordDialog, "cancel"); + adw_alert_dialog_set_response_appearance(passwordDialog, "unlock", ADW_RESPONSE_SUGGESTED); + g_signal_connect(passwordDialog, "response", G_CALLBACK(+[](AdwAlertDialog* self, const char* response, gpointer data) + { + if(std::string(response) != "unlock") + { + *(reinterpret_cast(data)) = ""; + } + adw_dialog_force_close(ADW_DIALOG(self)); + }), &password); + g_signal_connect(passwordDialog, "closed", G_CALLBACK(+[](AdwDialog*,gpointer data){ *(reinterpret_cast(data)) = true; }), &done); + adw_dialog_present(ADW_DIALOG(passwordDialog), GTK_WIDGET(m_window)); + while(!done) + { + g_main_context_iteration(g_main_context_default(), false); + } + } + //Open account + m_controller->openAccount(path, password); + } +} diff --git a/org.nickvision.money.gnome/src/views/newaccountdialog.cpp b/org.nickvision.money.gnome/src/views/newaccountdialog.cpp new file mode 100644 index 000000000..93d1b5ab8 --- /dev/null +++ b/org.nickvision.money.gnome/src/views/newaccountdialog.cpp @@ -0,0 +1,295 @@ +#include "views/newaccountdialog.h" +#include + +using namespace Nickvision::Events; +using namespace Nickvision::Money::GNOME::Helpers; +using namespace Nickvision::Money::Shared::Controllers; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::GNOME::Views +{ + NewAccountDialog::NewAccountDialog(const std::shared_ptr& controller, GtkWindow* parent) + : DialogBase{ parent, "new_account_dialog" }, + m_controller{ controller }, + m_currentPageNumber{ 0 } + { + //Load + adw_action_row_set_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(m_builder, "accountFolderRow")), m_controller->getFolder().filename().string().c_str()); + adw_switch_row_set_active(ADW_SWITCH_ROW(gtk_builder_get_object(m_builder, "accountOverwriteRow")), m_controller->getOverwriteExisting()); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "accountTypeRow")), static_cast(m_controller->getMetadata().getType())); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionTypeRow")), static_cast(m_controller->getMetadata().getDefaultTransactionType())); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionRemindersRow")), static_cast(m_controller->getMetadata().getTransactionRemindersThreshold())); + gtk_label_set_label(GTK_LABEL(gtk_builder_get_object(m_builder, "reportedCurrencyLabel")), m_controller->getReportedCurrencyString().c_str()); + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customSymbolRow")), m_controller->getMetadata().getCustomCurrency().getSymbol().c_str()); + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customCodeRow")), m_controller->getMetadata().getCustomCurrency().getCode().c_str()); + switch(m_controller->getMetadata().getCustomCurrency().getDecimalSeparator()) + { + case '.': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), 0); + break; + case ',': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), 1); + break; + default: + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), 2); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), true); + std::string separator{ std::to_string(m_controller->getMetadata().getCustomCurrency().getDecimalSeparator()) }; + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), separator.c_str()); + break; + } + switch(m_controller->getMetadata().getCustomCurrency().getGroupSeparator()) + { + case '.': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 0); + break; + case ',': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 1); + break; + case '\'': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 2); + break; + case '\0': + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 3); + break; + default: + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), 4); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), true); + std::string separator{ std::to_string(m_controller->getMetadata().getCustomCurrency().getGroupSeparator()) }; + gtk_editable_set_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), separator.c_str()); + break; + } + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalDigitsRow")), static_cast(m_controller->getMetadata().getCustomCurrency().getDecimalDigits() - 2)); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customAmountStyleRow")), static_cast(m_controller->getMetadata().getCustomCurrency().getAmountStyle())); + //Signals + g_signal_connect(gtk_builder_get_object(m_builder, "backButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->goBack(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "startButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->goForward(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "accountNameRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onAccountNameChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "selectAccountFolderButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->selectAccountFolder(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "accountOverwriteRow"), "activated", G_CALLBACK(+[](AdwActionRow*, gpointer data){ reinterpret_cast(data)->onAccountOverwriteChanged(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "storagePageNextButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->goForward(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "accountOptionsPageNextButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->goForward(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customCurrencyRow"), "notify::enable-expansion", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customSymbolRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customCodeRow"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customGroupSeparatorRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry"), "changed", G_CALLBACK(+[](GtkEditable*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customDecimalDigitsRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customAmountStyleRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onCurrencyChange(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "customCurrencyPageNextButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->goForward(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "selectImportFileButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->selectImportFile(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "clearImportFileButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->clearImportFile(); }), this); + g_signal_connect(gtk_builder_get_object(m_builder, "importPageCreateButton"), "clicked", G_CALLBACK(+[](GtkButton*, gpointer data){ reinterpret_cast(data)->finish(); }), this); + } + + Event>>& NewAccountDialog::created() + { + return m_created; + } + + void NewAccountDialog::goBack() + { + if(m_currentPageNumber > 0) + { + m_currentPageNumber--; + } + AdwCarousel* carousel{ ADW_CAROUSEL(gtk_builder_get_object(m_builder, "carousel")) }; + adw_carousel_scroll_to(carousel, adw_carousel_get_nth_page(carousel, m_currentPageNumber), true); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "backButton")), m_currentPageNumber > 0); + } + + void NewAccountDialog::goForward() + { + if(m_currentPageNumber < 4) + { + m_currentPageNumber++; + } + AdwCarousel* carousel{ ADW_CAROUSEL(gtk_builder_get_object(m_builder, "carousel")) }; + adw_carousel_scroll_to(carousel, adw_carousel_get_nth_page(carousel, m_currentPageNumber), true); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "backButton")), m_currentPageNumber > 0); + } + + void NewAccountDialog::onAccountNameChanged() + { + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(m_builder, "storagePageNextButton")), m_controller->setName(gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "accountNameRow"))))); + } + + void NewAccountDialog::selectAccountFolder() + { + GtkFileDialog* folderDialog{ gtk_file_dialog_new() }; + gtk_file_dialog_set_title(folderDialog, _("Select Folder")); + gtk_file_dialog_select_folder(folderDialog, m_parent, nullptr, GAsyncReadyCallback(+[](GObject* self, GAsyncResult* res, gpointer data) + { + GFile* folder{ gtk_file_dialog_select_folder_finish(GTK_FILE_DIALOG(self), res, nullptr) }; + if(folder) + { + NewAccountDialog* dialog{ reinterpret_cast(data) }; + std::filesystem::path folderPath{ g_file_get_path(folder) }; + bool result{ dialog->m_controller->setFolder(folderPath) }; + if(result) + { + adw_action_row_set_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(dialog->m_builder, "accountFolderRow")), folderPath.filename().string().c_str()); + } + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(dialog->m_builder, "storagePageNextButton")), result && !dialog->m_controller->getMetadata().getName().empty()); + } + }), this); + } + + void NewAccountDialog::onAccountOverwriteChanged() + { + m_controller->setOverwriteExisting(adw_switch_row_get_active(ADW_SWITCH_ROW(gtk_builder_get_object(m_builder, "accountOverwriteRow")))); + GtkWidget* nextButton{ GTK_WIDGET(gtk_builder_get_object(m_builder, "storagePageNextButton")) }; + gtk_widget_set_sensitive(nextButton, gtk_widget_get_sensitive(nextButton) && (m_controller->getOverwriteExisting() ? true : !std::filesystem::exists(m_controller->getFilePath()))); + } + + void NewAccountDialog::onCurrencyChange() + { + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customCodeRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + gtk_widget_remove_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), "error"); + if(!adw_expander_row_get_enable_expansion(ADW_EXPANDER_ROW(gtk_builder_get_object(m_builder, "customCurrencyRow")))) + { + m_controller->setCustomCurrencyOff(); + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(m_builder, "customCurrencyPageNextButton")), true); + } + else + { + std::string symbol{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customSymbolRow"))) }; + std::string code{ gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customCodeRow"))) }; + char decimalSeparator; + switch(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")))) + { + case 0: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), false); + decimalSeparator = '.'; + break; + case 1: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), false); + decimalSeparator = ','; + break; + default: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")), true); + decimalSeparator = gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customDecimalSeparatorEntry")))[0]; + break; + } + char groupSeparator; + switch(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")))) + { + case 0: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = '.'; + break; + case 1: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = ','; + break; + case 2: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = '\''; + break; + case 3: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), false); + groupSeparator = '\0'; + break; + default: + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")), true); + groupSeparator = gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "customGroupSeparatorEntry")))[0]; + break; + } + int decimalDigits{ static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customDecimalDigitsRow")))) + 2 }; + AmountStyle amountStyle{ static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "customAmountStyleRow")))) }; + CurrencyCheckStatus status{ m_controller->setCustomCurrency(symbol, code, decimalSeparator, groupSeparator, decimalDigits, amountStyle) }; + if(status == CurrencyCheckStatus::EmptySymbol) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + } + else if(status == CurrencyCheckStatus::EmptyCode) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customCodeRow")), "error"); + } + else if(status == CurrencyCheckStatus::EmptyDecimalSeparator) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + } + else if(status == CurrencyCheckStatus::SameSeparators) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), "error"); + } + else if(status == CurrencyCheckStatus::SameSymbolAndDecimalSeparator) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customDecimalSeparatorRow")), "error"); + } + else if(status == CurrencyCheckStatus::SameSymbolAndGroupSeparator) + { + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customSymbolRow")), "error"); + gtk_widget_add_css_class(GTK_WIDGET(gtk_builder_get_object(m_builder, "customGroupSeparatorRow")), "error"); + } + gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(m_builder, "customCurrencyPageNextButton")), status == CurrencyCheckStatus::Valid); + } + } + + void NewAccountDialog::selectImportFile() + { + GtkFileDialog* fileDialog{ gtk_file_dialog_new() }; + gtk_file_dialog_set_title(fileDialog, _("Select Import File")); + GtkFileFilter* filterAll{ gtk_file_filter_new() }; + gtk_file_filter_set_name(filterAll, _("All Files (*.csv, *.ofx, *.qif)")); + gtk_file_filter_add_pattern(filterAll, "*.csv"); + gtk_file_filter_add_pattern(filterAll, "*.CSV"); + gtk_file_filter_add_pattern(filterAll, "*.ofx"); + gtk_file_filter_add_pattern(filterAll, "*.OFX"); + gtk_file_filter_add_pattern(filterAll, "*.qif"); + gtk_file_filter_add_pattern(filterAll, "*.QIF"); + GtkFileFilter* filterCSV{ gtk_file_filter_new() }; + gtk_file_filter_set_name(filterCSV, _("CSV (*.csv)")); + gtk_file_filter_add_pattern(filterCSV, "*.csv"); + gtk_file_filter_add_pattern(filterCSV, "*.CSV"); + GtkFileFilter* filterOFX{ gtk_file_filter_new() }; + gtk_file_filter_set_name(filterOFX, _("Open Financial Exchange (*.ofx)")); + gtk_file_filter_add_pattern(filterOFX, "*.ofx"); + gtk_file_filter_add_pattern(filterOFX, "*.OFX"); + GtkFileFilter* filterQIF{ gtk_file_filter_new() }; + gtk_file_filter_set_name(filterQIF, _("Quicken Interchange Format (*.qif)")); + gtk_file_filter_add_pattern(filterQIF, "*.qif"); + gtk_file_filter_add_pattern(filterQIF, "*.QIF"); + GListStore* filters{ g_list_store_new(gtk_file_filter_get_type()) }; + g_list_store_append(filters, G_OBJECT(filterAll)); + g_list_store_append(filters, G_OBJECT(filterCSV)); + g_list_store_append(filters, G_OBJECT(filterOFX)); + g_list_store_append(filters, G_OBJECT(filterQIF)); + gtk_file_dialog_set_filters(fileDialog, G_LIST_MODEL(filters)); + gtk_file_dialog_open(fileDialog, m_parent, nullptr, GAsyncReadyCallback(+[](GObject* self, GAsyncResult* res, gpointer data) + { + GFile* file{ gtk_file_dialog_open_finish(GTK_FILE_DIALOG(self), res, nullptr) }; + if(file) + { + std::filesystem::path filePath{ g_file_get_path(file) }; + reinterpret_cast(data)->m_controller->setImportFile(filePath); + adw_action_row_set_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "importFileRow")), filePath.filename().string().c_str()); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(reinterpret_cast(data)->m_builder, "clearImportFileButton")), true); + } + }), this); + + } + + void NewAccountDialog::clearImportFile() + { + m_controller->setImportFile({}); + adw_action_row_set_subtitle(ADW_ACTION_ROW(gtk_builder_get_object(m_builder, "importFileRow")), nullptr); + gtk_widget_set_visible(GTK_WIDGET(gtk_builder_get_object(m_builder, "clearImportFileButton")), false); + } + + void NewAccountDialog::finish() + { + m_controller->setPassword(gtk_editable_get_text(GTK_EDITABLE(gtk_builder_get_object(m_builder, "accountPasswordRow")))); + m_controller->setAccountType(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "accountTypeRow"))))); + m_controller->setDefaultTransactionType(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionTypeRow"))))); + m_controller->setTransactionRemindersThreshold(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "transactionRemindersRow"))))); + m_created.invoke({ m_controller }); + adw_dialog_close(m_dialog); + } +} diff --git a/org.nickvision.money.gnome/src/views/preferencesdialog.cpp b/org.nickvision.money.gnome/src/views/preferencesdialog.cpp new file mode 100644 index 000000000..559d199ae --- /dev/null +++ b/org.nickvision.money.gnome/src/views/preferencesdialog.cpp @@ -0,0 +1,60 @@ +#include "views/preferencesdialog.h" + +using namespace Nickvision::Events; +using namespace Nickvision::Money::Shared::Controllers; +using namespace Nickvision::Money::Shared::Models; + +namespace Nickvision::Money::GNOME::Views +{ + PreferencesDialog::PreferencesDialog(const std::shared_ptr& controller, GtkWindow* parent) + : DialogBase{ parent, "preferences_dialog" }, + m_controller{ controller } + { + //Build UI + gtk_color_dialog_button_set_dialog(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transactionColorButton")), gtk_color_dialog_new()); + gtk_color_dialog_set_with_alpha(gtk_color_dialog_button_get_dialog(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transactionColorButton"))), false); + gtk_color_dialog_button_set_dialog(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transferColorButton")), gtk_color_dialog_new()); + gtk_color_dialog_set_with_alpha(gtk_color_dialog_button_get_dialog(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transferColorButton"))), false); + gtk_color_dialog_button_set_dialog(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "groupColorButton")), gtk_color_dialog_new()); + gtk_color_dialog_set_with_alpha(gtk_color_dialog_button_get_dialog(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "groupColorButton"))), false); + //Load + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "themeRow")), static_cast(m_controller->getTheme())); + GdkRGBA color; + gdk_rgba_parse(&color, m_controller->getTransactionDefaultColor().toRGBString(true).c_str()); + gtk_color_dialog_button_set_rgba(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transactionColorButton")), &color); + gdk_rgba_parse(&color, m_controller->getTransferDefaultColor().toRGBString(true).c_str()); + gtk_color_dialog_button_set_rgba(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transferColorButton")), &color); + gdk_rgba_parse(&color, m_controller->getGroupDefaultColor().toRGBString(true).c_str()); + gtk_color_dialog_button_set_rgba(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "groupColorButton")), &color); + adw_combo_row_set_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "insertSeparatorRow")), static_cast(m_controller->getInsertSeparator())); + //Signals + m_closed += [&](const EventArgs&){ onClosed(); }; + g_signal_connect(gtk_builder_get_object(m_builder, "themeRow"), "notify::selected-item", G_CALLBACK(+[](GObject*, GParamSpec*, gpointer data){ reinterpret_cast(data)->onThemeChanged(); }), this); + } + + void PreferencesDialog::onClosed() + { + m_controller->setTransactionDefaultColor({ gdk_rgba_to_string(gtk_color_dialog_button_get_rgba(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transactionColorButton")))) }); + m_controller->setTransferDefaultColor({ gdk_rgba_to_string(gtk_color_dialog_button_get_rgba(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "transferColorButton")))) }); + m_controller->setGroupDefaultColor({ gdk_rgba_to_string(gtk_color_dialog_button_get_rgba(GTK_COLOR_DIALOG_BUTTON(gtk_builder_get_object(m_builder, "groupColorButton")))) }); + m_controller->setInsertSeparator(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "insertSeparatorRow"))))); + m_controller->saveConfiguration(); + } + + void PreferencesDialog::onThemeChanged() + { + m_controller->setTheme(static_cast(adw_combo_row_get_selected(ADW_COMBO_ROW(gtk_builder_get_object(m_builder, "themeRow"))))); + switch (m_controller->getTheme()) + { + case Theme::Light: + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_FORCE_LIGHT); + break; + case Theme::Dark: + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_FORCE_DARK); + break; + default: + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_DEFAULT); + break; + } + } +} diff --git a/org.nickvision.money.winui/AccountPage.idl b/org.nickvision.money.winui/AccountPage.idl new file mode 100644 index 000000000..7c02080e4 --- /dev/null +++ b/org.nickvision.money.winui/AccountPage.idl @@ -0,0 +1,8 @@ +namespace Nickvision.Money.WinUI +{ + [default_interface] + runtimeclass AccountPage : Microsoft.UI.Xaml.Controls.UserControl + { + AccountPage(); + } +} diff --git a/org.nickvision.money.winui/AccountPage.xaml b/org.nickvision.money.winui/AccountPage.xaml new file mode 100644 index 000000000..421a74109 --- /dev/null +++ b/org.nickvision.money.winui/AccountPage.xaml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/AccountPage.xaml.cpp b/org.nickvision.money.winui/AccountPage.xaml.cpp new file mode 100644 index 000000000..4d9f6b634 --- /dev/null +++ b/org.nickvision.money.winui/AccountPage.xaml.cpp @@ -0,0 +1,24 @@ +#include "AccountPage.xaml.h" +#if __has_include("AccountPage.g.cpp") +#include "AccountPage.g.cpp" +#endif +#include + +using namespace ::Nickvision::Money::Shared::Controllers; +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Controls; + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + AccountPage::AccountPage() + { + InitializeComponent(); + } + + void AccountPage::SetController(const std::shared_ptr& controller) + { + m_controller = controller; + //Load + LblTitle().Text(winrt::to_hstring(m_controller->getMetadata().getName())); + } +} diff --git a/org.nickvision.money.winui/AccountPage.xaml.h b/org.nickvision.money.winui/AccountPage.xaml.h new file mode 100644 index 000000000..ea5c85289 --- /dev/null +++ b/org.nickvision.money.winui/AccountPage.xaml.h @@ -0,0 +1,41 @@ +#ifndef ACCOUNTPAGE_H +#define ACCOUNTPAGE_H + +#include "includes.h" +#include +#include "Controls/SettingsRow.g.h" +#include "AccountPage.g.h" +#include "controllers/accountviewcontroller.h" + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + /** + * @brief The page for displaying an account. + */ + class AccountPage : public AccountPageT + { + public: + /** + * @brief Constructs an AccountPage. + */ + AccountPage(); + /** + * @brief Sets the controller for the page. + * @param controller The AccountViewController + */ + void SetController(const std::shared_ptr<::Nickvision::Money::Shared::Controllers::AccountViewController>& controller); + + private: + std::shared_ptr<::Nickvision::Money::Shared::Controllers::AccountViewController> m_controller; + }; +} + +namespace winrt::Nickvision::Money::WinUI::factory_implementation +{ + class AccountPage : public AccountPageT + { + + }; +} + +#endif //ACCOUNTPAGE_H \ No newline at end of file diff --git a/org.nickvision.money.winui/App.idl b/org.nickvision.money.winui/App.idl new file mode 100644 index 000000000..4c032c7b8 --- /dev/null +++ b/org.nickvision.money.winui/App.idl @@ -0,0 +1,3 @@ +namespace Nickvision.Money.WinUI +{ +} diff --git a/org.nickvision.money.winui/App.xaml b/org.nickvision.money.winui/App.xaml new file mode 100644 index 000000000..5394358f9 --- /dev/null +++ b/org.nickvision.money.winui/App.xaml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + diff --git a/org.nickvision.money.winui/App.xaml.cpp b/org.nickvision.money.winui/App.xaml.cpp new file mode 100644 index 000000000..c3d6f337a --- /dev/null +++ b/org.nickvision.money.winui/App.xaml.cpp @@ -0,0 +1,50 @@ +#include "App.xaml.h" +#include "MainWindow.xaml.h" + +using namespace ::Nickvision::Money::Shared::Controllers; +using namespace ::Nickvision::Money::Shared::Models; +using namespace winrt::Microsoft::UI::Xaml; + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + App::App() + : m_controller{ std::make_shared() }, + m_mainWindow{ nullptr } + { + InitializeComponent(); +#ifdef DEBUG + UnhandledException([this](const IInspectable&, const UnhandledExceptionEventArgs& args) + { + if(IsDebuggerPresent()) + { + winrt::hstring err{ args.Message() }; + __debugbreak(); + } + throw; + }); +#endif + m_controller->getAppInfo().setChangelog("- Initial Release"); + m_systemTheme = RequestedTheme() == ApplicationTheme::Light ? ElementTheme::Light : ElementTheme::Dark; + switch (m_controller->getTheme()) + { + case Theme::Light: + RequestedTheme(ApplicationTheme::Light); + break; + case Theme::Dark: + RequestedTheme(ApplicationTheme::Dark); + break; + default: + break; + } + } + + void App::OnLaunched(const LaunchActivatedEventArgs& args) + { + if(!m_mainWindow) + { + m_mainWindow = winrt::make(); + m_mainWindow.as()->SetController(m_controller, m_systemTheme); + } + m_mainWindow.Activate(); + } +} diff --git a/org.nickvision.money.winui/App.xaml.h b/org.nickvision.money.winui/App.xaml.h new file mode 100644 index 000000000..39af35dda --- /dev/null +++ b/org.nickvision.money.winui/App.xaml.h @@ -0,0 +1,34 @@ +#ifndef APP_H +#define APP_H + +#include "includes.h" +#include +#include "App.xaml.g.h" +#include "controllers/mainwindowcontroller.h" + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + /** + * @brief The main WinUI application point. + */ + class App : public AppT + { + public: + /** + * @brief Constructs an app. + */ + App(); + /** + * @brief Handles when the application is launched. + * @param args Microsoft::UI::Xaml::LaunchActivatedEventArgs + */ + void OnLaunched(const Microsoft::UI::Xaml::LaunchActivatedEventArgs& args); + + private: + std::shared_ptr<::Nickvision::Money::Shared::Controllers::MainWindowController> m_controller; + Microsoft::UI::Xaml::Window m_mainWindow; + Microsoft::UI::Xaml::ElementTheme m_systemTheme; + }; +} + +#endif //APP_H \ No newline at end of file diff --git a/org.nickvision.money.winui/CMakeLists.txt b/org.nickvision.money.winui/CMakeLists.txt new file mode 100644 index 000000000..74b7c7b17 --- /dev/null +++ b/org.nickvision.money.winui/CMakeLists.txt @@ -0,0 +1,83 @@ +if(WIN32) + cmake_policy(SET CMP0091 NEW) + + set(CMAKE_VS_GLOBALS + "AppxPackage=false" + "RuntimeIdentifier=win10-x64" + "RuntimeIdentifiers=win10-x64" + "BaseNuGetRuntimeIdentifier=win10" + "AssetTargetFallback=$(AssetTargetFallback);native") + + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Directory.Build.props" "${CMAKE_CURRENT_BINARY_DIR}/Directory.Build.props" COPYONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Directory.Build.targets" "${CMAKE_CURRENT_BINARY_DIR}/Directory.Build.targets" COPYONLY) + + add_executable(org.nickvision.money.winui WIN32 + "org.nickvision.money.winui.manifest" "org.nickvision.money.winui.rc" + "App.xaml.cpp" "App.xaml.h" "App.xaml" "App.idl" + "Controls/ClickableSettingsRow.xaml.cpp" "Controls/ClickableSettingsRow.xaml.h" "Controls/ClickableSettingsRow.xaml" "Controls/ClickableSettingsRow.idl" + "Controls/CurrencyConverterDialog.xaml.cpp" "Controls/CurrencyConverterDialog.xaml.h" "Controls/CurrencyConverterDialog.xaml" "Controls/CurrencyConverterDialog.idl" + "Controls/SettingsRow.xaml.cpp" "Controls/SettingsRow.xaml.h" "Controls/SettingsRow.xaml" "Controls/SettingsRow.idl" + "Controls/StatusPage.xaml.cpp" "Controls/StatusPage.xaml.h" "Controls/StatusPage.xaml" "Controls/StatusPage.idl" + "Controls/ViewStack.xaml.cpp" "Controls/ViewStack.xaml.h" "Controls/ViewStack.xaml" "Controls/ViewStack.idl" + "Controls/ViewStackPage.xaml.cpp" "Controls/ViewStackPage.xaml.h" "Controls/ViewStackPage.xaml" "Controls/ViewStackPage.idl" + "Helpers/WinUI.cpp" "Helpers/WinUI.h" + "AccountPage.xaml.cpp" "AccountPage.xaml.h" "AccountPage.xaml" "AccountPage.idl" + "NewAccountDialog.xaml.cpp" "NewAccountDialog.xaml.h" "NewAccountDialog.xaml" "NewAccountDialog.idl" + "MainWindow.xaml.cpp" "MainWindow.xaml.h" "MainWindow.xaml" "MainWindow.idl" + "SettingsPage.xaml.cpp" "SettingsPage.xaml.h" "SettingsPage.xaml" "SettingsPage.idl") + set_property(SOURCE "App.xaml" PROPERTY VS_XAML_TYPE "ApplicationDefinition") + set_property(TARGET org.nickvision.money.winui PROPERTY VS_PACKAGE_REFERENCES + "Microsoft.Windows.CppWinRT_2.0.240405.15" + "Microsoft.WindowsAppSDK_1.5.240428000" + "Microsoft.Windows.SDK.BuildTools_10.0.22621.3233" + "Microsoft.Windows.ImplementationLibrary_1.0.240122.1" + ) + target_include_directories(org.nickvision.money.winui PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") + target_precompile_headers(org.nickvision.money.winui PRIVATE "pch.h") + set_target_properties(org.nickvision.money.winui PROPERTIES + VS_GLOBAL_RootNamespace Nickvision.Money.WinUI + VS_GLOBAL_AppContainerApplication false + VS_GLOBAL_AppxPackage false + VS_GLOBAL_CppWinRTOptimized true + VS_GLOBAL_CppWinRTRootNamespaceAutoMerge true + VS_GLOBAL_CppWinRTUsePrefixes false + VS_GLOBAL_UseWinUI true + VS_GLOBAL_ApplicationType "Windows Store" + VS_GLOBAL_ApplicationTypeRevision 10.0 + VS_GLOBAL_WindowsTargetPlatformVersion 10.0 + VS_GLOBAL_WindowsTargetPlatformMinVersion "10.0.20348.0" + VS_GLOBAL_WindowsPackageType None + VS_GLOBAL_EnablePreviewMsixTooling true + VS_GLOBAL_WindowsAppSDKSelfContained true + VS_GLOBAL_WindowsAppSDKBootstrapAutoInitializeOptions_OnNoMatch_ShowUI true + VS_GLOBAL_WindowsAppSDKBootstrapAutoInitializeOptions_OnPackageIdentity_NoOp true) + target_link_libraries(org.nickvision.money.winui PRIVATE libdenaro) + + get_target_property(SOURCES org.nickvision.money.winui SOURCES) + foreach(SOURCE ${SOURCES}) + cmake_path(GET SOURCE EXTENSION LAST_ONLY EXTENSION) + if(NOT "${EXTENSION}" STREQUAL ".idl") + continue() + endif() + set(IDL_SOURCE "${SOURCE}") + cmake_path(REMOVE_EXTENSION SOURCE LAST_ONLY OUTPUT_VARIABLE BASENAME) + set(XAML_SOURCE "${BASENAME}.xaml") + if("${XAML_SOURCE}" IN_LIST SOURCES) + set_property(SOURCE "${IDL_SOURCE}" PROPERTY VS_SETTINGS "SubType=Code" "DependentUpon=${XAML_SOURCE}") + else() + set_property(SOURCE "${IDL_SOURCE}" PROPERTY VS_SETTINGS "SubType=Code") + set_property(SOURCE "${BASENAME}.h" PROPERTY VS_SETTINGS "DependentUpon=${IDL_SOURCE}") + set_property(SOURCE "${BASENAME}.cpp" PROPERTY VS_SETTINGS "DependentUpon=${IDL_SOURCE}") + endif() + endforeach() + + add_custom_target(winui_commands ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/__winui.h") + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__winui.h" "${CMAKE_CURRENT_BINARY_DIR}/winui.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/winui.h") + add_custom_command(TARGET winui_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_SOURCE_DIR}/resources/org.nickvision.money.ico" "${CMAKE_CURRENT_BINARY_DIR}/$/resources/org.nickvision.money.ico") + if(HAS_GETTEXT) + foreach(LINGUA IN ITEMS ${LINGUAS}) + add_custom_command(TARGET winui_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/$/${LINGUA}") + add_custom_command(TARGET winui_commands PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/$/${LINGUA}/${SHORT_NAME}.mo") + endforeach() + endif() +endif() diff --git a/org.nickvision.money.winui/Controls/ClickableSettingsRow.idl b/org.nickvision.money.winui/Controls/ClickableSettingsRow.idl new file mode 100644 index 000000000..c7bd2706c --- /dev/null +++ b/org.nickvision.money.winui/Controls/ClickableSettingsRow.idl @@ -0,0 +1,20 @@ +namespace Nickvision.Money.WinUI.Controls +{ + [default_interface] + runtimeclass ClickableSettingsRow : Microsoft.UI.Xaml.Controls.UserControl, Microsoft.UI.Xaml.Data.INotifyPropertyChanged + { + ClickableSettingsRow(); + static Microsoft.UI.Xaml.DependencyProperty GlyphProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty TitleProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty DescriptionProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty ChildProperty{ get; }; + String Glyph; + String Title; + String Description; + Object Child; + Microsoft.UI.Xaml.Visibility IconVisibility{ get; }; + Microsoft.UI.Xaml.Visibility TitleVisibility{ get; }; + Microsoft.UI.Xaml.Visibility DescriptionVisibility{ get; }; + event Microsoft.UI.Xaml.RoutedEventHandler Clicked; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml b/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml new file mode 100644 index 000000000..468cd3225 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml.cpp b/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml.cpp new file mode 100644 index 000000000..bb8c8a76d --- /dev/null +++ b/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml.cpp @@ -0,0 +1,154 @@ +#include "Controls/ClickableSettingsRow.xaml.h" +#if __has_include("Controls/ClickableSettingsRow.g.cpp") +#include "Controls/ClickableSettingsRow.g.cpp" +#endif +#include "helpers/WinUI.h" + +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Data; +using namespace winrt::Windows::Foundation::Collections; + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + DependencyProperty ClickableSettingsRow::m_glyphProperty = DependencyProperty::Register(L"Glyph", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &ClickableSettingsRow::OnPropertyChanged } }); + DependencyProperty ClickableSettingsRow::m_titleProperty = DependencyProperty::Register(L"Title", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &ClickableSettingsRow::OnPropertyChanged } }); + DependencyProperty ClickableSettingsRow::m_descriptionProperty = DependencyProperty::Register(L"Description", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &ClickableSettingsRow::OnPropertyChanged } }); + DependencyProperty ClickableSettingsRow::m_childProperty = DependencyProperty::Register(L"Child", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ nullptr, PropertyChangedCallback{ &ClickableSettingsRow::OnPropertyChanged } }); + + ClickableSettingsRow::ClickableSettingsRow() + { + InitializeComponent(); + Title(L""); + Description(L""); + Glyph(L""); + } + + winrt::hstring ClickableSettingsRow::Glyph() const + { + return winrt::unbox_value(GetValue(m_glyphProperty)); + } + + void ClickableSettingsRow::Glyph(const winrt::hstring& glyph) + { + SetValue(m_glyphProperty, winrt::box_value(glyph)); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Glyph" }); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"IconVisibility" }); + } + + winrt::hstring ClickableSettingsRow::Title() const + { + return winrt::unbox_value(GetValue(m_titleProperty)); + } + + void ClickableSettingsRow::Title(const winrt::hstring& title) + { + SetValue(m_titleProperty, winrt::box_value(title)); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Title" }); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"TitleVisibility" }); + } + + winrt::hstring ClickableSettingsRow::Description() const + { + return winrt::unbox_value(GetValue(m_descriptionProperty)); + } + + void ClickableSettingsRow::Description(const winrt::hstring& description) + { + SetValue(m_descriptionProperty, winrt::box_value(description)); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Description" }); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"DescriptionVisibility" }); + } + + IInspectable ClickableSettingsRow::Child() const + { + return GetValue(m_childProperty); + } + + void ClickableSettingsRow::Child(const IInspectable& child) + { + SetValue(m_childProperty, child); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Child" }); + } + + Visibility ClickableSettingsRow::IconVisibility() const + { + return Glyph().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility ClickableSettingsRow::TitleVisibility() const + { + return Title().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility ClickableSettingsRow::DescriptionVisibility() const + { + return Description().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + winrt::event_token ClickableSettingsRow::PropertyChanged(const PropertyChangedEventHandler& handler) + { + return m_propertyChangedEvent.add(handler); + } + + void ClickableSettingsRow::PropertyChanged(const winrt::event_token& token) + { + m_propertyChangedEvent.remove(token); + } + + winrt::event_token ClickableSettingsRow::Clicked(const RoutedEventHandler& handler) + { + return BtnMain().Click(handler); + } + + void ClickableSettingsRow::Clicked(const winrt::event_token& token) + { + BtnMain().Click(token); + } + + const DependencyProperty& ClickableSettingsRow::GlyphProperty() + { + return m_glyphProperty; + } + + const DependencyProperty& ClickableSettingsRow::TitleProperty() + { + return m_titleProperty; + } + + const DependencyProperty& ClickableSettingsRow::DescriptionProperty() + { + return m_descriptionProperty; + } + + const DependencyProperty& ClickableSettingsRow::ChildProperty() + { + return m_childProperty; + } + + void ClickableSettingsRow::OnPropertyChanged(const DependencyObject& d, const DependencyPropertyChangedEventArgs& args) + { + if(Nickvision::Money::WinUI::Controls::ClickableSettingsRow settingsRow{ d.try_as() }) + { + ClickableSettingsRow* ptr{ winrt::get_self(settingsRow) }; + if(args.Property() == m_glyphProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Glyph" }); + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"IconVisibility" }); + } + else if(args.Property() == m_titleProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Title" }); + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"TitleVisibility" }); + } + else if(args.Property() == m_descriptionProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Description" }); + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"DescriptionVisibility" }); + } + else if(args.Property() == m_childProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Child" }); + } + } + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml.h b/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml.h new file mode 100644 index 000000000..37c5a9270 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ClickableSettingsRow.xaml.h @@ -0,0 +1,142 @@ +#ifndef CLICKABLESETTINGSROW_H +#define CLICKABLESETTINGSROW_H + +#include "includes.h" +#include "Controls/ClickableSettingsRow.g.h" + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + /** + * @brief A row control to display a configurable application setting. + */ + class ClickableSettingsRow : public ClickableSettingsRowT + { + public: + /** + * @brief Constructs a ClickableSettingsRow. + */ + ClickableSettingsRow(); + /** + * @brief Gets the icon glyph for the row. + * @returns The row icon glyph + */ + winrt::hstring Glyph() const; + /** + * @brief Sets the icon glyph for the row. + * @param glyph The new icon glyph + */ + void Glyph(const winrt::hstring& glyph); + /** + * @brief Gets the title for the row. + * @return The row title + */ + winrt::hstring Title() const; + /** + * @brief Sets the title for the row. + * @param title The new title + */ + void Title(const winrt::hstring& title); + /** + * @brief Gets the description for the row. + * @return The row description + */ + winrt::hstring Description() const; + /** + * @brief Sets the description for the row. + * @param description The new description + */ + void Description(const winrt::hstring& description); + /** + * @brief Gets the child for the row. + * @returns The row child + */ + IInspectable Child() const; + /** + * @brief Sets the child for the row. + * @param child The new child + */ + void Child(const IInspectable& child); + /** + * @brief Gets the visibility of the icon control. + * @return The icon control visibility + */ + Microsoft::UI::Xaml::Visibility IconVisibility() const; + /** + * @brief Gets the visibility of the title control. + * @return The title control visibility + */ + Microsoft::UI::Xaml::Visibility TitleVisibility() const; + /** + * @brief Gets the visibility of the description control. + * @return The description control visibility + */ + Microsoft::UI::Xaml::Visibility DescriptionVisibility() const; + /** + * @brief Subscribes a handler to the property changed event. + * @return The token for the newly subscribed handler. + */ + winrt::event_token PropertyChanged(const Microsoft::UI::Xaml::Data::PropertyChangedEventHandler& handler); + /** + * @brief Unsubscribes a handler from the property changed event. + * @param token The token of the handler to unsubscribe. + */ + void PropertyChanged(const winrt::event_token& token); + /** + * @brief Subscribes a handler to the clicked event. + * @return The token for the newly subscribed handler. + */ + winrt::event_token Clicked(const Microsoft::UI::Xaml::RoutedEventHandler& handler); + /** + * @brief Unsubscribes a handler from the clicked event. + * @param token The token of the handler to unsubscribe. + */ + void Clicked(const winrt::event_token& token); + + private: + winrt::event m_propertyChangedEvent; + + public: + /** + * @brief Gets the row's glyph dependency property. + * @return The glyph dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& GlyphProperty(); + /** + * @brief Gets the row's title dependency property. + * @return The title dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& TitleProperty(); + /** + * @brief Gets the row's description dependency property. + * @return The description dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& DescriptionProperty(); + /** + * @brief Gets the row's child dependency property. + * @return The child dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& ChildProperty(); + /** + * @brief Handles when a property of the row is changed. + * @param d Microsoft::UI::Xaml::DependencyObject + * @param args Microsoft::UI::Xaml::DependencyPropertyChangedEventArgs + */ + static void OnPropertyChanged(const Microsoft::UI::Xaml::DependencyObject& d, const Microsoft::UI::Xaml::DependencyPropertyChangedEventArgs& args); + + private: + static Microsoft::UI::Xaml::DependencyProperty m_glyphProperty; + static Microsoft::UI::Xaml::DependencyProperty m_titleProperty; + static Microsoft::UI::Xaml::DependencyProperty m_descriptionProperty; + static Microsoft::UI::Xaml::DependencyProperty m_childProperty; + }; +} + +namespace winrt::Nickvision::Money::WinUI::Controls::factory_implementation +{ + class ClickableSettingsRow : public ClickableSettingsRowT + { + + }; +} + +#endif //CLICKABLESETTINGSROW_H \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/CurrencyConverterDialog.idl b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.idl new file mode 100644 index 000000000..c6de0ee77 --- /dev/null +++ b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.idl @@ -0,0 +1,8 @@ +namespace Nickvision.Money.WinUI.Controls +{ + [default_interface] + runtimeclass CurrencyConverterDialog : Microsoft.UI.Xaml.Controls.ContentDialog + { + CurrencyConverterDialog(); + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml new file mode 100644 index 000000000..52e0741c8 --- /dev/null +++ b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp new file mode 100644 index 000000000..1edd99452 --- /dev/null +++ b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp @@ -0,0 +1,122 @@ +#include "Controls/CurrencyConverterDialog.xaml.h" +#if __has_include("Controls/CurrencyConverterDialog.g.cpp") +#include "Controls/CurrencyConverterDialog.g.cpp" +#endif +#include +#include "helpers/currencyhelpers.h" +#include "models/currencyconversionservice.h" + +using namespace ::Nickvision::Money::Shared; +using namespace ::Nickvision::Money::Shared::Models; +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Controls; +using namespace winrt::Windows::ApplicationModel::DataTransfer; + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + CurrencyConverterDialog::CurrencyConverterDialog() + { + InitializeComponent(); + //Localize Strings + Title(winrt::box_value(winrt::to_hstring(_("Currency Converter")))); + CloseButtonText(winrt::to_hstring(_("Close"))); + LblCurrency().Text(winrt::to_hstring(_("Currency"))); + RowSourceCurrency().Title(winrt::to_hstring(_("Source"))); + RowResultCurrency().Title(winrt::to_hstring(_("Result"))); + ToolTipService::SetToolTip(BtnSwitch(), winrt::box_value(winrt::to_hstring(_("Switch Currencies")))); + LblAmount().Text(winrt::to_hstring(_("Amount"))); + TxtSourceAmount().PlaceholderText(winrt::to_hstring(_("Enter source amount"))); + TxtResultAmount().PlaceholderText(L"0"); + ToolTipService::SetToolTip(BtnCopy(), winrt::box_value(winrt::to_hstring(_("Copy Result Amount")))); + } + + Windows::Foundation::IAsyncAction CurrencyConverterDialog::OnOpened(const ContentDialog& sender, const ContentDialogOpenedEventArgs& args) + { + const std::map& conversionRates{ CurrencyConversionService::getConversionRates("USD") }; + if(conversionRates.empty()) + { + Hide(); + ContentDialog noRatesDialog; + noRatesDialog.Title(winrt::box_value(winrt::to_hstring(_("Error")))); + noRatesDialog.Content(winrt::box_value(winrt::to_hstring(_("Unable to load currency data. Please try again. If the error still persists, report a bug.")))); + noRatesDialog.CloseButtonText(winrt::to_hstring(_("OK"))); + noRatesDialog.DefaultButton(ContentDialogButton::Close); + noRatesDialog.XamlRoot(XamlRoot()); + co_await noRatesDialog.ShowAsync(); + } + else + { + int i{ 0 }; + for(const std::pair& pair : conversionRates) + { + CmbSourceCurrency().Items().Append(winrt::box_value(winrt::to_hstring(pair.first))); + CmbResultCurrency().Items().Append(winrt::box_value(winrt::to_hstring(pair.first))); + if(pair.first == "USD") + { + CmbSourceCurrency().SelectedIndex(i); + } + else if(pair.first == "EUR") + { + CmbResultCurrency().SelectedIndex(i); + } + i++; + } + } + } + + void CurrencyConverterDialog::OnCmbSourceCurrencyChanged(const IInspectable& sender, const SelectionChangedEventArgs& args) + { + RowSourceAmount().Title(CmbSourceCurrency().SelectedItem().as()); + onCurrencyChange(); + } + + void CurrencyConverterDialog::OnCmbResultCurrencyChanged(const IInspectable& sender, const SelectionChangedEventArgs& args) + { + RowResultAmount().Title(CmbResultCurrency().SelectedItem().as()); + onCurrencyChange(); + } + + void CurrencyConverterDialog::SwitchCurrencies(const IInspectable& sender, const RoutedEventArgs& args) + { + int sourceIndex{ CmbSourceCurrency().SelectedIndex() }; + int resultIndex{ CmbResultCurrency().SelectedIndex() }; + CmbResultCurrency().SelectedIndex(sourceIndex); + CmbSourceCurrency().SelectedIndex(resultIndex); + } + + void CurrencyConverterDialog::OnTxtSourceAmountChanged(const IInspectable& sender, const TextChangedEventArgs& args) + { + onCurrencyChange(); + } + + void CurrencyConverterDialog::CopyResult(const IInspectable& sender, const RoutedEventArgs& args) + { + DataPackage dataPackage; + dataPackage.SetText(TxtResultAmount().Text()); + Clipboard::SetContent(dataPackage); + } + + void CurrencyConverterDialog::onCurrencyChange() + { + RowResultCurrency().Title(winrt::to_hstring(_("Result"))); + if(TxtSourceAmount().Text().empty()) + { + TxtResultAmount().Text(L""); + } + else + { + double sourceAmount{ CurrencyHelpers::toAmount(winrt::to_string(TxtSourceAmount().Text()), CurrencyHelpers::getSystemCurrency())}; + std::string sourceCurrency{ winrt::to_string(CmbSourceCurrency().SelectedItem().as()) }; + std::string resultCurrency{ winrt::to_string(CmbResultCurrency().SelectedItem().as()) }; + std::optional conversion{ CurrencyConversionService::convert(sourceCurrency, sourceAmount, resultCurrency) }; + if(conversion.has_value()) + { + TxtResultAmount().Text(winrt::to_hstring(CurrencyHelpers::toAmountString(conversion->getResultAmount(), CurrencyHelpers::getSystemCurrency(), false, true))); + } + else + { + RowResultCurrency().Title(winrt::to_hstring(_("Result (Error)"))); + } + } + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.h b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.h new file mode 100644 index 000000000..ffb9d1a7a --- /dev/null +++ b/org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.h @@ -0,0 +1,73 @@ +#ifndef CURRENCYCONVERTERDIALOG_H +#define CURRENCYCONVERTERDIALOG_H + +#include "includes.h" +#include "Controls/SettingsRow.g.h" +#include "Controls/CurrencyConverterDialog.g.h" + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + /** + * @brief A dialog for converting currencies. + */ + class CurrencyConverterDialog : public CurrencyConverterDialogT + { + public: + /** + * @brief Constructs a CurrencyConverterDialog. + */ + CurrencyConverterDialog(); + /** + * @brief Handles when the dialog is opened. + * @param sender ContentDialog + * @param args ContentDialogOpenedEventArgs + */ + Windows::Foundation::IAsyncAction OnOpened(const Microsoft::UI::Xaml::Controls::ContentDialog& sender, const Microsoft::UI::Xaml::Controls::ContentDialogOpenedEventArgs& args); + /** + * @brief Handles when the source currency is changed. + * @param sender IInspectable + * @param args SelectionChangedEventArgs + */ + void OnCmbSourceCurrencyChanged(const IInspectable& sender, const Microsoft::UI::Xaml::Controls::SelectionChangedEventArgs& args); + /** + * @brief Handles when the result currency is changed. + * @param sender IInspectable + * @param args SelectionChangedEventArgs + */ + void OnCmbResultCurrencyChanged(const IInspectable& sender, const Microsoft::UI::Xaml::Controls::SelectionChangedEventArgs& args); + /** + * @brief Switches the result currency with the source currency. + * @param sender IInspectable + * @param args RoutedEventArgs + */ + void SwitchCurrencies(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + /** + * @brief Handles when the source amount text is changed. + * @param sender IInspectable + * @param args TextChangedEventArgs + */ + void OnTxtSourceAmountChanged(const IInspectable& sender, const Microsoft::UI::Xaml::Controls::TextChangedEventArgs& args); + /** + * @brief Copies the result amount to the clipboard. + * @param sender IInspectable + * @param args RoutedEventArgs + */ + void CopyResult(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + + private: + /** + * @brief Handles when the currency (amount or currency) is changed. + */ + void onCurrencyChange(); + }; +} + +namespace winrt::Nickvision::Money::WinUI::Controls::factory_implementation +{ + class CurrencyConverterDialog : public CurrencyConverterDialogT + { + + }; +} + +#endif //CURRENCYCONVERTERDIALOG_H \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/SettingsRow.idl b/org.nickvision.money.winui/Controls/SettingsRow.idl new file mode 100644 index 000000000..aa167e0d6 --- /dev/null +++ b/org.nickvision.money.winui/Controls/SettingsRow.idl @@ -0,0 +1,19 @@ +namespace Nickvision.Money.WinUI.Controls +{ + [default_interface] + runtimeclass SettingsRow : Microsoft.UI.Xaml.Controls.UserControl, Microsoft.UI.Xaml.Data.INotifyPropertyChanged + { + SettingsRow(); + static Microsoft.UI.Xaml.DependencyProperty GlyphProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty TitleProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty DescriptionProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty ChildProperty{ get; }; + String Glyph; + String Title; + String Description; + Object Child; + Microsoft.UI.Xaml.Visibility IconVisibility{ get; }; + Microsoft.UI.Xaml.Visibility TitleVisibility{ get; }; + Microsoft.UI.Xaml.Visibility DescriptionVisibility{ get; }; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/SettingsRow.xaml b/org.nickvision.money.winui/Controls/SettingsRow.xaml new file mode 100644 index 000000000..58342bc1d --- /dev/null +++ b/org.nickvision.money.winui/Controls/SettingsRow.xaml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/SettingsRow.xaml.cpp b/org.nickvision.money.winui/Controls/SettingsRow.xaml.cpp new file mode 100644 index 000000000..ff525aed3 --- /dev/null +++ b/org.nickvision.money.winui/Controls/SettingsRow.xaml.cpp @@ -0,0 +1,144 @@ +#include "Controls/SettingsRow.xaml.h" +#if __has_include("Controls/SettingsRow.g.cpp") +#include "Controls/SettingsRow.g.cpp" +#endif +#include "helpers/WinUI.h" + +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Data; +using namespace winrt::Windows::Foundation::Collections; + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + DependencyProperty SettingsRow::m_glyphProperty = DependencyProperty::Register(L"Glyph", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &SettingsRow::OnPropertyChanged } }); + DependencyProperty SettingsRow::m_titleProperty = DependencyProperty::Register(L"Title", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &SettingsRow::OnPropertyChanged } }); + DependencyProperty SettingsRow::m_descriptionProperty = DependencyProperty::Register(L"Description", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &SettingsRow::OnPropertyChanged } }); + DependencyProperty SettingsRow::m_childProperty = DependencyProperty::Register(L"Child", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ nullptr, PropertyChangedCallback{ &SettingsRow::OnPropertyChanged } }); + + SettingsRow::SettingsRow() + { + InitializeComponent(); + Title(L""); + Description(L""); + Glyph(L""); + } + + winrt::hstring SettingsRow::Glyph() const + { + return winrt::unbox_value(GetValue(m_glyphProperty)); + } + + void SettingsRow::Glyph(const winrt::hstring& glyph) + { + SetValue(m_glyphProperty, winrt::box_value(glyph)); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Glyph" }); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"IconVisibility" }); + } + + winrt::hstring SettingsRow::Title() const + { + return winrt::unbox_value(GetValue(m_titleProperty)); + } + + void SettingsRow::Title(const winrt::hstring& title) + { + SetValue(m_titleProperty, winrt::box_value(title)); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Title" }); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"TitleVisibility" }); + } + + winrt::hstring SettingsRow::Description() const + { + return winrt::unbox_value(GetValue(m_descriptionProperty)); + } + + void SettingsRow::Description(const winrt::hstring& description) + { + SetValue(m_descriptionProperty, winrt::box_value(description)); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Description" }); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"DescriptionVisibility" }); + } + + IInspectable SettingsRow::Child() const + { + return GetValue(m_childProperty); + } + + void SettingsRow::Child(const IInspectable& child) + { + SetValue(m_childProperty, child); + m_propertyChangedEvent(*this, PropertyChangedEventArgs{ L"Child" }); + } + + Visibility SettingsRow::IconVisibility() const + { + return Glyph().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility SettingsRow::TitleVisibility() const + { + return Title().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility SettingsRow::DescriptionVisibility() const + { + return Description().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + winrt::event_token SettingsRow::PropertyChanged(const PropertyChangedEventHandler& handler) + { + return m_propertyChangedEvent.add(handler); + } + + void SettingsRow::PropertyChanged(const winrt::event_token& token) + { + m_propertyChangedEvent.remove(token); + } + + const DependencyProperty& SettingsRow::GlyphProperty() + { + return m_glyphProperty; + } + + const DependencyProperty& SettingsRow::TitleProperty() + { + return m_titleProperty; + } + + const DependencyProperty& SettingsRow::DescriptionProperty() + { + return m_descriptionProperty; + } + + const DependencyProperty& SettingsRow::ChildProperty() + { + return m_childProperty; + } + + void SettingsRow::OnPropertyChanged(const DependencyObject& d, const DependencyPropertyChangedEventArgs& args) + { + if(Nickvision::Money::WinUI::Controls::SettingsRow settingsRow{ d.try_as() }) + { + SettingsRow* ptr{ winrt::get_self(settingsRow) }; + if(args.Property() == m_glyphProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Glyph" }); + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"IconVisibility" }); + } + else if(args.Property() == m_titleProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Title" }); + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"TitleVisibility" }); + } + else if(args.Property() == m_descriptionProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Description" }); + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"DescriptionVisibility" }); + } + else if(args.Property() == m_childProperty) + { + ptr->m_propertyChangedEvent(*ptr, PropertyChangedEventArgs{ L"Child" }); + } + } + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/SettingsRow.xaml.h b/org.nickvision.money.winui/Controls/SettingsRow.xaml.h new file mode 100644 index 000000000..e16f0731b --- /dev/null +++ b/org.nickvision.money.winui/Controls/SettingsRow.xaml.h @@ -0,0 +1,132 @@ +#ifndef SETTINGSROW_H +#define SETTINGSROW_H + +#include "includes.h" +#include "Controls/SettingsRow.g.h" + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + /** + * @brief A row control to display a configurable application setting. + */ + class SettingsRow : public SettingsRowT + { + public: + /** + * @brief Constructs a SettingsRow. + */ + SettingsRow(); + /** + * @brief Gets the icon glyph for the row. + * @returns The row icon glyph + */ + winrt::hstring Glyph() const; + /** + * @brief Sets the icon glyph for the row. + * @param glyph The new icon glyph + */ + void Glyph(const winrt::hstring& glyph); + /** + * @brief Gets the title for the row. + * @return The row title + */ + winrt::hstring Title() const; + /** + * @brief Sets the title for the row. + * @param title The new title + */ + void Title(const winrt::hstring& title); + /** + * @brief Gets the description for the row. + * @return The row description + */ + winrt::hstring Description() const; + /** + * @brief Sets the description for the row. + * @param description The new description + */ + void Description(const winrt::hstring& description); + /** + * @brief Gets the child for the row. + * @returns The row child + */ + IInspectable Child() const; + /** + * @brief Sets the child for the row. + * @param child The new child + */ + void Child(const IInspectable& child); + /** + * @brief Gets the visibility of the icon control. + * @return The icon control visibility + */ + Microsoft::UI::Xaml::Visibility IconVisibility() const; + /** + * @brief Gets the visibility of the title control. + * @return The title control visibility + */ + Microsoft::UI::Xaml::Visibility TitleVisibility() const; + /** + * @brief Gets the visibility of the description control. + * @return The description control visibility + */ + Microsoft::UI::Xaml::Visibility DescriptionVisibility() const; + /** + * @brief Subscribes a handler to the property changed event. + * @return The token for the newly subscribed handler. + */ + winrt::event_token PropertyChanged(const Microsoft::UI::Xaml::Data::PropertyChangedEventHandler& handler); + /** + * @brief Unsubscribes a handler from the property changed event. + * @param token The token of the handler to unsubscribe. + */ + void PropertyChanged(const winrt::event_token& token); + + private: + winrt::event m_propertyChangedEvent; + + public: + /** + * @brief Gets the row's glyph dependency property. + * @return The glyph dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& GlyphProperty(); + /** + * @brief Gets the row's title dependency property. + * @return The title dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& TitleProperty(); + /** + * @brief Gets the row's description dependency property. + * @return The description dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& DescriptionProperty(); + /** + * @brief Gets the row's child dependency property. + * @return The child dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& ChildProperty(); + /** + * @brief Handles when a property of the row is changed. + * @param d Microsoft::UI::Xaml::DependencyObject + * @param args Microsoft::UI::Xaml::DependencyPropertyChangedEventArgs + */ + static void OnPropertyChanged(const Microsoft::UI::Xaml::DependencyObject& d, const Microsoft::UI::Xaml::DependencyPropertyChangedEventArgs& args); + + private: + static Microsoft::UI::Xaml::DependencyProperty m_glyphProperty; + static Microsoft::UI::Xaml::DependencyProperty m_titleProperty; + static Microsoft::UI::Xaml::DependencyProperty m_descriptionProperty; + static Microsoft::UI::Xaml::DependencyProperty m_childProperty; + }; +} + +namespace winrt::Nickvision::Money::WinUI::Controls::factory_implementation +{ + class SettingsRow : public SettingsRowT + { + + }; +} + +#endif //SETTINGSROW_H \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/StatusPage.idl b/org.nickvision.money.winui/Controls/StatusPage.idl new file mode 100644 index 000000000..33c60e564 --- /dev/null +++ b/org.nickvision.money.winui/Controls/StatusPage.idl @@ -0,0 +1,30 @@ +namespace Nickvision.Money.WinUI.Controls +{ + [default_interface] + runtimeclass StatusPage : Microsoft.UI.Xaml.Controls.UserControl, Microsoft.UI.Xaml.Data.INotifyPropertyChanged + { + StatusPage(); + static Microsoft.UI.Xaml.DependencyProperty GlyphProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty UseAppIconProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty TitleProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty DescriptionProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty ChildProperty{ get; }; + static Microsoft.UI.Xaml.DependencyProperty IsCompactProperty{ get; }; + String Glyph; + Boolean UseAppIcon; + String Title; + String Description; + Object Child; + Boolean IsCompact; + Microsoft.UI.Xaml.Visibility GlyphIconVisibility{ get; }; + Microsoft.UI.Xaml.Visibility AppIconVisibility{ get; }; + Microsoft.UI.Xaml.Visibility TitleVisibility{ get; }; + Microsoft.UI.Xaml.Visibility DescriptionVisibility{ get; }; + Microsoft.UI.Xaml.Visibility ChildVisibility{ get; }; + Double CompactSpacing{ get; }; + Double IconSize{ get; }; + Double IconWidth{ get; }; + Double IconHeight{ get; }; + Microsoft.UI.Xaml.Style TitleStyle{ get; }; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/StatusPage.xaml b/org.nickvision.money.winui/Controls/StatusPage.xaml new file mode 100644 index 000000000..265dc8aab --- /dev/null +++ b/org.nickvision.money.winui/Controls/StatusPage.xaml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/StatusPage.xaml.cpp b/org.nickvision.money.winui/Controls/StatusPage.xaml.cpp new file mode 100644 index 000000000..8ae0f67f8 --- /dev/null +++ b/org.nickvision.money.winui/Controls/StatusPage.xaml.cpp @@ -0,0 +1,236 @@ +#include "Controls/StatusPage.xaml.h" +#if __has_include("Controls/StatusPage.g.cpp") +#include "Controls/StatusPage.g.cpp" +#endif +#include "Helpers/WinUI.h" + +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Data; +using namespace winrt::Windows::Foundation::Collections; + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + DependencyProperty StatusPage::m_glyphProperty = DependencyProperty::Register(L"Glyph", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &StatusPage::OnPropertyChanged } }); + DependencyProperty StatusPage::m_useAppIconProperty = DependencyProperty::Register(L"UseAppIcon", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(false), PropertyChangedCallback{ &StatusPage::OnPropertyChanged } }); + DependencyProperty StatusPage::m_titleProperty = DependencyProperty::Register(L"Title", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &StatusPage::OnPropertyChanged } }); + DependencyProperty StatusPage::m_descriptionProperty = DependencyProperty::Register(L"Description", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L""), PropertyChangedCallback{ &StatusPage::OnPropertyChanged } }); + DependencyProperty StatusPage::m_childProperty = DependencyProperty::Register(L"Child", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ nullptr, PropertyChangedCallback{ &StatusPage::OnPropertyChanged } }); + DependencyProperty StatusPage::m_isCompactProperty = DependencyProperty::Register(L"IsCompact", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(false), PropertyChangedCallback{ &StatusPage::OnPropertyChanged } }); + + StatusPage::StatusPage() + { + InitializeComponent(); + Title(L""); + Description(L""); + Child(nullptr); + IsCompact(false); + } + + winrt::hstring StatusPage::Glyph() const + { + return winrt::unbox_value(GetValue(m_glyphProperty)); + } + + void StatusPage::Glyph(const winrt::hstring& glyph) + { + SetValue(m_glyphProperty, winrt::box_value(glyph)); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"Glyph" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"GlyphIconVisibility" }); + } + + bool StatusPage::UseAppIcon() const + { + return winrt::unbox_value(GetValue(m_useAppIconProperty)); + } + + void StatusPage::UseAppIcon(bool useAppIcon) + { + SetValue(m_useAppIconProperty, winrt::box_value(useAppIcon)); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"UseAppIcon" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"AppIconVisibility" }); + } + + winrt::hstring StatusPage::Title() const + { + return winrt::unbox_value(GetValue(m_titleProperty)); + } + + void StatusPage::Title(const winrt::hstring& title) + { + SetValue(m_titleProperty, winrt::box_value(title)); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"Title" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"TitleVisibility" }); + } + + winrt::hstring StatusPage::Description() const + { + return winrt::unbox_value(GetValue(m_descriptionProperty)); + } + + void StatusPage::Description(const winrt::hstring& description) + { + SetValue(m_descriptionProperty, winrt::box_value(description)); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"Description" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"DescriptionVisibility" }); + } + + IInspectable StatusPage::Child() const + { + return GetValue(m_childProperty); + } + + void StatusPage::Child(const IInspectable& child) + { + SetValue(m_childProperty, child); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"Child" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"ChildVisibility" }); + } + + bool StatusPage::IsCompact() const + { + return winrt::unbox_value(GetValue(m_isCompactProperty)); + } + + void StatusPage::IsCompact(bool isCompact) + { + SetValue(m_isCompactProperty, winrt::box_value(isCompact)); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"IsCompact" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"CompactSpacing" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"IconSize" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"IconWidth" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"IconHeight" }); + m_propertyChanged(*this, PropertyChangedEventArgs{ L"TitleStyle" }); + } + + Visibility StatusPage::GlyphIconVisibility() const + { + return UseAppIcon() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility StatusPage::AppIconVisibility() const + { + return UseAppIcon() ? Visibility::Visible : Visibility::Collapsed; + } + + Visibility StatusPage::TitleVisibility() const + { + return Title().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility StatusPage::DescriptionVisibility() const + { + return Description().empty() ? Visibility::Collapsed : Visibility::Visible; + } + + Visibility StatusPage::ChildVisibility() const + { + return Child() ? Visibility::Visible : Visibility::Collapsed; + } + + double StatusPage::CompactSpacing() const + { + return IsCompact() ? 6 : 12; + } + + double StatusPage::IconSize() const + { + return IsCompact() ? 30 : 60; + } + + double StatusPage::IconWidth() const + { + return IsCompact() ? 64 : 128; + } + + double StatusPage::IconHeight() const + { + return IsCompact() ? 64 : 128; + } + + Style StatusPage::TitleStyle() const + { + return WinUIHelpers::LookupAppResource(IsCompact() ? L"SubtitleTextBlockStyle" : L"TitleTextBlockStyle"); + } + + winrt::event_token StatusPage::PropertyChanged(const PropertyChangedEventHandler& handler) + { + return m_propertyChanged.add(handler); + } + + void StatusPage::PropertyChanged(const winrt::event_token& token) + { + m_propertyChanged.remove(token); + } + + const DependencyProperty& StatusPage::GlyphProperty() + { + return m_glyphProperty; + } + + const DependencyProperty& StatusPage::UseAppIconProperty() + { + return m_useAppIconProperty; + } + + const DependencyProperty& StatusPage::TitleProperty() + { + return m_titleProperty; + } + + const DependencyProperty& StatusPage::DescriptionProperty() + { + return m_descriptionProperty; + } + + const DependencyProperty& StatusPage::ChildProperty() + { + return m_childProperty; + } + + const DependencyProperty& StatusPage::IsCompactProperty() + { + return m_isCompactProperty; + } + + void StatusPage::OnPropertyChanged(const DependencyObject& d, const DependencyPropertyChangedEventArgs& args) + { + if(Nickvision::Money::WinUI::Controls::StatusPage statusPage{ d.try_as() }) + { + StatusPage* ptr{ winrt::get_self(statusPage) }; + if(args.Property() == m_glyphProperty) + { + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"Glyph" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"GlyphIconVisibility" }); + } + else if(args.Property() == m_useAppIconProperty) + { + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"UseAppIcon" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"AppIconVisibility" }); + } + else if(args.Property() == m_titleProperty) + { + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"Title" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"TitleVisibility" }); + } + else if(args.Property() == m_descriptionProperty) + { + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"Description" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"DescriptionVisibility" }); + } + else if(args.Property() == m_childProperty) + { + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"Child" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"ChildVisibility" }); + } + else if(args.Property() == m_isCompactProperty) + { + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"IsCompact" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"CompactSpacing" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"IconSize" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"IconWidth" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"IconHeight" }); + ptr->m_propertyChanged(*ptr, PropertyChangedEventArgs{ L"TitleStyle" }); + } + } + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/StatusPage.xaml.h b/org.nickvision.money.winui/Controls/StatusPage.xaml.h new file mode 100644 index 000000000..6d9c210ff --- /dev/null +++ b/org.nickvision.money.winui/Controls/StatusPage.xaml.h @@ -0,0 +1,202 @@ +#ifndef STATUSPAGE_H +#define STATUSPAGE_H + +#include "includes.h" +#include "Controls/StatusPage.g.h" + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + /** + * @brief A page control to display a status of the application. + */ + class StatusPage : public StatusPageT + { + public: + /** + * @brief Constructs a StatusPage. + */ + StatusPage(); + /** + * @brief Gets the icon glyph for the page. + * @brief This will be used when UseAppIcon is set to false. + * @return The page icon glyph + */ + winrt::hstring Glyph() const; + /** + * @brief Sets the icon glyph for the page. + * @brief To be used when UseAppIcon is set to false. + * @param glyph The new icon glyph + */ + void Glyph(const winrt::hstring& glyph); + /** + * @brief Gets whether or not the page is displaying the application's icon. + * @brief If false, the Glyph icon is being used instead. + * @return True if displaying app icon, else false + */ + bool UseAppIcon() const; + /** + * @brief Sets whether or not the page should display the application's icon. + * @param useAppIcon True to display app icon. False to use the Glyph icon + */ + void UseAppIcon(bool useAppIcon); + /** + * @brief Gets the status title for the page. + * @returns The status title + */ + winrt::hstring Title() const; + /** + * @brief Sets the status title for the page. + * @param title The new status title + */ + void Title(const winrt::hstring& title); + /** + * @brief Gets the status description for the page. + * @returns The status description + */ + winrt::hstring Description() const; + /** + * @brief Sets the status title for the page. + * @param title The new status title + */ + void Description(const winrt::hstring& description); + /** + * @brief Gets the extra child for the page. + * @returns The extra child + */ + IInspectable Child() const; + /** + * @brief Sets the extra child for the page. + * @param title The new extra child + */ + void Child(const IInspectable& child); + /** + * @brief Gets whether or not the page is displayed using compact spacing. + * @return True for compact spacing, else false + */ + bool IsCompact() const; + /** + * @brief Sets whether or not the page should use compact spacing. + * @param isCompact True for compact spacing, else false + */ + void IsCompact(bool isCompact); + /** + * @brief Gets the visibility of the glyph icon. + * @return The visibility of the glyph icon + */ + Microsoft::UI::Xaml::Visibility GlyphIconVisibility() const; + /** + * @brief Gets the visibility of the app icon. + * @return The visibility of the app icon + */ + Microsoft::UI::Xaml::Visibility AppIconVisibility() const; + /** + * @brief Gets the visibility of the title control. + * @return The visibility of the title control + */ + Microsoft::UI::Xaml::Visibility TitleVisibility() const; + /** + * @brief Gets the visibility of the description control. + * @return The visibility of the description control + */ + Microsoft::UI::Xaml::Visibility DescriptionVisibility() const; + /** + * @brief Gets the visibility of the child control. + * @return The visibility of the child control + */ + Microsoft::UI::Xaml::Visibility ChildVisibility() const; + /** + * @brief Gets the spacing between the controls. + * @return The spacing between the controls + */ + double CompactSpacing() const; + /** + * @brief Gets the font size of the icon. + * @return The font size of the icon + */ + double IconSize() const; + /** + * @brief Gets the width of the icon. + * @return The width of the icon + */ + double IconWidth() const; + /** + * @brief Gets the height of the icon. + * @return The height of the icon + */ + double IconHeight() const; + /** + * @brief Gets the style of the title control. + * @return The style of the title control + */ + Microsoft::UI::Xaml::Style TitleStyle() const; + /** + * @brief Subscribes a handler to the property changed event. + * @return The token for the newly subscribed handler. + */ + winrt::event_token PropertyChanged(const Microsoft::UI::Xaml::Data::PropertyChangedEventHandler& handler); + /** + * @brief Unsubscribes a handler from the property changed event. + * @param token The token of the handler to unsubscribe. + */ + void PropertyChanged(const winrt::event_token& token); + + private: + winrt::event m_propertyChanged; + + public: + /** + * @brief Gets the page's glyph dependency property. + * @return The glyph dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& GlyphProperty(); + /** + * @brief Gets the page's use app icon dependency property. + * @return The use app icon dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& UseAppIconProperty(); + /** + * @brief Gets the page's title dependency property. + * @return The title dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& TitleProperty(); + /** + * @brief Gets the page's description dependency property. + * @return The description dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& DescriptionProperty(); + /** + * @brief Gets the page's child dependency property. + * @return The child dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& ChildProperty(); + /** + * @brief Gets the page's is compact dependency property. + * @return The is compact dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& IsCompactProperty(); + /** + * @brief Handles when a property of the row is changed. + * @param d Microsoft::UI::Xaml::DependencyObject + * @param args Microsoft::UI::Xaml::DependencyPropertyChangedEventArgs + */ + static void OnPropertyChanged(const Microsoft::UI::Xaml::DependencyObject& d, const Microsoft::UI::Xaml::DependencyPropertyChangedEventArgs& args); + + private: + static Microsoft::UI::Xaml::DependencyProperty m_glyphProperty; + static Microsoft::UI::Xaml::DependencyProperty m_useAppIconProperty; + static Microsoft::UI::Xaml::DependencyProperty m_titleProperty; + static Microsoft::UI::Xaml::DependencyProperty m_descriptionProperty; + static Microsoft::UI::Xaml::DependencyProperty m_childProperty; + static Microsoft::UI::Xaml::DependencyProperty m_isCompactProperty; + }; +} + +namespace winrt::Nickvision::Money::WinUI::Controls::factory_implementation +{ + class StatusPage : public StatusPageT + { + + }; +} + +#endif //STATUSPAGE_H \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStack.idl b/org.nickvision.money.winui/Controls/ViewStack.idl new file mode 100644 index 000000000..8fc20b92c --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStack.idl @@ -0,0 +1,12 @@ +namespace Nickvision.Money.WinUI.Controls +{ + [default_interface] + runtimeclass ViewStack : Microsoft.UI.Xaml.Controls.Frame + { + ViewStack(); + static Microsoft.UI.Xaml.DependencyProperty PagesProperty{ get; }; + String CurrentPage; + IObservableVector Pages{ get; }; + event Windows.Foundation.EventHandler PageChanged; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStack.xaml b/org.nickvision.money.winui/Controls/ViewStack.xaml new file mode 100644 index 000000000..0a078b242 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStack.xaml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStack.xaml.cpp b/org.nickvision.money.winui/Controls/ViewStack.xaml.cpp new file mode 100644 index 000000000..62396685b --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStack.xaml.cpp @@ -0,0 +1,59 @@ +#include "Controls/ViewStack.xaml.h" +#if __has_include("Controls/ViewStack.g.cpp") +#include "Controls/ViewStack.g.cpp" +#endif + +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Windows::Foundation::Collections; + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + DependencyProperty ViewStack::m_pagesProperty = DependencyProperty::Register(L"Pages", winrt::xaml_typename>(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(winrt::single_threaded_observable_vector()) }); + + ViewStack::ViewStack() + { + InitializeComponent(); + } + + winrt::hstring ViewStack::CurrentPage() const + { + return m_currentPage; + } + + void ViewStack::CurrentPage(const winrt::hstring& pageName) + { + for(const IInspectable& obj : Pages()) + { + if(Nickvision::Money::WinUI::Controls::ViewStackPage page{ obj.try_as() }) + { + if(page.PageName() == pageName) + { + m_currentPage = pageName; + Content(obj); + m_pageChangedEvent(*this, m_currentPage); + break; + } + } + } + } + + IObservableVector ViewStack::Pages() const + { + return winrt::unbox_value>(GetValue(m_pagesProperty)); + } + + winrt::event_token ViewStack::PageChanged(const Windows::Foundation::EventHandler& handler) + { + return m_pageChangedEvent.add(handler); + } + + void ViewStack::PageChanged(const winrt::event_token& token) + { + m_pageChangedEvent.remove(token); + } + + const DependencyProperty& ViewStack::PagesProperty() + { + return m_pagesProperty; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStack.xaml.h b/org.nickvision.money.winui/Controls/ViewStack.xaml.h new file mode 100644 index 000000000..e23fe2063 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStack.xaml.h @@ -0,0 +1,69 @@ +#ifndef VIEWSTACK_H +#define VIEWSTACK_H + +#include "includes.h" +#include "Controls/ViewStack.g.h" + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + /** + * @brief A control used for storing pages and showing one at a time. + */ + class ViewStack : public ViewStackT + { + public: + /** + * @brief Constructs a ViewStack. + */ + ViewStack(); + /** + * @brief Gets the name of the current page being shown. + * @return The name of the currently shown page + */ + winrt::hstring CurrentPage() const; + /** + * @brief Sets the name of the new page to show. + * @param currentPage The name of the new page to show + */ + void CurrentPage(const winrt::hstring& currentPage); + /** + * @brief Gets the list of pages being stored in the view stack. + * @return The list of stored page objects + */ + Windows::Foundation::Collections::IObservableVector Pages() const; + /** + * @brief Subscribes a handler to the page changed event. + * @return The token for the newly subscribed handler. + */ + winrt::event_token PageChanged(const Windows::Foundation::EventHandler& handler); + /** + * @brief Unsubscribes a handler from the page changed event. + * @param token The token of the handler to unsubscribe. + */ + void PageChanged(const winrt::event_token& token); + + private: + winrt::event> m_pageChangedEvent; + winrt::hstring m_currentPage; + + public: + /** + * @brief Gets the view stack's pages dependency property. + * @return The pages dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& PagesProperty(); + + private: + static Microsoft::UI::Xaml::DependencyProperty m_pagesProperty; + }; +} + +namespace winrt::Nickvision::Money::WinUI::Controls::factory_implementation +{ + class ViewStack : public ViewStackT + { + + }; +} + +#endif //VIEWSTACK_H \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStackPage.idl b/org.nickvision.money.winui/Controls/ViewStackPage.idl new file mode 100644 index 000000000..ed5fe4e65 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStackPage.idl @@ -0,0 +1,10 @@ +namespace Nickvision.Money.WinUI.Controls +{ + [default_interface] + runtimeclass ViewStackPage : Microsoft.UI.Xaml.Controls.Frame + { + ViewStackPage(); + static Microsoft.UI.Xaml.DependencyProperty PageNameProperty{ get; }; + String PageName; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStackPage.xaml b/org.nickvision.money.winui/Controls/ViewStackPage.xaml new file mode 100644 index 000000000..28a710f47 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStackPage.xaml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStackPage.xaml.cpp b/org.nickvision.money.winui/Controls/ViewStackPage.xaml.cpp new file mode 100644 index 000000000..f83db5f11 --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStackPage.xaml.cpp @@ -0,0 +1,31 @@ +#include "Controls/ViewStackPage.xaml.h" +#if __has_include("Controls/ViewStackPage.g.cpp") +#include "Controls/ViewStackPage.g.cpp" +#endif + +using namespace winrt::Microsoft::UI::Xaml; + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + DependencyProperty ViewStackPage::m_pageNameProperty = DependencyProperty::Register(L"PageName", winrt::xaml_typename(), winrt::xaml_typename(), PropertyMetadata{ winrt::box_value(L"") }); + + ViewStackPage::ViewStackPage() + { + InitializeComponent(); + } + + winrt::hstring ViewStackPage::PageName() const + { + return winrt::unbox_value(GetValue(m_pageNameProperty)); + } + + void ViewStackPage::PageName(const winrt::hstring& pageName) + { + SetValue(m_pageNameProperty, winrt::box_value(pageName)); + } + + const DependencyProperty& ViewStackPage::PageNameProperty() + { + return m_pageNameProperty; + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/Controls/ViewStackPage.xaml.h b/org.nickvision.money.winui/Controls/ViewStackPage.xaml.h new file mode 100644 index 000000000..c0920aa4b --- /dev/null +++ b/org.nickvision.money.winui/Controls/ViewStackPage.xaml.h @@ -0,0 +1,50 @@ +#ifndef VIEWSTACKPAGE_H +#define VIEWSTACKPAGE_H + +#include "includes.h" +#include "Controls/ViewStackPage.g.h" + +namespace winrt::Nickvision::Money::WinUI::Controls::implementation +{ + /** + * @brief A page control to be stored in a ViewStack. + */ + class ViewStackPage : public ViewStackPageT + { + public: + /** + * @brief Constructs a ViewStackPage. + */ + ViewStackPage(); + /** + * @brief Gets the name of this page. + * @returns The page's name + */ + winrt::hstring PageName() const; + /** + * @brief Sets the name of this page. + * @param pageName The new name of the page + */ + void PageName(const winrt::hstring& pageName); + + public: + /** + * @brief Gets the page's page name dependency property + * @return The page name dependency property + */ + static const Microsoft::UI::Xaml::DependencyProperty& PageNameProperty(); + + private: + static Microsoft::UI::Xaml::DependencyProperty m_pageNameProperty; + }; +} + +namespace winrt::Nickvision::Money::WinUI::Controls::factory_implementation +{ + class ViewStackPage : public ViewStackPageT + { + + }; +} + +#endif //VIEWSTACKPAGE_H \ No newline at end of file diff --git a/org.nickvision.money.winui/Directory.Build.props b/org.nickvision.money.winui/Directory.Build.props new file mode 100644 index 000000000..6c6982c8d --- /dev/null +++ b/org.nickvision.money.winui/Directory.Build.props @@ -0,0 +1,7 @@ + + + win10-x64 + native,Version=v0.0 + true + + diff --git a/org.nickvision.money.winui/Directory.Build.targets b/org.nickvision.money.winui/Directory.Build.targets new file mode 100644 index 000000000..4e646ba26 --- /dev/null +++ b/org.nickvision.money.winui/Directory.Build.targets @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/org.nickvision.money.winui/Helpers/WinUI.cpp b/org.nickvision.money.winui/Helpers/WinUI.cpp new file mode 100644 index 000000000..ff837ee9d --- /dev/null +++ b/org.nickvision.money.winui/Helpers/WinUI.cpp @@ -0,0 +1,2 @@ +#include "Helpers/WinUI.h" + diff --git a/org.nickvision.money.winui/Helpers/WinUI.h b/org.nickvision.money.winui/Helpers/WinUI.h new file mode 100644 index 000000000..0995d1eca --- /dev/null +++ b/org.nickvision.money.winui/Helpers/WinUI.h @@ -0,0 +1,22 @@ +#ifndef WINUI_H +#define WINUI_H + +#include "includes.h" + +namespace WinUIHelpers +{ + /** + * @brief Looks up a WinUI resource for the application. + * @tparam The type to cast the resource to + * @param key The key for the resource + * @returns The T object of the resource + */ + template + T LookupAppResource(const winrt::hstring& key) + { + winrt::Windows::Foundation::IInspectable res{ winrt::Microsoft::UI::Xaml::Application::Current().Resources().Lookup(winrt::box_value(key)) }; + return winrt::unbox_value(res); + } +} + +#endif //WINUI_H \ No newline at end of file diff --git a/org.nickvision.money.winui/MainWindow.idl b/org.nickvision.money.winui/MainWindow.idl new file mode 100644 index 000000000..81fae02cd --- /dev/null +++ b/org.nickvision.money.winui/MainWindow.idl @@ -0,0 +1,8 @@ +namespace Nickvision.Money.WinUI +{ + [default_interface] + runtimeclass MainWindow : Microsoft.UI.Xaml.Window + { + MainWindow(); + } +} diff --git a/org.nickvision.money.winui/MainWindow.xaml b/org.nickvision.money.winui/MainWindow.xaml new file mode 100644 index 000000000..d6fb0742e --- /dev/null +++ b/org.nickvision.money.winui/MainWindow.xaml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/NewAccountDialog.xaml.cpp b/org.nickvision.money.winui/NewAccountDialog.xaml.cpp new file mode 100644 index 000000000..f271afaa9 --- /dev/null +++ b/org.nickvision.money.winui/NewAccountDialog.xaml.cpp @@ -0,0 +1,324 @@ +#include "NewAccountDialog.xaml.h" +#if __has_include("NewAccountDialog.g.cpp") +#include "NewAccountDialog.g.cpp" +#endif +#include +#include "helpers/currencyhelpers.h" + +using namespace ::Nickvision::Money::Shared; +using namespace ::Nickvision::Money::Shared::Controllers; +using namespace ::Nickvision::Money::Shared::Models; +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Controls; +using namespace winrt::Windows::Storage; +using namespace winrt::Windows::Storage::Pickers; + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + NewAccountDialog::NewAccountDialog() + : m_controller{ nullptr }, + m_hwnd{ 0 }, + m_constructing{ true } + { + InitializeComponent(); + //Localize Strings + Title(winrt::box_value(winrt::to_hstring(_("New Account")))); + CloseButtonText(winrt::to_hstring(_("Close"))); + PrimaryButtonText(winrt::to_hstring(_("Create"))); + SelectorItemStorage().Text(winrt::to_hstring(_("Storage"))); + RowAccountName().Title(winrt::to_hstring(_("Account Name"))); + TxtAccountName().PlaceholderText(winrt::to_hstring(_("Enter name here"))); + RowAccountPassword().Title(winrt::to_hstring(_("Account Password"))); + TxtAccountPassword().PlaceholderText(winrt::to_hstring(_("Enter password here"))); + RowAccountFolder().Title(winrt::to_hstring(_("Folder"))); + ToolTipService::SetToolTip(BtnSelectAccountFolder(), winrt::box_value(winrt::to_hstring(_("Select Folder")))); + RowOverwrite().Title(winrt::to_hstring(_("Overwrite Existing Accounts"))); + TglOverwrite().OnContent(winrt::box_value(winrt::to_hstring(_("On")))); + TglOverwrite().OffContent(winrt::box_value(winrt::to_hstring(_("Off")))); + SelectorItemOptions().Text(winrt::to_hstring(_("Options"))); + RowAccountType().Title(winrt::to_hstring(_("Account Type"))); + CmbAccountType().Items().Append(winrt::box_value(winrt::to_hstring(_("Checking")))); + CmbAccountType().Items().Append(winrt::box_value(winrt::to_hstring(_("Saving")))); + CmbAccountType().Items().Append(winrt::box_value(winrt::to_hstring(_("Business")))); + RowTransactionType().Title(winrt::to_hstring(_("Default Transaction Type"))); + CmbTransactionType().Items().Append(winrt::box_value(winrt::to_hstring(_("Income")))); + CmbTransactionType().Items().Append(winrt::box_value(winrt::to_hstring(_("Expense")))); + RowTransactionReminders().Title(winrt::to_hstring(_("Transaction Reminders Threshold"))); + ToolTipService::SetToolTip(RowTransactionReminders(), winrt::box_value(winrt::to_hstring(_("Determines how far in advanced Denaro should remind users of upcoming transactions in the account.")))); + CmbTransactionReminders().Items().Append(winrt::box_value(winrt::to_hstring(_("Never")))); + CmbTransactionReminders().Items().Append(winrt::box_value(winrt::to_hstring(_("One Day Before")))); + CmbTransactionReminders().Items().Append(winrt::box_value(winrt::to_hstring(_("One Week Before")))); + CmbTransactionReminders().Items().Append(winrt::box_value(winrt::to_hstring(_("One Month Before")))); + CmbTransactionReminders().Items().Append(winrt::box_value(winrt::to_hstring(_("Two Months Before")))); + SelectorItemCurrency().Text(winrt::to_hstring(_("Currency"))); + LblSystemCurrencyDescription().Text(winrt::to_hstring(_("Your system reported that your currency is"))); + LblSystemCurrency().Text(winrt::to_hstring(CurrencyHelpers::getSystemCurrency().toString())); + RowCustomCurrency().Title(winrt::to_hstring(_("Use Custom Currency"))); + TglCustomCurrency().OnContent(winrt::box_value(winrt::to_hstring(_("On")))); + TglCustomCurrency().OffContent(winrt::box_value(winrt::to_hstring(_("Off")))); + RowCustomSymbol().Title(winrt::to_hstring(_("Symbol"))); + TxtCustomSymbol().PlaceholderText(winrt::to_hstring(_("Enter symbol here"))); + RowCustomCode().Title(winrt::to_hstring(_("Code"))); + TxtCustomCode().PlaceholderText(winrt::to_hstring(_("Enter code here"))); + RowCustomDecimalSeparator().Title(winrt::to_hstring(_("Decimal Separator"))); + CmbCustomDecimalSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_(".")))); + CmbCustomDecimalSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_(",")))); + CmbCustomDecimalSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("Custom")))); + RowCustomGroupSeparator().Title(winrt::to_hstring(_("Group Separator"))); + CmbCustomGroupSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_(".")))); + CmbCustomGroupSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_(",")))); + CmbCustomGroupSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("'")))); + CmbCustomGroupSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("None")))); + CmbCustomGroupSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("Custom")))); + RowCustomDecimalDigits().Title(winrt::to_hstring(_("Decimal Digits"))); + CmbCustomDecimalDigits().Items().Append(winrt::box_value(winrt::to_hstring(_("Two")))); + CmbCustomDecimalDigits().Items().Append(winrt::box_value(winrt::to_hstring(_("Three")))); + CmbCustomDecimalDigits().Items().Append(winrt::box_value(winrt::to_hstring(_("Four")))); + CmbCustomDecimalDigits().Items().Append(winrt::box_value(winrt::to_hstring(_("Five")))); + CmbCustomDecimalDigits().Items().Append(winrt::box_value(winrt::to_hstring(_("Six")))); + RowCustomAmountStyle().Title(winrt::to_hstring(_("Amount Style"))); + RowCustomAmountStyle().Description(winrt::to_hstring(_("$ is the currency's symbol."))); + CmbCustomAmountStyle().Items().Append(winrt::box_value(winrt::to_hstring("$100"))); + CmbCustomAmountStyle().Items().Append(winrt::box_value(winrt::to_hstring("100$"))); + CmbCustomAmountStyle().Items().Append(winrt::box_value(winrt::to_hstring("$ 100"))); + CmbCustomAmountStyle().Items().Append(winrt::box_value(winrt::to_hstring("100 $"))); + SelectorItemImport().Text(winrt::to_hstring(_("Import"))); + LblImportFileDescription().Text(winrt::to_hstring(_("Upload a supported file to use to import existing information into the new account. Denaro supports CSV, OFX, and QIF files."))); + RowImportFile().Title(winrt::to_hstring(_("Import File"))); + LblImportFile().Text(winrt::to_hstring(_("No File Selected"))); + ToolTipService::SetToolTip(BtnSelectImportFile(), winrt::box_value(winrt::to_hstring(_("Select File")))); + ToolTipService::SetToolTip(BtnClearImportFile(), winrt::box_value(winrt::to_hstring(_("Clear File")))); + } + + void NewAccountDialog::SetController(const std::shared_ptr& controller, HWND hwnd) + { + m_controller = controller; + m_hwnd = hwnd; + } + + void NewAccountDialog::OnOpened(const ContentDialog& sender, const ContentDialogOpenedEventArgs& args) + { + if (!m_controller) + { + throw std::logic_error("NewAccountDialog::SetController() must be called before using the dialog."); + } + ViewStack().CurrentPage(L"Storage"); + TxtAccountName().Text(winrt::to_hstring(m_controller->getMetadata().getName())); + TxtAccountPassword().Password(winrt::to_hstring(m_controller->getPassword())); + LblAccountFolder().Text(winrt::to_hstring(m_controller->getFolder().filename().string())); + TglOverwrite().IsOn(m_controller->getOverwriteExisting()); + CmbAccountType().SelectedIndex(static_cast(m_controller->getMetadata().getType())); + CmbTransactionType().SelectedIndex(static_cast(m_controller->getMetadata().getDefaultTransactionType())); + CmbTransactionReminders().SelectedIndex(static_cast(m_controller->getMetadata().getTransactionRemindersThreshold())); + TglCustomCurrency().IsOn(m_controller->getMetadata().getUseCustomCurrency()); + TxtCustomSymbol().Text(winrt::to_hstring(m_controller->getMetadata().getCustomCurrency().getSymbol())); + TxtCustomCode().Text(winrt::to_hstring(m_controller->getMetadata().getCustomCurrency().getCode())); + switch(m_controller->getMetadata().getCustomCurrency().getDecimalSeparator()) + { + case '.': + CmbCustomDecimalSeparator().SelectedIndex(0); + break; + case ',': + CmbCustomDecimalSeparator().SelectedIndex(1); + break; + default: + CmbCustomDecimalSeparator().SelectedIndex(2); + TxtCustomDecimalSeparator().Visibility(Visibility::Visible); + TxtCustomDecimalSeparator().Text(winrt::to_hstring(m_controller->getMetadata().getCustomCurrency().getDecimalSeparator())); + break; + } + switch(m_controller->getMetadata().getCustomCurrency().getGroupSeparator()) + { + case '.': + CmbCustomGroupSeparator().SelectedIndex(0); + break; + case ',': + CmbCustomGroupSeparator().SelectedIndex(1); + break; + case '\'': + CmbCustomGroupSeparator().SelectedIndex(2); + break; + case '\0': + CmbCustomGroupSeparator().SelectedIndex(3); + break; + default: + CmbCustomGroupSeparator().SelectedIndex(4); + TxtCustomGroupSeparator().Visibility(Visibility::Visible); + TxtCustomGroupSeparator().Text(winrt::to_hstring(m_controller->getMetadata().getCustomCurrency().getGroupSeparator())); + break; + } + CmbCustomDecimalDigits().SelectedIndex(m_controller->getMetadata().getCustomCurrency().getDecimalDigits() - 2); + CmbCustomAmountStyle().SelectedIndex(static_cast(m_controller->getMetadata().getCustomCurrency().getAmountStyle())); + LblImportFile().Text(winrt::to_hstring(m_controller->getImportFile().empty() ? _("No File Selected") : m_controller->getImportFile().filename().string())); + BtnClearImportFile().Visibility(m_controller->getImportFile().empty() ? Visibility::Collapsed : Visibility::Visible); + m_constructing = false; + ValidateOptions(); + } + + void NewAccountDialog::OnPageSelectionChanged(const SelectorBar& sender, const SelectorBarSelectionChangedEventArgs& args) + { + ViewStack().CurrentPage(sender.SelectedItem().Tag().as()); + } + + Windows::Foundation::IAsyncAction NewAccountDialog::SelectAccountFolder(const IInspectable& sender, const RoutedEventArgs& args) + { + FolderPicker picker; + picker.as<::IInitializeWithWindow>()->Initialize(m_hwnd); + picker.SuggestedStartLocation(PickerLocationId::DocumentsLibrary); + picker.FileTypeFilter().Append(L"*"); + StorageFolder folder{ co_await picker.PickSingleFolderAsync() }; + if(folder) + { + std::filesystem::path folderPath{ winrt::to_string(folder.Path()) }; + bool result{ m_controller->setFolder(folderPath) }; + LblAccountFolder().Text(winrt::to_hstring(result ? folderPath.filename().string() : m_controller->getFolder().filename().string())); + } + } + + Windows::Foundation::IAsyncAction NewAccountDialog::SelectImportFile(const IInspectable& sender, const RoutedEventArgs& args) + { + FileOpenPicker picker; + picker.as<::IInitializeWithWindow>()->Initialize(m_hwnd); + picker.SuggestedStartLocation(PickerLocationId::DocumentsLibrary); + picker.FileTypeFilter().Append(L".csv"); + picker.FileTypeFilter().Append(L".ofx"); + picker.FileTypeFilter().Append(L".qif"); + StorageFile file{ co_await picker.PickSingleFileAsync() }; + if(file) + { + std::filesystem::path filePath{ winrt::to_string(file.Path()) }; + m_controller->setImportFile(filePath); + LblImportFile().Text(winrt::to_hstring(filePath.filename().string())); + BtnClearImportFile().Visibility(Visibility::Visible); + } + } + + void NewAccountDialog::ClearImportFile(const IInspectable& sender, const RoutedEventArgs& args) + { + m_controller->setImportFile({}); + LblImportFile().Text(winrt::to_hstring(_("No File Selected"))); + BtnClearImportFile().Visibility(Visibility::Collapsed); + } + + void NewAccountDialog::OnValidateOptions(const IInspectable& sender, const TextChangedEventArgs& args) + { + ValidateOptions(); + } + + void NewAccountDialog::OnValidateOptions(const IInspectable& sender, const RoutedEventArgs& args) + { + ValidateOptions(); + } + + void NewAccountDialog::OnValidateOptions(const IInspectable& sender, const SelectionChangedEventArgs& args) + { + ValidateOptions(); + } + + void NewAccountDialog::ValidateOptions() + { + if(m_constructing) + { + return; + } + bool valid{ true }; + RowAccountName().Title(winrt::to_hstring(_("Account Name"))); + RowCustomSymbol().Title(winrt::to_hstring(_("Symbol"))); + RowCustomCode().Title(winrt::to_hstring(_("Code"))); + RowCustomDecimalSeparator().Title(winrt::to_hstring(_("Decimal Separator"))); + RowCustomGroupSeparator().Title(winrt::to_hstring(_("Group Separator"))); + m_controller->setPassword(winrt::to_string(TxtAccountPassword().Password())); + m_controller->setOverwriteExisting(TglOverwrite().IsOn()); + if(!m_controller->setName(winrt::to_string(TxtAccountName().Text()))) + { + valid = false; + RowAccountName().Title(winrt::to_hstring(_("Account Name (Invalid)"))); + } + m_controller->setAccountType(static_cast(CmbAccountType().SelectedIndex())); + m_controller->setDefaultTransactionType(static_cast(CmbTransactionType().SelectedIndex())); + m_controller->setTransactionRemindersThreshold(static_cast(CmbTransactionReminders().SelectedIndex())); + if(!TglCustomCurrency().IsOn()) + { + m_controller->setCustomCurrencyOff(); + GroupCustomCurrency().Visibility(Visibility::Collapsed); + } + else + { + GroupCustomCurrency().Visibility(Visibility::Visible); + std::string symbol{ winrt::to_string(TxtCustomSymbol().Text()) }; + std::string code{ winrt::to_string(TxtCustomCode().Text()) }; + char decimalSeparator; + switch(CmbCustomDecimalSeparator().SelectedIndex()) + { + case 0: + TxtCustomDecimalSeparator().Visibility(Visibility::Collapsed); + decimalSeparator = '.'; + break; + case 1: + TxtCustomDecimalSeparator().Visibility(Visibility::Collapsed); + decimalSeparator = ','; + break; + default: + TxtCustomDecimalSeparator().Visibility(Visibility::Visible); + decimalSeparator = winrt::to_string(TxtCustomDecimalSeparator().Text())[0]; + break; + } + char groupSeparator; + switch(CmbCustomGroupSeparator().SelectedIndex()) + { + case 0: + TxtCustomGroupSeparator().Visibility(Visibility::Collapsed); + groupSeparator = '.'; + break; + case 1: + TxtCustomGroupSeparator().Visibility(Visibility::Collapsed); + groupSeparator = ','; + break; + case 2: + TxtCustomGroupSeparator().Visibility(Visibility::Collapsed); + groupSeparator = '\''; + break; + case 3: + TxtCustomGroupSeparator().Visibility(Visibility::Collapsed); + groupSeparator = '\0'; + break; + default: + TxtCustomGroupSeparator().Visibility(Visibility::Visible); + groupSeparator = winrt::to_string(TxtCustomGroupSeparator().Text())[0]; + break; + } + int decimalDigits{ CmbCustomDecimalDigits().SelectedIndex() + 2 }; + AmountStyle amountStyle{ static_cast(CmbCustomAmountStyle().SelectedIndex()) }; + CurrencyCheckStatus status{ m_controller->setCustomCurrency(symbol, code, decimalSeparator, groupSeparator, decimalDigits, amountStyle) }; + valid = valid && status == CurrencyCheckStatus::Valid; + if(status == CurrencyCheckStatus::EmptySymbol) + { + RowCustomSymbol().Title(winrt::to_hstring(_("Symbol (Empty)"))); + } + else if(status == CurrencyCheckStatus::EmptyCode) + { + RowCustomCode().Title(winrt::to_hstring(_("Code (Empty)"))); + } + else if(status == CurrencyCheckStatus::EmptyDecimalSeparator) + { + RowCustomDecimalSeparator().Title(winrt::to_hstring(_("Decimal Separator (Empty)"))); + } + else if(status == CurrencyCheckStatus::SameSeparators) + { + RowCustomDecimalSeparator().Title(winrt::to_hstring(_("Decimal Separator (Invalid)"))); + RowCustomGroupSeparator().Title(winrt::to_hstring(_("Group Separator (Invalid)"))); + } + else if(status == CurrencyCheckStatus::SameSymbolAndDecimalSeparator) + { + RowCustomSymbol().Title(winrt::to_hstring(_("Symbol (Invalid)"))); + RowCustomDecimalSeparator().Title(winrt::to_hstring(_("Decimal Separator (Invalid)"))); + } + else if(status == CurrencyCheckStatus::SameSymbolAndGroupSeparator) + { + RowCustomSymbol().Title(winrt::to_hstring(_("Symbol (Invalid)"))); + RowCustomGroupSeparator().Title(winrt::to_hstring(_("Group Separator (Invalid)"))); + } + } + IsPrimaryButtonEnabled(valid); + } +} \ No newline at end of file diff --git a/org.nickvision.money.winui/NewAccountDialog.xaml.h b/org.nickvision.money.winui/NewAccountDialog.xaml.h new file mode 100644 index 000000000..cc49ef932 --- /dev/null +++ b/org.nickvision.money.winui/NewAccountDialog.xaml.h @@ -0,0 +1,98 @@ +#ifndef NEWACCOUNTDIALOG_H +#define NEWACCOUNTDIALOG_H + +#include "includes.h" +#include +#include "Controls/SettingsRow.g.h" +#include "Controls/ViewStack.g.h" +#include "Controls/ViewStackPage.g.h" +#include "NewAccountDialog.g.h" +#include "controllers/newaccountdialogcontroller.h" + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + /** + * @brief A dialog for creating a new account. + */ + class NewAccountDialog : public NewAccountDialogT + { + public: + /** + * @brief Constructs a NewAccountDialog. + */ + NewAccountDialog(); + /** + * @brief Sets the controller for the dialog. + * @param controller The NewAccountDialog + * @param hwnd The HWND of the parent window + */ + void SetController(const std::shared_ptr<::Nickvision::Money::Shared::Controllers::NewAccountDialogController>& controller, HWND hwnd); + /** + * @brief Handles when the dialog is opened. + * @param sender ContentDialog + * @param args ContentDialogOpenedEventArgs + */ + void OnOpened(const Microsoft::UI::Xaml::Controls::ContentDialog& sender, const Microsoft::UI::Xaml::Controls::ContentDialogOpenedEventArgs& args); + /** + * @brief Handles when the page selection changes. + * @param sender SelectorBar + * @param args SelectorBarSelectionChangedEventArgs + */ + void OnPageSelectionChanged(const Microsoft::UI::Xaml::Controls::SelectorBar& sender, const Microsoft::UI::Xaml::Controls::SelectorBarSelectionChangedEventArgs& args); + /** + * @brief Prompts the user to select the folder where to store the account. + * @param sender IInspectable + * @param args RoutedEventArgs + */ + Windows::Foundation::IAsyncAction SelectAccountFolder(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + /** + * @brief Prompts the user to select an import file. + * @param sender IInspectable + * @param args RoutedEventArgs + */ + Windows::Foundation::IAsyncAction SelectImportFile(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + /** + * @brief Clears the import file. + * @param sender IInspectable + * @param args RoutedEventArgs + */ + void ClearImportFile(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + /** + * @brief Validates the options for the dialog. + * @param sender IInspectable + * @param args TextChangedEventArgs + */ + void OnValidateOptions(const IInspectable& sender, const Microsoft::UI::Xaml::Controls::TextChangedEventArgs& args); + /** + * @brief Validates the options for the dialog. + * @param sender IInspectable + * @param args RoutedEventArgs + */ + void OnValidateOptions(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + /** + * @brief Validates the options for the dialog. + * @param sender IInspectable + * @param args SelectionChangedEventArgs + */ + void OnValidateOptions(const IInspectable& sender, const Microsoft::UI::Xaml::Controls::SelectionChangedEventArgs& args); + + private: + /** + * @brief Validates the options for the dialog. + */ + void ValidateOptions(); + std::shared_ptr<::Nickvision::Money::Shared::Controllers::NewAccountDialogController> m_controller; + HWND m_hwnd; + bool m_constructing; + }; +} + +namespace winrt::Nickvision::Money::WinUI::factory_implementation +{ + class NewAccountDialog : public NewAccountDialogT + { + + }; +} + +#endif //NEWACCOUNTDIALOG_H \ No newline at end of file diff --git a/org.nickvision.money.winui/SettingsPage.idl b/org.nickvision.money.winui/SettingsPage.idl new file mode 100644 index 000000000..4399f5c63 --- /dev/null +++ b/org.nickvision.money.winui/SettingsPage.idl @@ -0,0 +1,8 @@ +namespace Nickvision.Money.WinUI +{ + [default_interface] + runtimeclass SettingsPage : Microsoft.UI.Xaml.Controls.UserControl + { + SettingsPage(); + } +} diff --git a/org.nickvision.money.winui/SettingsPage.xaml b/org.nickvision.money.winui/SettingsPage.xaml new file mode 100644 index 000000000..e3654cb43 --- /dev/null +++ b/org.nickvision.money.winui/SettingsPage.xaml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.nickvision.money.winui/SettingsPage.xaml.cpp b/org.nickvision.money.winui/SettingsPage.xaml.cpp new file mode 100644 index 000000000..92ccb8efc --- /dev/null +++ b/org.nickvision.money.winui/SettingsPage.xaml.cpp @@ -0,0 +1,93 @@ +#include "SettingsPage.xaml.h" +#if __has_include("SettingsPage.g.cpp") +#include "SettingsPage.g.cpp" +#endif +#include + +using namespace ::Nickvision::Money::Shared::Controllers; +using namespace ::Nickvision::Money::Shared::Models; +using namespace winrt::Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml::Controls; +using namespace winrt::Microsoft::UI::Xaml::Media; +using namespace winrt::Windows::UI; + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + SettingsPage::SettingsPage() + : m_constructing{ true } + { + InitializeComponent(); + //Localize Strings + LblTitle().Text(winrt::to_hstring(_("Settings"))); + LblUserInterface().Text(winrt::to_hstring(_("User Interface"))); + RowTheme().Title(winrt::to_hstring(_("Theme"))); + CmbTheme().Items().Append(winrt::box_value(winrt::to_hstring(_p("Theme", "Light")))); + CmbTheme().Items().Append(winrt::box_value(winrt::to_hstring(_p("Theme", "Dark")))); + CmbTheme().Items().Append(winrt::box_value(winrt::to_hstring(_p("Theme", "System")))); + RowAutomaticallyCheckForUpdates().Title(winrt::to_hstring(_("Automatically Check for Updates"))); + TglAutomaticallyCheckForUpdates().OnContent(winrt::box_value(winrt::to_hstring(_("On")))); + TglAutomaticallyCheckForUpdates().OffContent(winrt::box_value(winrt::to_hstring(_("Off")))); + LblColors().Text(winrt::to_hstring(_("Colors"))); + RowDefaultTransaction().Title(winrt::to_hstring(_("Default Transaction Color"))); + RowDefaultTransaction().Description(winrt::to_hstring(_("A change in this setting will only be applied to newly added transactions."))); + RowDefaultTransfer().Title(winrt::to_hstring(_("Default Transfer Color"))); + RowDefaultTransfer().Description(winrt::to_hstring(_("A change in this setting will only be applied to new transfers."))); + RowDefaultGroup().Title(winrt::to_hstring(_("Default Group Color"))); + RowDefaultGroup().Description(winrt::to_hstring(_("A change in this setting will only be applied to newly added groups."))); + LblLocale().Text(winrt::to_hstring(_("Locale"))); + RowInsertSeparator().Title(winrt::to_hstring(_("Insert Decimal Separator"))); + RowInsertSeparator().Description(winrt::to_hstring(_("For the selected keys, the account's decimal separator will be inserted instead of the keyboard's value."))); + CmbInsertSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("Off")))); + CmbInsertSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("Numpad period only")))); + CmbInsertSeparator().Items().Append(winrt::box_value(winrt::to_hstring(_("Period and Comma")))); + } + + void SettingsPage::SetController(const std::shared_ptr& controller) + { + m_controller = controller; + //Load + m_constructing = true; + CmbTheme().SelectedIndex(static_cast(m_controller->getTheme())); + TglAutomaticallyCheckForUpdates().IsOn(m_controller->getAutomaticallyCheckForUpdates()); + ClrDefaultTransaction().Color(ColorHelper::FromArgb(m_controller->getTransactionDefaultColor().getA(), m_controller->getTransactionDefaultColor().getR(), m_controller->getTransactionDefaultColor().getG(), m_controller->getTransactionDefaultColor().getB())); + ClrDefaultTransfer().Color(ColorHelper::FromArgb(m_controller->getTransferDefaultColor().getA(), m_controller->getTransferDefaultColor().getR(), m_controller->getTransferDefaultColor().getG(), m_controller->getTransferDefaultColor().getB())); + ClrDefaultGroup().Color(ColorHelper::FromArgb(m_controller->getGroupDefaultColor().getA(), m_controller->getGroupDefaultColor().getR(), m_controller->getGroupDefaultColor().getG(), m_controller->getGroupDefaultColor().getB())); + CmbInsertSeparator().SelectedIndex(static_cast(m_controller->getInsertSeparator())); + m_constructing = false; + } + + void SettingsPage::OnCmbChanged(const IInspectable& sender, const SelectionChangedEventArgs& args) + { + ApplyChanges(); + } + + void SettingsPage::OnSwitchToggled(const IInspectable& sender, const RoutedEventArgs& args) + { + ApplyChanges(); + } + + void SettingsPage::OnColorChanged(const ColorPicker& sender, const ColorChangedEventArgs& args) + { + RctDefaultTransaction().Fill(SolidColorBrush{ ClrDefaultTransaction().Color() }); + RctDefaultTransfer().Fill(SolidColorBrush{ ClrDefaultTransfer().Color() }); + RctDefaultGroup().Fill(SolidColorBrush{ ClrDefaultGroup().Color() }); + ApplyChanges(); + } + + void SettingsPage::ApplyChanges() + { + if(!m_constructing) + { + if(m_controller->getTheme() != static_cast(CmbTheme().SelectedIndex())) + { + m_controller->setTheme(static_cast(CmbTheme().SelectedIndex())); + } + m_controller->setAutomaticallyCheckForUpdates(TglAutomaticallyCheckForUpdates().IsOn()); + m_controller->setTransactionDefaultColor({ ClrDefaultTransaction().Color().R, ClrDefaultTransaction().Color().G, ClrDefaultTransaction().Color().B, ClrDefaultTransaction().Color().A }); + m_controller->setTransferDefaultColor({ ClrDefaultTransfer().Color().R, ClrDefaultTransfer().Color().G, ClrDefaultTransfer().Color().B, ClrDefaultTransfer().Color().A }); + m_controller->setGroupDefaultColor({ ClrDefaultGroup().Color().R, ClrDefaultGroup().Color().G, ClrDefaultGroup().Color().B, ClrDefaultGroup().Color().A }); + m_controller->setInsertSeparator(static_cast(CmbInsertSeparator().SelectedIndex())); + m_controller->saveConfiguration(); + } + } +} diff --git a/org.nickvision.money.winui/SettingsPage.xaml.h b/org.nickvision.money.winui/SettingsPage.xaml.h new file mode 100644 index 000000000..8b2e73aa3 --- /dev/null +++ b/org.nickvision.money.winui/SettingsPage.xaml.h @@ -0,0 +1,58 @@ +#ifndef SETTINGSPAGE_H +#define SETTINGSPAGE_H + +#include "includes.h" +#include +#include "Controls/SettingsRow.g.h" +#include "SettingsPage.g.h" +#include "controllers/preferencesviewcontroller.h" + +namespace winrt::Nickvision::Money::WinUI::implementation +{ + /** + * @brief The settings page for the application. + */ + class SettingsPage : public SettingsPageT + { + public: + /** + * @brief Constructs a SettingsPage. + */ + SettingsPage(); + /** + * @brief Sets the controller for the page. + * @param controller The PreferencesViewController + */ + void SetController(const std::shared_ptr<::Nickvision::Money::Shared::Controllers::PreferencesViewController>& controller); + /** + * @brief Handles when a combo preference is changed. + */ + void OnCmbChanged(const IInspectable& sender, const Microsoft::UI::Xaml::Controls::SelectionChangedEventArgs& args); + /** + * @brief Handles when a switch preference is changed. + */ + void OnSwitchToggled(const IInspectable& sender, const Microsoft::UI::Xaml::RoutedEventArgs& args); + /** + * @brief Handles when a color preference is changed. + */ + void OnColorChanged(const Microsoft::UI::Xaml::Controls::ColorPicker& sender, const Microsoft::UI::Xaml::Controls::ColorChangedEventArgs& args); + + private: + /** + * @brief Applies changes the application's configuration. + */ + void ApplyChanges(); + std::shared_ptr<::Nickvision::Money::Shared::Controllers::PreferencesViewController> m_controller; + bool m_constructing; + }; +} + +namespace winrt::Nickvision::Money::WinUI::factory_implementation +{ + class SettingsPage : public SettingsPageT + { + + }; +} + +#endif //SETTINGSPAGE_H \ No newline at end of file diff --git a/org.nickvision.money.winui/includes.h b/org.nickvision.money.winui/includes.h new file mode 100644 index 000000000..fb795003c --- /dev/null +++ b/org.nickvision.money.winui/includes.h @@ -0,0 +1,26 @@ +#ifndef INCLUDES_H +#define INCLUDES_H + +#include "pch.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif //INCLUDES_H \ No newline at end of file diff --git a/org.nickvision.money.winui/org.nickvision.money.winui.manifest b/org.nickvision.money.winui/org.nickvision.money.winui.manifest new file mode 100644 index 000000000..ae11f4e2c --- /dev/null +++ b/org.nickvision.money.winui/org.nickvision.money.winui.manifest @@ -0,0 +1,17 @@ + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + + + + + + + diff --git a/org.nickvision.money.winui/org.nickvision.money.winui.rc b/org.nickvision.money.winui/org.nickvision.money.winui.rc new file mode 100644 index 000000000..dc6117b2d --- /dev/null +++ b/org.nickvision.money.winui/org.nickvision.money.winui.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "../resources/org.nickvision.money.ico" \ No newline at end of file diff --git a/org.nickvision.money.winui/pch.h b/org.nickvision.money.winui/pch.h new file mode 100644 index 000000000..97a3cbc57 --- /dev/null +++ b/org.nickvision.money.winui/pch.h @@ -0,0 +1,10 @@ +#ifndef PCH_WINUI_H +#define PCH_WINUI_H + +#include +#include +#include + +#undef GetCurrentTime + +#endif //PCH_WINUI_H \ No newline at end of file diff --git a/NickvisionMoney.Shared/Resources/banner-snap.png b/resources/banner-snap.png similarity index 100% rename from NickvisionMoney.Shared/Resources/banner-snap.png rename to resources/banner-snap.png diff --git a/NickvisionMoney.Shared/Resources/banner.png b/resources/banner.png similarity index 100% rename from NickvisionMoney.Shared/Resources/banner.png rename to resources/banner.png diff --git a/NickvisionMoney.Shared/Resources/banner.svg b/resources/banner.svg similarity index 100% rename from NickvisionMoney.Shared/Resources/banner.svg rename to resources/banner.svg diff --git a/NickvisionMoney.Shared/Resources/org.nickvision.money-devel.svg b/resources/org.nickvision.money-devel.svg similarity index 100% rename from NickvisionMoney.Shared/Resources/org.nickvision.money-devel.svg rename to resources/org.nickvision.money-devel.svg diff --git a/NickvisionMoney.Shared/Resources/org.nickvision.money-symbolic.png b/resources/org.nickvision.money-symbolic.png similarity index 100% rename from NickvisionMoney.Shared/Resources/org.nickvision.money-symbolic.png rename to resources/org.nickvision.money-symbolic.png diff --git a/NickvisionMoney.Shared/Resources/org.nickvision.money-symbolic.svg b/resources/org.nickvision.money-symbolic.svg similarity index 100% rename from NickvisionMoney.Shared/Resources/org.nickvision.money-symbolic.svg rename to resources/org.nickvision.money-symbolic.svg diff --git a/resources/org.nickvision.money.ico b/resources/org.nickvision.money.ico new file mode 100644 index 000000000..9126ef8e6 Binary files /dev/null and b/resources/org.nickvision.money.ico differ diff --git a/NickvisionMoney.Shared/Resources/org.nickvision.money.png b/resources/org.nickvision.money.png similarity index 100% rename from NickvisionMoney.Shared/Resources/org.nickvision.money.png rename to resources/org.nickvision.money.png diff --git a/NickvisionMoney.Shared/Resources/org.nickvision.money.svg b/resources/org.nickvision.money.svg similarity index 100% rename from NickvisionMoney.Shared/Resources/org.nickvision.money.svg rename to resources/org.nickvision.money.svg diff --git a/resources/po/LINGUAS b/resources/po/LINGUAS new file mode 100644 index 000000000..eb4ef2b1c --- /dev/null +++ b/resources/po/LINGUAS @@ -0,0 +1,27 @@ +ar +bg +cs +da +de +es +et +fi +fr +gl +hi +hr +id +it +ja +nl +oc +pl +pt +pt_BR +ro +ru +sv +ta +tr +ur +zh_CN diff --git a/resources/po/POTFILES b/resources/po/POTFILES new file mode 100644 index 000000000..64946559f --- /dev/null +++ b/resources/po/POTFILES @@ -0,0 +1,25 @@ +libdenaro/src/models/account.cpp +libdenaro/src/models/accountrepository.cpp +libdenaro/src/models/dashboardgroup.cpp +libdenaro/src/models/transactionreminder.cpp +libdenaro/src/controllers/accountsettingsdialogcontroller.cpp +libdenaro/src/controllers/accountviewcontroller.cpp +libdenaro/src/controllers/mainwindowcontroller.cpp +libdenaro/src/controllers/newaccountdialogcontroller.cpp +org.nickvision.money.gnome/blueprints/account_page.blp +org.nickvision.money.gnome/blueprints/account_settings_dialog.blp +org.nickvision.money.gnome/blueprints/currency_converter_page.blp +org.nickvision.money.gnome/blueprints/new_account_dialog.blp +org.nickvision.money.gnome/blueprints/main_window.blp +org.nickvision.money.gnome/blueprints/preferences_dialog.blp +org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp +org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp +org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp +org.nickvision.money.gnome/src/views/accountpage.cpp +org.nickvision.money.gnome/src/views/newaccountdialog.cpp +org.nickvision.money.gnome/src/views/mainwindow.cpp +org.nickvision.money.winui/AccountPage.xaml.cpp +org.nickvision.money.winui/NewAccountDialog.xaml.cpp +org.nickvision.money.winui/MainWindow.xaml.cpp +org.nickvision.money.winui/SettingsPage.xaml.cpp +org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp diff --git a/resources/po/ar.po b/resources/po/ar.po new file mode 100644 index 000000000..c3bf74630 --- /dev/null +++ b/resources/po/ar.po @@ -0,0 +1,1925 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-12-06 07:04+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\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 ? 4 : 5;\n" +"X-Generator: Weblate 5.3-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "دون مجموعة" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "المعاملات خارج المجموعات" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "حوِّل إلى {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "حوِّل من {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} من {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "غدًا" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "بعد أسبوع من الآن" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "شهر واحد من الآن" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "بعد شهرين من الآن" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "بعد شهرين من الآن" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "يقول نظامك أن عملتك هي" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "تعذَّر الدخول للحساب، فكلمة السرِّ المدخلة خاطئة." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "دينار" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "احفظ مالك" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "محادثة ماتركس" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "مساهمو جت هب ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "علي الجشي " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "صباح الخير!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "صباح الخير!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "مساء الخير!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "مساء الخير!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "طاب يومك!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "هذا الحساب مفتوح بالفعل." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "هذا الحساب مفتوح بالفعل." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "هذا الحساب مفتوح بالفعل." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "استورد من ملفٍّ" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "صدِّر إلى ملفٍّ" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "صدِّر إلى ملفٍّ" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "ملخَّص" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "حوِّل مالًا" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "إعدادات الحساب" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "اﻹعدادات" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "الإجماليُّ" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "دخل" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "نفقة" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "المفكرات" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "المجموعات" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "مجموعة جديدة" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "جديد" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "المعاملات" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "التالي" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "الحساب" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "اسم الحساب" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "نوع الحساب" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "جارٍ" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "ادِّخار" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "أعمال" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "نوع المعاملة المبدئيُّ" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "أبدًا" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "قبل يوم واحد" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "قبل أسبوع واحد" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "قبل شهر واحد" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "قبل شهرين" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "العملة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "استخدم عملةً مخصَّصةً" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "الفاصل العشري" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "فاصل المجموعة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "لا يوجد" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "الأرقام بعد الفاصل العشريِّ" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "إثنان" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "ثلاثة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "أربعة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "خمسة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "ستة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "شعار العملة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "كلمة السرِّ" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "إن فُقدت كلمة السرِّ فاعلم إنه لا يوجد سبيل لاستعادته!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "كلمة سرٍّ جديدة" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "أكِّد كلمة السرِّ" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "غيِّر كلمة السرِّ" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "المصدر" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "النتيجة" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "المَبلغ" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "نسخ نتيجة المبلغ" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "عد" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "حساب جديد" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "يرشدك هذا المرشد نحو أحسن استفادة من حسابك" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "بسم الله نبدأ" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "مكان التخزين" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "كلمة سرِّ الحساب (اختياري)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "مجلد" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "حدِّد مجلدًا" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "اكتب على حسابات موجودة" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "خيارات الحساب" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "عملة الحساب" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "استورد معلومات موجودةً" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "ارفع ملفًّا صالحًا يُستخدم لاستيراد معلومات إلى حساب جديد." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "استورد ملفًّا" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "حدِّد ملفًّا" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "امحُ ملفًّا" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "أنشئ" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "التفضيلات" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "اختصارات لوح المفاتيح" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "المساعدة" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "عن دينار" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "قائمة الحساب" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "الحديثة" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "حساب جديد (Ctrl + N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "افتح حسابًا (Ctrl + O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "افتح" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "لا توجد حسابات استخدمت مؤخَّرًا" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "أزل" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "القائمة الرئيسية" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "الصفحة الرئيسة" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "مُحوّل عملات" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "الحسابات" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "لوح المعلومات" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"أنشئ أو افتح حسابًا لتبدأ، ولك إن شئت أن تفلت ملفًّا على التطبيق من متصفِّح " +"الملفَّات." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "نوع الحساب" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "واجهة المستخدم" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "السمة" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "فاتحة" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "داكنة" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "نفس سمة النظام" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "الألوان" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "خصِّص الألوان التي يستخدمها دينار." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "اللون المبدئيُّ للمعاملات" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "التغييرات لهذا الإعداد تطبَّق على المعاملات الجديدة فقط." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "اللون المبدئيُّ للتحويلات" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "التغييرات لهذا الإعداد تطبَّق على التحويلات الجديدة فقط." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "اللون المبدئيُّ للمجموعات" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "التغييرات لهذا الإعداد تطبَّق على المجموعات الجديدة فقط." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "الإعدادات المحلية" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "أدرج فاصلًا عشريًّا" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"عيِّن أيُّ المفاتيح إن ضُغطت يدرج الفاصل العشري في حقل مقدار حسب الإعدادات " +"المحلية." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "معطَّل" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "نقطة لوح الأرقام فقط" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "النقطة والفاصلة" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "الحساب" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "افتح حسابًا" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "التطبيق" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "التطبيق" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "أنهِ" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "خطأ" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "أغلق" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "تم نسخ النتائج إلى الحافظة." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "قوة كلمة السر" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "غيِّر كلمة السرِّ" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "قوة كلمة السر" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "لا توجد معاملات" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "حرِّر المجموعة" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "استورد ملفًّا" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "مستودع جت‌هب" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "حساب نِكفِجِن دِنارو" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "أدخل كلمة السرِّ هنا" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "ألغِ" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "افتح" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "مكان التخزين" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "أدخل الاسم هنا" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "افتح" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "الإجراءات" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "ادِّخار" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "أدخل الشعار هنا" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "أدخل الرمز هنا" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "المَبلغ" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "استورد ملفًّا" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "لم يحدَّد حساب" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "اسم الحساب (مفتوح)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "شعار العملة (فارغ)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "الاسم (فارغ)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "الفاصل العشري (فارغ)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "الفاصل العشري (غير صالح)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "فاصل المجموعة (غير صالح)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "شعار العملة (غير صالح)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "صدِّر كلَّ المعلومات" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "سجلُّ التغييرات" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "بلِّغ عن علَّة" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "النقاشات" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "الإشادات" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"أنشئ أو افتح حسابًا لتبدأ، ولك إن شئت أن تفلت ملفًّا على التطبيق من متصفِّح " +"الملفَّات." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "تتعذَّر الكتابة على حساب مفتوح." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "تم نسخ النتائج إلى الحافظة." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "أغلق الحساب" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "نوع المعاملة المبدئيُّ" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "اللون المبدئيُّ للتحويلات" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "اللون المبدئيُّ للمجموعات" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "أدخل المقدار هنا" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "حسنًا" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "النتيجة" + +#~ msgid "(Copy)" +#~ msgstr "(انسخ)" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "لا معاملة" +#~ msgstr[1] "معاملة واحدة" +#~ msgstr[2] "معاملتان" +#~ msgstr[3] "{0} معاملات" +#~ msgstr[4] "{0} معاملةً" +#~ msgstr[5] "{0} معاملة" + +#~ msgid "Account Name (Exists)" +#~ msgstr "اسم الحساب (موجود)" + +#~ msgid "Add" +#~ msgstr "أضف" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "أضف معاملةً جديدةً أو استورد معاملات من ملفٍّ." + +#~ msgid "Add Password To PDF?" +#~ msgstr "أأضيف كلمة سرٍّ لملفِّ البي‌دي‌إف؟" + +#~ msgid "All files" +#~ msgstr "كلُّ الملفَّات" + +#~ msgid "Amount (Invalid)" +#~ msgstr "المبلغ (غير صالح)" + +#~ msgid "Apply" +#~ msgstr "طبِّق" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "أمتيقِّن من أنك تريد حذف هذه المجموعة؟\n" +#~ "هذا الإجراء نهائيٌّ." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "أمتيقِّن من أنك تريد حذف هذه المعاملة؟\n" +#~ "هذا الإجراء نهائيٌّ." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "تعذَّر الوصول للمجلَّد المحدَّد. تأكَّد من أذونات فلاتباك." + +#~ msgid "Currency Code" +#~ msgstr "رمز العملة" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "رمز العملة (فارغ)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "التاريخ" + +#~ msgid "Delete Existing" +#~ msgstr "احذف المعاملات الموجودة" + +#~ msgid "Delete Group" +#~ msgstr "احذف المجموعة" + +#~ msgid "Delete Only Source" +#~ msgstr "احذف المصدر فقط" + +#~ msgid "Delete Source and Generated" +#~ msgstr "احذف المصدر والمعاملات المولَّدة" + +#~ msgid "Delete Transaction" +#~ msgstr "احذف المعاملة" + +#~ msgid "Description" +#~ msgstr "الوصف" + +#~ msgid "Description (Empty)" +#~ msgstr "الوصف (فارغ)" + +#~ msgid "Destination Account" +#~ msgstr "حساب الوجهة" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "حساب الوجهة (غير صالح)" + +#~ msgid "Destination Account Password" +#~ msgstr "كلمة سرِّ حساب الوجهة" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "كلمة سرِّ حساب الوجهة (غير صالح)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "كلمة سرِّ حساب الوجهة (مطلوب)" + +#~ msgid "Disassociate Existing" +#~ msgstr "افصل المعاملات الموجودة" + +#~ msgid "Exported account to file successfully." +#~ msgstr "صُدِّر الحساب للملفِّ بنجاح." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "وُلِّد: {0}" + +#~ msgid "Group" +#~ msgstr "المجموعة" + +#~ msgid "Group Name" +#~ msgstr "اسم المجموعة" + +#~ msgid "Id" +#~ msgstr "المعرِّف" + +#~ msgid "Import from Account" +#~ msgstr "استورد من حساب" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "لم تستورد من الملف أي معاملة." +#~ msgstr[1] "اُستوردت من الملف معاملة واحدة." +#~ msgstr[2] "اُستوردت من الملف معاملتان." +#~ msgstr[3] "اُستوردت من الملف {0} معاملات." +#~ msgstr[4] "اُستوردت من الملف {0} معاملة." +#~ msgstr[5] "اُستوردت من الملف {0} معاملة." + +#~ msgid "N/A" +#~ msgstr "غير متوفر" + +#~ msgid "Name" +#~ msgstr "الاسم" + +#~ msgid "Name (Exists)" +#~ msgstr "الاسم (موجود)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "لا" + +#~ msgid "No End Date" +#~ msgstr "لا يوجد تاريخ انتهاء" + +#~ msgid "No Transactions Found" +#~ msgstr "لم يُعثر على معاملات" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "لا توجد معاملات حسب التصفية المحدَّدة." + +#~ msgid "Notes" +#~ msgstr "الملاحظات" + +#~ msgid "Nothing to import from the file." +#~ msgstr "لا شيء للاستيراد من الملف." + +#~ msgid "Page {0}" +#~ msgstr "الصفحة {0}" + +#~ msgid "PDF Password" +#~ msgstr "كلمة سرِّ بي‌دي‌إف" + +#~ msgid "Receipt" +#~ msgstr "الإيصال" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "الإيصال (لا يمكن الوصول للملف)" + +#~ msgid "Receipts" +#~ msgstr "الإيصالات" + +#~ msgid "Repeat End Date" +#~ msgstr "تاريخ انتهاء التكرار" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "تاريخ انتهاء التكرار (غير صالح)" + +#~ msgid "Repeat Interval" +#~ msgstr "مدَّة التكرار" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "غُيِّرت مدَّة التكرار" + +#~ msgid "Select Account" +#~ msgstr "حدِّد حسابًا" + +#~ msgid "Select Backup Folder" +#~ msgstr "حدِّد مجلَّد النسخ الاحتياطيِّ" + +#~ msgid "Sort By Amount" +#~ msgstr "ترتيب حسب المبلغ" + +#~ msgid "Sort By Date" +#~ msgstr "افرز حسب التاريخ" + +#~ msgid "Sort By Id" +#~ msgstr "افرز حسب المعرِّف" + +#~ msgid "Tags" +#~ msgstr "الوسوم" + +#~ msgid "The password of the account was changed." +#~ msgstr "غُيِّرت كلمة سرِّ الحساب." + +#~ msgid "The password of the account was removed." +#~ msgstr "أُزيلت كلمة سرِّ الحساب." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "سوف تزال كلمة السرِّ عقب إغلاق مربَّع الحوار هذا." + +#~ msgid "The passwords do not match." +#~ msgstr "لم تتطابق كلمتا السرِّ." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "غُيِّرت مدَّة التكرار.\n" +#~ "ما تفعل بالمعاملات المولَّدة الموجودة؟\n" +#~ "\n" +#~ "سوف تولَّد معاملات تكرار جديدة حسب المدَّة الجديدة." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "ليس في هذا الحساب مال ليحوِّله." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "هذه المعاملة معاملة تكرار مصدر.\n" +#~ "ما تفعل بالمعاملات المكرَّرة؟\n" +#~ "\n" +#~ "إن حذف معاملة المصدر فقط يتيح\n" +#~ "تعديل المعاملات المولَّدة." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "هذه المعاملة معاملة تكرار مصدر.\n" +#~ "ما تفعل بالمعاملات المكرَّرة؟\n" +#~ "\n" +#~ "إن تحديث معاملة المصدر فقط يفصل\n" +#~ "المعاملات المولَّدة عن المصدر." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "المعاملة" + +#~ msgid "Type" +#~ msgstr "النوع" + +#~ msgid "Unable to export account to file." +#~ msgstr "تعذَّر تصدير الحساب للملفِّ." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "تعذَّر استيراد المعلومات من الملف. تأكد من حصول التطبيق على صلاحية الوصول " +#~ "للملف وجرب مرةً أخرى." + +#, fuzzy +#~ msgid "Unable to import transactions from the file." +#~ msgstr "أضف معاملةً جديدةً أو استورد معاملات من ملفٍّ." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "تعذَّر فتح الحساب. تأكد من حصول التطبيق على صلاحية الوصول للملف وجرب مرةً " +#~ "أخرى." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "تتعذَّر الكتابة على حساب موجود." + +#~ msgid "Untagged" +#~ msgstr "من دون وسم" + +#~ msgid "Upcoming transactions" +#~ msgstr "المعاملات المقبلة" + +#~ msgid "Update Only Source" +#~ msgstr "حدِّث المصدر فقط" + +#~ msgid "Update Source and Generated" +#~ msgstr "حدِّث المصدر والمعاملة المولَّدة" + +#~ msgid "Update Transaction" +#~ msgstr "حدِّث المعاملة" + +#~ msgid "Upload" +#~ msgstr "ارفع" + +#~ msgid "View" +#~ msgstr "اعرض" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "أتريد حماية ملفِّ بي‌دي‌إف بكلمة سرٍّ؟\n" +#~ "\n" +#~ "إن فُقدت كلمة السرِّ فسوف يصبح الملفُّ غير قابل للفتح." + +#~ msgid "Yes" +#~ msgstr "نعم" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "أدر العملة التي يستخدمها الحساب." + +#~ msgid "Set a new password or remove one." +#~ msgstr "عيِّن كلمة سرٍّ جديدة أو أزل إحداها." + +#~ msgid "Other" +#~ msgstr "غير ذلك" + +#~ msgid "Unlimited" +#~ msgstr "دون حدٍّ" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "صدِّر المنظور الحاليَّ" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "افرز حسب الوصف" + +#~ msgid "Today's Overview" +#~ msgstr "ملخَّص لليوم" + +#~ msgid "Select All Overview Filters" +#~ msgstr "حدِّد كلَّ تصفيات النظرة العامة" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "مجموعة جديدة (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "بدِّل ظهور المجموعات" + +#~ msgid "Select All Groups Filters" +#~ msgstr "حدِّد كلَّ تصفيات المجموعات" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "ألغِ تحديد تصفيات المجموعات" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "بدِّل ظهور المجموعات" + +#, fuzzy +#~ msgid "Select All Tags Filters" +#~ msgstr "حدِّد كلَّ تصفيات المجموعات" + +#, fuzzy +#~ msgid "Unselect Tags Filters" +#~ msgstr "ألغِ تحديد تصفيات المجموعات" + +#~ msgid "Calendar" +#~ msgstr "التقويم" + +#~ msgid "Reset To Today" +#~ msgstr "صفِّر لليوم" + +#~ msgid "Today" +#~ msgstr "اليوم" + +#~ msgid "Select Range" +#~ msgstr "اختر مدًى" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "البداية" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "النهاية" + +#~ msgid "Sort From First To Last" +#~ msgstr "افرز من الأحدث إلى الأقدم" + +#~ msgid "Sort From Last To First" +#~ msgstr "افرز من الأقدم إلى الأحدث" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "معاملة جديدة (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "جديد" + +#~ msgid "Suggestions" +#~ msgstr "اقتراحات" + +#~ msgid "Loading..." +#~ msgstr "جارٍ التحميل…" + +#~ msgid "All Accounts" +#~ msgstr "كلُّ الحسابات" + +#~ msgid "Color" +#~ msgstr "اللون" + +#~ msgid "Delete" +#~ msgstr "احذف" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "هذه ليست سوى تسمية مفيدة لا تؤثر على كيفية عمل التطبيق." + +#~ msgid "Enter Password To Login:" +#~ msgstr "أدخل كلمة السرِّ لتسجِّل دخولك:" + +#~ msgid "Checking Account Color" +#~ msgstr "لون الحساب الجاري" + +#~ msgid "Savings Account Color" +#~ msgstr "لون حساب التوفير" + +#~ msgid "Business Account Color" +#~ msgstr "لون حساب الأعمال" + +#~ msgid "Use Native Digits" +#~ msgstr "استخدم أرقام اللغة" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "ما إن كان ينبغي استخدام الأرقام المستخدمة في لغتك (مثلًا الأرقام العربية " +#~ "المشرقية) أم الأرقام العربية المغربية." + +#~ msgid "Backup" +#~ msgstr "النسخ الاحتياطيُّ" + +#~ msgid "CSV Backup Folder" +#~ msgstr "مجلَّد النسخ الاحتياطيِّ ل‍سي‌إس‌في" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "سوف تصدَّر الحسابات غير المعمَّاة على هيأة ملفَّات سي‌إس‌في لهذا الحساب تلقائيًّا، " +#~ "وذلك إن طرأ عليها تغيير." + +#~ msgid "Clear Backup Folder" +#~ msgstr "امحُ مجلَّد النسخ الاحتياطيِّ" + +#~ msgid "No Reminders" +#~ msgstr "لا مفكرات" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "حوِّل" + +#~ msgid "New Transaction" +#~ msgstr "معاملة جديدة" + +#~ msgid "Toggle Sidebar" +#~ msgstr "بدِّل شريط الجانب" + +#~ msgid "Make a Copy" +#~ msgstr "انسخه" + +#~ msgid "Clear End Date" +#~ msgstr "امحُ تاريخ الانتهاء" + +#~ msgid "Daily" +#~ msgstr "كلَّ يوم" + +#~ msgid "Weekly" +#~ msgstr "كلَّ أسبوع" + +#~ msgid "Biweekly" +#~ msgstr "كلَّ نصف شهر" + +#~ msgid "Monthly" +#~ msgstr "كلَّ شهر" + +#~ msgid "Quarterly" +#~ msgstr "كلَّ ربع سنة" + +#~ msgid "Yearly" +#~ msgstr "كلَّ سنة" + +#~ msgid "Biyearly" +#~ msgstr "كلَّ سنتين" + +#~ msgid "Use group color" +#~ msgstr "استخدم لون المجموعة" + +#~ msgid "Use unique color" +#~ msgstr "استخدم لونًا مميِّزًا" + +#~ msgid "Extras" +#~ msgstr "إضافات" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "أدر حقولًا إضافيةً في المعاملة." + +#~ msgid "Enter notes here" +#~ msgstr "أدخل الملاحظات هنا" + +#~ msgid "Edit Transaction" +#~ msgstr "حرِّر المعاملة" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "يكلِّف تحويل المال من هذا الحساب نفقةً عليه ودخلًا على المحوَّل له، وقيمتها هي " +#~ "قيمة التحويل، وتكون النفقة على هيأة معاملة نفقة، ويكون الدخل على هيئة " +#~ "معاملة دخل." + +#~ msgid "Select a destination account" +#~ msgstr "حدِّد حساب الوجهة" + +#~ msgid "Recent Accounts" +#~ msgstr "الحسابات المستخدمة مؤخَّرًا" + +#~ msgid "Conversion Needed" +#~ msgstr "التحويل مطلوب" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "استخدم عملةً مخصَّصةً" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "أدخل تحويلًا هنا" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "حوِّل" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "جديد" + +#, fuzzy +#~ msgid "result" +#~ msgstr "النتيجة" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "money;finance;wallet;cash;bank;Nickvision;مال;مالية;محفظة;بنك;مصرف;نكفجن;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "— إدارة عدة حسابات آنًا في واجهة ألسنة" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— فرز المعاملات حسب نوعها ومجموعتها وتاريخها" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "— تكرار المعاملات، مثل دفع الفواتير كلَّ شهر" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— تحويل المال من حساب لآخر" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— تصدير الحسابات في صورة ملفات سي‌إس‌في، واستيراد ملفات سي‌إس‌في وأو‌إف‌إكس " +#~ "وكيو‌آي‌إف لإضافة الكثير من المعاملات لحساب آنًا" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "اصبر ريثما تُستورد المعاملات..." + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "تعذَّر استيراد المعلومات من الملف، فنوعه ليس مدعومًا." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "ديفد لابشن {0}\n" +#~ "توبايس برنارد {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "نيكولاس لوجوزو {0}\n" +#~ "فيودور سوبليف {1}\n" +#~ "دا‌بج‌جاي {2}" + +#~ msgid "Nickvision" +#~ msgstr "نكفجن" + +#~ msgid "Customize the application's user interface." +#~ msgstr "خصِّص واجهة مستخدم التطبيق." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "خصِّص كيف يستخدم دينار الإعدادات المحلية." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "خصِّص مواضع النسخ الاحتياطيِّ لحسابات دينار." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "غير ذلك" + +#~ msgid "Save" +#~ msgstr "احفظ" + +#~ msgid "Hide" +#~ msgstr "أخفِ" + +#~ msgid "Show" +#~ msgstr "أظهر" + +#~ msgid "Reset Dates Filters" +#~ msgstr "صفِّر تصفيات التواريخ" + +#~ msgid "Delete Group?" +#~ msgstr "أأحذف المجموعة؟" + +#~ msgid "Delete Transaction?" +#~ msgstr "أأحذف المعاملة؟" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "- أصلحت مشكلة تسبب انهيار دينار في الأنظمة التي لم تضبط إعدادات توطينها" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "- أصلحت مشكلة فشل تصدير ملفات بي‌دي‌إف من الحسابات كثيرة الإيصالات" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "- أصلحت مشكلة إعادة تفعيل مرشح مجموعة إن أضيفت لها معاملة" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "- سوف تظهر رسالة خطأ حالما حاول دينار الوصول لملفات ليس له أن يصل لها، " +#~ "وذلك عوضًا عن انهياره" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "- تحديث الترجمات (شكرًا لكل المساهمين من وبليت)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "إعدادات الحساب" + +#~ msgid "Version: {0}" +#~ msgstr "الإصدار: {0}" + +#~ msgid "About {0}" +#~ msgstr "عن {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "نيكولاس لوجوزو https://github.com/nlogozzo\n" +#~ "المساهمون من جت‌هب ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "نيكولاس لوجوزو https://github.com/nlogozzo\n" +#~ "فيودور سوبوليف https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "ديفد لابشن https://github.com/daudix-UFO\n" +#~ "توبايس برنارد https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "المساهمون من وِبليت ❤️ https://hosted.weblate.org/projects/nickvision-money/" +#~ "app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "حوِّل مالًا (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "استورد من ملفٍّ (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "التصفيات" + +#~ msgid "Hide Groups" +#~ msgstr "أخف المجموعات" + +#~ msgid "Show Groups" +#~ msgstr "أظهر المجموعات" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "اُستوردت {0} معاملة من الملفِّ." + +#~ msgid "Enter description here" +#~ msgstr "أدخل الوصف هنا" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "حساب مال (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— أدر عدَّة حسابات آنًا، فواجهة التطبيق واجهة ألسنة\n" +#~ "— افرز المعاملات حسب أنواعها أو مجموعاتها أو تواريخها\n" +#~ "— كرِّر المعاملات بكلِّ يسر، فلك مثلًا أن تكرِّر المعاملات كلَّ شهر\n" +#~ "— حوِّل المال من حساب لآخر\n" +#~ "— صدِّر الحسابات على صورة ملفات سي‌إس‌في، واستورد ملفات سي‌إس‌في أو أو‌إف‌إكس أو " +#~ "كيو‌آي‌إف لتضيف معاملات لحساب" + +#~ msgid "New Window" +#~ msgstr "نافذة جديدة" + +#~ msgid "Transaction ({0})" +#~ msgstr "المعاملة ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "المعاملات ({0})" + +#~ msgid "Reset All Filters" +#~ msgstr "صفِّر كلَّ التصفيات" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "إعدادات الحساب (Ctrl + .)" + +#~ msgid "Sort" +#~ msgstr "افرز" + +#~ msgid "Increasing" +#~ msgstr "التصاعد" + +#~ msgid "Decreasing" +#~ msgstr "التنازل" + +#~ msgid "Sort By" +#~ msgstr "افرز حسب" + +#~ msgid "No Backup Folder" +#~ msgstr "لا يوجد مجلَّد نسخ احتياطيٍّ" + +#~ msgid "Order By" +#~ msgstr "افرز حسب" + +#~ msgid "Enter decimal separator" +#~ msgstr "أدخل الفاصل العشريَّ" + +#~ msgid "Enter group separator" +#~ msgstr "أدخل فاصل المجموعة" diff --git a/resources/po/bg.po b/resources/po/bg.po new file mode 100644 index 000000000..385f69442 --- /dev/null +++ b/resources/po/bg.po @@ -0,0 +1,1711 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2024-04-11 20:57+0000\n" +"Last-Translator: twlvnn \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Негрупирани" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Операции без група" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Прехвърляне към {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Прехвърляне от {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} от {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Утре" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Една седмица от сега" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Един месец от сега" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Два месеца от сега" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Два месеца от сега" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Системата ви съобщи, че валутата ви е" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Неуспешно вписване в сметката. Дадената парола е неправилна." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Управлявайте личните си финанси" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix чат" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Сътрудници в GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "twlvnn " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Добро утро!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Добро утро!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Добър ден!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Добър вечер!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Добър ден!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Тази сметка вече е открита." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Тази сметка вече е открита." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Тази сметка вече е открита." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Внасяне от файл" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Изнасяне във файл" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Изнасяне във файл" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Преглед" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Прехвърляне на пари" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Настройки на сметката" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "Настройки на сметката" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Общо" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Доходи" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Разходи" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Напомняния" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Групи" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Нова група" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Нова" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Операции" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Визуализиране" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Следващо" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Сметка" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Име на сметката" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Вид на сметката" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Разплащателна" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Спестовна" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Бизнес" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Стандартен вид на операциите" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Праг на напомнянията за операции" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Никога" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Един ден по-рано" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Една седмица по-рано" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Един месец по-рано" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Два месеца по-рано" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Валута" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Използване на собствена валута" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Десетичен знак" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Разделител на група" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Без" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Десетични цифри" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Две" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Три" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Четири" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Пет" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Шест" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Стил на показване на сумата" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Символ на валутата" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Парола" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Ако паролата е загубена, няма как да се възстанови файлът!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Нова парола" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Потвърждаване на нова парола" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Смяна на паролата" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Разменяне на валутите" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Разменяне" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Източник" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Резултат" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Сума" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Копиране на сумата на резултата" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Назад" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Нова сметка" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "" +"Използвайте този съветник, за да се възползвате възможно най-много от " +"сметката си" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Да започнем" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Място за съхранение" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Парола на сметката (незадължителен)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Папка" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Избиране на папка" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Презаписване на съществуващи сметки" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Настройки на сметката" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Валута на сметката" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Внасяне на съществуваща информация" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Качете валиден файл, който да използвате за внасяне на съществуваща " +"информация в новия акаунт." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Внасяне на файл" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Избиране на файл" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Изчистване на файл" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Създаване" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Настройки" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Клавишни комбинации" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Помощ" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Относно „Denaro“" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Меню на сметката" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Скорошни" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Нова сметка (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Отваряне на сметка (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Отваряне" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Няма скорошни сметки" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Премахване" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Основно меню" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Преобразувател на валути" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "Сметка" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Табло" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Създадете или отворете сметка, за да започнете. Можете също така да " +"изтеглите файл в приложението от файловия си браузър." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Вид на сметката" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Потребителски интерфейс" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Тема" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Светла" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Тъмна" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Система" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Цветове" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Персонализирайте цветовете, използвани от „Denaro“." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Стандартен цвят на операциите" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Промяната на тази настройка ще се прилага само за новодобавени операции." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Стандартен цвят на преводите" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Промяната на тази настройка ще се прилага само за нови прехвърляния." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Стандартен цвят на групите" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Промяната на тази настройка ще се прилага само за нови групи." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Местоположение" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Вмъкване на десетичен знак" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Зададете за кои натиснати клавиши да бъде вмъкнат десетичният знак на " +"местоположението в полето за сумата." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Изкл." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Само точка на цифровата клавиатура" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Точка и запетая" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Сметка" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Отваряне на сметка" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Програма" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Програма" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Спиране на програмата" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Грешка" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Неуспешно зареждане на данните за валутата. Моля, опитайте отново. " +"Докладвайте за грешка ако продължава да се появява." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Затваряне" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Резултатът е копиран в буфера за обмен." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Сила на паролата" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Смяна на паролата" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Сила на паролата" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Няма операции" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Редактиране на групата" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Внасяне на файл" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub проект" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "„Nickvision Denaro“ сметка" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +#, fuzzy +msgid "Enter password here" +msgstr "Въведете бележките тук" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Отказване" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Отключване" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Място за съхранение" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "Въведете бележките тук" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Отваряне" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Действия" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Спестовна" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +#, fuzzy +msgid "Enter symbol here" +msgstr "Въведете бележките тук" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +#, fuzzy +msgid "Enter code here" +msgstr "Въведете бележките тук" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Стил на показване на сумата" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Внасяне на файл" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Няма избрана сметка" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Име на сметката (отворена)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Символ на валутата (празен)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Име (празен)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Десетичен знак (празен)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Десетичен знак (неправилен)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Разделител на група (неправилен)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Символ на валутата (неправилен)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Изнасяне на всичката информация" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Създадете или отворете сметка, за да започнете. Можете също така да " +"изтеглите файл в приложението от файловия си браузър." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Неуспешно презаписване на отворена сметка." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Резултатът е копиран в буфера за обмен." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Затваряне на сметката" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Стандартен вид на операциите" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Стандартен цвят на преводите" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Стандартен цвят на групите" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Резултат" + +#~ msgid "(Copy)" +#~ msgstr "(Копиране)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} етикет" +#~ msgstr[1] "{0} етикети" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} операция" +#~ msgstr[1] "{0} операции" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Име на сметката (съществува)" + +#~ msgid "Add" +#~ msgstr "Добавяне" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Добавете нова операция или внесете операции от файл." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Искате ли да добавите парола към този PDF?" + +#~ msgid "All files" +#~ msgstr "Всички файлове" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Сума (неправилен)" + +#~ msgid "Apply" +#~ msgstr "Прилагане" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Сигурни ли сте, че искате да премахнете тази група?\n" +#~ "Това действие е необратимо." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Сигурни ли сте, че искате да премахнете тази операция?\n" +#~ "Това действие е необратимо." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Няма достъп до избраната папка, проверете правата на Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Код на валутата" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Код на валутата (празен)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Дата" + +#~ msgid "Delete Existing" +#~ msgstr "Премахване на съществуващ" + +#~ msgid "Delete Group" +#~ msgstr "Премахване на групата" + +#~ msgid "Delete Only Source" +#~ msgstr "Премахване само на източника" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Премахване на източника и генерирания" + +#~ msgid "Delete Transaction" +#~ msgstr "Премахване на операцията" + +#~ msgid "Description" +#~ msgstr "Описание" + +#~ msgid "Description (Empty)" +#~ msgstr "Описание (празен)" + +#~ msgid "Destination Account" +#~ msgstr "Целева сметка" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Целева сметка (неправилен)" + +#~ msgid "Destination Account Password" +#~ msgstr "Парола на целевата сметка" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Парола на целевата сметка (неправилен)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Парола на целевата сметка (задължителен)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Прекъсване на връзката на съществуващото" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Сметката е изнесена във файла успешно." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Генерирано: {0}" + +#~ msgid "Group" +#~ msgstr "Група" + +#~ msgid "Group Name" +#~ msgstr "Име на група" + +#~ msgid "Id" +#~ msgstr "Идентификатор" + +#~ msgid "Import from Account" +#~ msgstr "Внасяне от сметка" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Внесена е {0} операция от файл." +#~ msgstr[1] "Внесени са {0} операции от файл." + +#~ msgid "N/A" +#~ msgstr "Липсва" + +#~ msgid "Name" +#~ msgstr "Име" + +#~ msgid "Name (Exists)" +#~ msgstr "Име (съществува)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Не" + +#~ msgid "No End Date" +#~ msgstr "Без крайна дата" + +#~ msgid "No Transactions Found" +#~ msgstr "Няма намерени операции" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Няма транзакции, които да отговарят на зададените филтри." + +#~ msgid "Notes" +#~ msgstr "Бележки" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Няма какво да се внесе от файла." + +#~ msgid "Page {0}" +#~ msgstr "Страница {0}" + +#~ msgid "PDF Password" +#~ msgstr "PDF парола" + +#~ msgid "Receipt" +#~ msgstr "Разписка" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Разписка (файлът е недостъпен)" + +#~ msgid "Receipts" +#~ msgstr "Разписки" + +#~ msgid "Repeat End Date" +#~ msgstr "Крайна дата на повторение" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Крайна дата на повторение (неправилен)" + +#~ msgid "Repeat Interval" +#~ msgstr "Интервал на повторение" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Интервалът на повторение е променен" + +#~ msgid "Select Account" +#~ msgstr "Избиране на сметка" + +#~ msgid "Select Backup Folder" +#~ msgstr "Избиране на папка за резерв" + +#~ msgid "Sort By Amount" +#~ msgstr "Подреждане по сума" + +#~ msgid "Sort By Date" +#~ msgstr "Подреждане по дата" + +#~ msgid "Sort By Id" +#~ msgstr "Подреждане по идентификатор" + +#~ msgid "Tags" +#~ msgstr "Етикети" + +#~ msgid "The password of the account was changed." +#~ msgstr "Паролата на сметката е променена." + +#~ msgid "The password of the account was removed." +#~ msgstr "Паролата на сметката е премахната." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Паролата ще бъде премахната след затварянето на този прозорец." + +#~ msgid "The passwords do not match." +#~ msgstr "Паролите не съвпадат." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Интервалът на повтаряне е променен.\n" +#~ "Какво искате да направите със съществуващите генерирани операции?\n" +#~ "\n" +#~ "Нови повтарящи се операции ще бъдат генерирани въз основа на новия " +#~ "интервал." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "В тази сметка няма налични средства за прехвърляне." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Тази операция се повтаря в източника.\n" +#~ "Какво искате да направите с повтарящите се операции?\n" +#~ "\n" +#~ "Премахването само на операцията от източника ще позволи на\n" +#~ "отделните генерирани операции да може да се променят." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Тази операция се повтаря в източника.\n" +#~ "Какво искате да направите с повтарящите се операции?\n" +#~ "\n" +#~ "Обновяването само на операцията от източника ще прекъсне\n" +#~ "връзката на генерираните операции от източника." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Операция" + +#~ msgid "Type" +#~ msgstr "Вид" + +#~ msgid "Unable to export account to file." +#~ msgstr "Неуспешно изнасяне на сметката във файла." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Неуспешно внасяне на информацията от файла. Уверете се, че приложението " +#~ "има правата да достъпи файла и опитайте отново." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Неуспешно внасяне на операциите от файла." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Неуспешно отваряне на сметката. Уверете се, че приложението има правата " +#~ "да достъпи файла и опитайте отново." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Неуспешно презаписване на съществуваща сметка." + +#~ msgid "Untagged" +#~ msgstr "Без етикет" + +#~ msgid "Upcoming transactions" +#~ msgstr "Предстоящи операции" + +#~ msgid "Update Only Source" +#~ msgstr "Обновяване само на източника" + +#~ msgid "Update Source and Generated" +#~ msgstr "Обновяване на източника и генерирания" + +#~ msgid "Update Transaction" +#~ msgstr "Обновяване на операцията" + +#~ msgid "Upload" +#~ msgstr "Качване" + +#~ msgid "View" +#~ msgstr "Изглед" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Искате ли да защитите PDF файла с парола?\n" +#~ "\n" +#~ "Ако паролата е загубена, PDF файлът ще бъде дедостъпен." + +#~ msgid "Yes" +#~ msgstr "Да" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Управлявайте валутата, използвана от сметката." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Задайте нова парола или премахнете такава." + +#~ msgid "Other" +#~ msgstr "Друго" + +#~ msgid "Unlimited" +#~ msgstr "Неограничено" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Изнасяне на текущия изглед" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Търсене по описание" + +#~ msgid "Today's Overview" +#~ msgstr "Днешният преглее" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Избиране на всички филтри за преглед" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Нова група (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Превключване на видимостта на групите" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Избиране на всички филтри за групите" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Демаркиране на филтрите за групите" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Превключване на видимостта на етикетите" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Избиране на всички филтри за етикетите" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Демаркиране на филтрите за етикети" + +#~ msgid "Calendar" +#~ msgstr "Календар" + +#~ msgid "Select Current Month" +#~ msgstr "Избиране на текущия месец" + +#~ msgid "Reset To Today" +#~ msgstr "Връщане до днес" + +#~ msgid "Today" +#~ msgstr "Днес" + +#~ msgid "Select Range" +#~ msgstr "Избиране на диапазон" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Начало" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Край" + +#~ msgid "Sort From First To Last" +#~ msgstr "Сортиране от първо към последно" + +#~ msgid "Sort From Last To First" +#~ msgstr "Сортиране от последно към първо" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Нова операция (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Нова" + +#~ msgid "Suggestions" +#~ msgstr "Предложения" + +#~ msgid "Converter" +#~ msgstr "Преобразувател" + +#~ msgid "Loading..." +#~ msgstr "Зареждане..." + +#~ msgid "All Accounts" +#~ msgstr "Всички сметки" + +#~ msgid "Color" +#~ msgstr "Цвят" + +#~ msgid "Delete" +#~ msgstr "Изтриване" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Това е само полезен етикет, който не влияе на работата на приложението." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Въведете паролата, за да се впишете:" + +#~ msgid "Checking Account Color" +#~ msgstr "Цвят на разплащателната сметка" + +#~ msgid "Savings Account Color" +#~ msgstr "Цвят на спестовната сметка" + +#~ msgid "Business Account Color" +#~ msgstr "Цвят на бизнес сметка" + +#~ msgid "Use Native Digits" +#~ msgstr "Използване на собствени цифри" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Дали да се използват цифри, които са за вашия регион вместо латински " +#~ "цифри." + +#~ msgid "Backup" +#~ msgstr "Резерв" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Папка за CSV резерв" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Нешифрирани сметки автоматично се изнасят като CSV файлове в тази папка, " +#~ "когато се направи промяна." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Изчистване на резервната папка" + +#~ msgid "No Reminders" +#~ msgstr "Няма напомняния" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Превод" + +#~ msgid "New Transaction" +#~ msgstr "Нова операция" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Превключване на страничната лента" + +#~ msgid "Make a Copy" +#~ msgstr "Направете копие" + +#~ msgid "Clear End Date" +#~ msgstr "Изчистване на крайната дата" + +#~ msgid "Daily" +#~ msgstr "Ежедневно" + +#~ msgid "Weekly" +#~ msgstr "Седмично" + +#~ msgid "Biweekly" +#~ msgstr "Двуседмично" + +#~ msgid "Monthly" +#~ msgstr "Месечно" + +#~ msgid "Quarterly" +#~ msgstr "Тримесечно" + +#~ msgid "Yearly" +#~ msgstr "Годишно" + +#~ msgid "Biyearly" +#~ msgstr "Двугодишно" + +#~ msgid "Use group color" +#~ msgstr "Използване на групов цвят" + +#~ msgid "Use unique color" +#~ msgstr "Използване на собствен цвят" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Въведете ново име на етикет..." + +#~ msgid "Add Tag" +#~ msgstr "Добавяне на етикет" + +#~ msgid "Extras" +#~ msgstr "Допълнения" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Управлявайте допълнителните полета на операцията." + +#~ msgid "Edit Transaction" +#~ msgstr "Редактиране на операцията" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Прехвърлянето на пари ще създаде разходна операция с дадената сума в тази " +#~ "сметка и доходна операция с дадената сума в сметката за прехвърляне." + +#~ msgid "Select a destination account" +#~ msgstr "Изберете целева сметка" + +#~ msgid "Recent Accounts" +#~ msgstr "Скоро ползвани сметки" + +#~ msgid "Conversion Needed" +#~ msgstr "Необходимо е преобразуване" + +#~ msgid "Use Custom Rates" +#~ msgstr "Използване на собствени коефициенти" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Въведете коефициентите на преобразуване ръчно" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Превеждане" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Нова" + +#~ msgid "Toggle Graphs" +#~ msgstr "Превключване на графиките" diff --git a/resources/po/cs.po b/resources/po/cs.po new file mode 100644 index 000000000..7eaebd34c --- /dev/null +++ b/resources/po/cs.po @@ -0,0 +1,1948 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-11-17 11:26+0000\n" +"Last-Translator: Fjuro \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 5.2\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Neseskupené" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transakce bez skupiny" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Převést na {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Převést z {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} z {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Zítra" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Jeden týden ode dneška" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Jeden měsíc ode dneška" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Dva měsíce ode dneška" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Dva měsíce ode dneška" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Váš systém hlásí, že vaší měnou je" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Nelze se přihlásit k účtu. Zadané heslo je neplatné." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Správa osobních financí" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Přispěvatelé na GitHubu ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Jonáš Loskot , 2023" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Dobré ráno!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Dobré ráno!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Dobré odpoledne!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Dobrý večer!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Dobrý den!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Tento účet je již otevřen." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Tento účet je již otevřen." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Tento účet je již otevřen." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Import ze souboru" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Export do souboru" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Export do souboru" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Přehled" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Převod peněz" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Nastavení účtu" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Nastavení" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Celkem" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Příjem" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Výdaj" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Připomínky" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Skupiny" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Nová skupina" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nová" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transakce" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Vizualizace" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Další" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Účet" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Název účtu" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Typ účtu" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Běžný" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Spořicí" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Firemní" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Výchozí typ transakce" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Hranice pro připomenutí transakcí" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nikdy" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Jeden den před" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Jeden týden před" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Jeden měsíc před" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Dva měsíce před" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Měna" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Použít vlastní měnu" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Oddělovač desetinných míst" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Oddělovač skupin" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Žádný" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Desetinné číslice" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Dva" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Tři" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Čtyři" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Pět" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Šest" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Styl zobrazení množství" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Symbol měny" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Heslo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Pokud dojde ke ztrátě hesla, není možné soubor obnovit!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nové heslo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Potvrzení hesla" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Změnit heslo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Prohodit měny" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Prohodit" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Zdroj" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Výsledek" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Množství" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Zkopírovat množství výsledku" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Zpět" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nový účet" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Pomocí tohoto průvodce získáte ze svého účtu maximum" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Začínáme" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Umístění úložiště" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Heslo účtu (volitelné)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Složka" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Vybrat složku" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Přepsat existující účty" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Možnosti účtu" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Měna účtu" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importovat existující informace" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Pro importování existujících informací do nového účtu nahrajte platný soubor." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Import souboru" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Vybrat soubor" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Vymazat soubor" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Vytvořit" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Předvolby" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Klávesové zkratky" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Nápověda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "O aplikaci Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Nabídka účtu" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Nedávné" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nový účet (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Otevřít účet (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Otevřít" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Žádné nedávné účty" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Odebrat" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Hlavní nabídka" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Domů" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Převodník měn" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Účty" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Nástěnka" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Chcete-li začít, vytvořte si nebo otevřete účet. Do aplikace můžete také " +"přetáhnout soubor z prohlížeče souborů." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Typ účtu" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Uživatelské rozhraní" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Motiv" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Světlý" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Tmavý" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Systémový" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Barvy" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Přizpůsobit barvy používané Denarem." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Výchozí barva transakce" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "Změna tohoto nastavení se projeví pouze u nově přidaných transakcí." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Výchozí barva převodu" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Změna tohoto nastavení se projeví pouze u nových převodů." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Výchozí barva skupiny" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Změna tohoto nastavení se projeví pouze u nových skupin." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Národní prostředí" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Vložení desetinného oddělovače" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Nastavte, pro které stisknuté klávesy se do pole částky vloží desetinný " +"oddělovač místního jazyka." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Vypnout" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Pouze čárka na numerické klávesnici" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Tečka a čárka" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Účet" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Otevřít účet" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplikace" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplikace" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Opustit" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Chyba" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Nepodařilo se načíst informace o měnách. Zkuste to prosím znovu. Pokud chyba " +"nezmizí, nahlaste to prosím jako chybu." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Zavřít" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Výsledek zkopírován do schránky." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Síla hesla" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Změnit heslo" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Síla hesla" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Žádné transakce" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Upravit skupinu" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Import souboru" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repozitář GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Účet Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Sem zadejte heslo" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Zrušit" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Odemknout" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Umístění úložiště" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Sem zadejte název" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Otevřít" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Akce" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Spořicí" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Sem zadejte symbol" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Sem zadejte kód" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Styl zobrazení množství" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Import souboru" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Není vybrán žádný účet" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Název účtu (otevřený)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Symbol měny (prázdný)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Název (prázdný)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Oddělovač desetinných míst (prázdný)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Oddělovač desetinných míst (neplatný)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Oddělovač skupin (neplatný)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Symbol měny (neplatný)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Exportovat všechny informace" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Seznam změn" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Nahlásit chybu" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Diskuze" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Zásluhy" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Chcete-li začít, vytvořte si nebo otevřete účet. Do aplikace můžete také " +"přetáhnout soubor z prohlížeče souborů." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Nelze přepsat otevřený účet." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Výsledek zkopírován do schránky." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Uzavřít účet" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Výchozí typ transakce" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Výchozí barva převodu" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Výchozí barva skupiny" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Sem zadejte částku" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Výsledek" + +#~ msgid "(Copy)" +#~ msgstr "(Kopírovat)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} štítek" +#~ msgstr[1] "{0} štítky" +#~ msgstr[2] "{0} štítků" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transakce" +#~ msgstr[1] "{0} transakce" +#~ msgstr[2] "{0} transakcí" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Název účtu (existuje)" + +#~ msgid "Add" +#~ msgstr "Přidat" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Přidejte novou transakci nebo importujte transakce ze souboru." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Přidat heslo do PDF?" + +#~ msgid "All files" +#~ msgstr "Všechny soubory" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Částka (neplatná)" + +#~ msgid "Apply" +#~ msgstr "Použít" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Opravdu chcete odstranit tuto skupinu?\n" +#~ "Tato akce je nevratná." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Opravdu chcete odstranit tuto transakci?\n" +#~ "Tato akce je nevratná." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Nelze získat přístup k vybrané složce, zkontrolujte oprávnění Flatpaku." + +#~ msgid "Currency Code" +#~ msgstr "Kód měny" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Kód měny (prázdný)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Datum" + +#~ msgid "Delete Existing" +#~ msgstr "Odstranit stávající" + +#~ msgid "Delete Group" +#~ msgstr "Odstranit skupinu" + +#~ msgid "Delete Only Source" +#~ msgstr "Odstranit pouze zdroj" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Odstranit zdroj a generované" + +#~ msgid "Delete Transaction" +#~ msgstr "Odstranit transakci" + +#~ msgid "Description" +#~ msgstr "Popis" + +#~ msgid "Description (Empty)" +#~ msgstr "Popis (prázdný)" + +#~ msgid "Destination Account" +#~ msgstr "Cílový účet" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Cílový účet (neplatný)" + +#~ msgid "Destination Account Password" +#~ msgstr "Heslo cílového účtu" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Heslo cílového účtu (neplatné)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Heslo cílového účtu (povinné)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Odpojit stávající" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Účet byl úspěšně exportován do souboru." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Vygenerováno: {0}" + +#~ msgid "Group" +#~ msgstr "Skupina" + +#~ msgid "Group Name" +#~ msgstr "Název skupiny" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Import z účtu" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Importována {0} transakce ze souboru." +#~ msgstr[1] "Importovány {0} transakce ze souboru." +#~ msgstr[2] "Importováno {0} transakcí ze souboru." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Název" + +#~ msgid "Name (Exists)" +#~ msgstr "Název (existuje)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Ne" + +#~ msgid "No End Date" +#~ msgstr "Žádné datum ukončení" + +#~ msgid "No Transactions Found" +#~ msgstr "Nenalezeny žádné transakce" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Žádné transakce neodpovídají zadaným filtrům." + +#~ msgid "Notes" +#~ msgstr "Poznámky" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nic k importování ze souboru." + +#~ msgid "Page {0}" +#~ msgstr "Strana {0}" + +#~ msgid "PDF Password" +#~ msgstr "Heslo PDF" + +#~ msgid "Receipt" +#~ msgstr "Faktura" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Faktura (soubor nedostupný)" + +#~ msgid "Receipts" +#~ msgstr "Účtenky" + +#~ msgid "Repeat End Date" +#~ msgstr "Datum ukončení opakování" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Datum ukončení opakování (neplatné)" + +#~ msgid "Repeat Interval" +#~ msgstr "Interval opakování" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Interval opakování změněn" + +#~ msgid "Select Account" +#~ msgstr "Vybrat účet" + +#~ msgid "Select Backup Folder" +#~ msgstr "Vyberte složku záloh" + +#~ msgid "Sort By Amount" +#~ msgstr "Seřadit podle množství" + +#~ msgid "Sort By Date" +#~ msgstr "Seřadit podle data" + +#~ msgid "Sort By Id" +#~ msgstr "Seřadit podle ID" + +#~ msgid "Tags" +#~ msgstr "Štítky" + +#~ msgid "The password of the account was changed." +#~ msgstr "Heslo účtu bylo změněno." + +#~ msgid "The password of the account was removed." +#~ msgstr "Heslo účtu bylo odstraněno." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Heslo bude odstraněno po zavření tohoto dialogu." + +#~ msgid "The passwords do not match." +#~ msgstr "Hesla se neshodují." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Interval opakování byl změněn.\n" +#~ "Co chcete udělat se stávajícími vygenerovanými transakcemi?\n" +#~ "\n" +#~ "Nové opakované transakce budou generovány na základě nového intervalu." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Tento účet nemá žádné peníze k převodu." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Tato transakce je opakovanou transakcí zdroje.\n" +#~ "Co chcete s opakovanými transakcemi udělat?\n" +#~ "\n" +#~ "Odstraněním pouze zdrojové transakce umožníte\n" +#~ "individuální úpravu vygenerovaných transakcí." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Tato transakce je opakovanou transakcí zdroje.\n" +#~ "Co chcete s opakovanými transakcemi udělat?\n" +#~ "\n" +#~ "Aktualizací pouze zdrojové transakce dojde k odpojení\n" +#~ "vygenerovaných transakcí od zdroje." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transakce" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Unable to export account to file." +#~ msgstr "Nepodařilo se exportovat účet do souboru." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Nepodařilo se importovat informace ze souboru. Ujistěte se, že má " +#~ "aplikace oprávnění k přístupu k vašemu souboru a zkuste to znovu." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Nepodařilo se importovat transakce ze souboru." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Nepodařilo se otevřít účet. Ujistěte se, že má aplikace oprávnění k " +#~ "přístupu k vašemu souboru a zkuste to znovu." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Nelze přepsat existující účet." + +#~ msgid "Untagged" +#~ msgstr "Bez štítku" + +#~ msgid "Upcoming transactions" +#~ msgstr "Nadcházející transakce" + +#~ msgid "Update Only Source" +#~ msgstr "Aktualizovat pouze zdroj" + +#~ msgid "Update Source and Generated" +#~ msgstr "Aktualizovat zdroj a generované" + +#~ msgid "Update Transaction" +#~ msgstr "Aktualizovat transakci" + +#~ msgid "Upload" +#~ msgstr "Nahrát" + +#~ msgid "View" +#~ msgstr "Zobrazit" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Chcete soubor PDF chránit heslem?\n" +#~ "\n" +#~ "Pokud heslo ztratíte, soubor PDF bude nepřístupný." + +#~ msgid "Yes" +#~ msgstr "Ano" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Správa měny používané účtem." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Nastavte nové heslo nebo jej odstraňte." + +#~ msgid "Other" +#~ msgstr "Jiný" + +#~ msgid "Unlimited" +#~ msgstr "Neomezeně" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Exportovat aktuální zobrazení" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Vyhledávání podle popisu" + +#~ msgid "Today's Overview" +#~ msgstr "Dnešní přehled" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Vybrat všechny filtry přehledu" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Nová skupina (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Přepnout viditelnost skupin" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Vybrat všechny filtry skupin" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Zrušit výběr filtrů skupin" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Přepnout viditelnost štítků" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Vybrat všechny filtry štítků" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Zrušit výběr filtrů štítků" + +#~ msgid "Calendar" +#~ msgstr "Kalendář" + +#~ msgid "Select Current Month" +#~ msgstr "Vybrat aktuální měsíc" + +#~ msgid "Reset To Today" +#~ msgstr "Obnovit na dnešek" + +#~ msgid "Today" +#~ msgstr "Dnes" + +#~ msgid "Select Range" +#~ msgstr "Zvolit rozsah" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Začátek" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Konec" + +#~ msgid "Sort From First To Last" +#~ msgstr "Řazení od prvního do posledního" + +#~ msgid "Sort From Last To First" +#~ msgstr "Řazení od posledního k prvnímu" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nová transakce (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nová" + +#~ msgid "Suggestions" +#~ msgstr "Návrhy" + +#~ msgid "Converter" +#~ msgstr "Převodník" + +#~ msgid "Loading..." +#~ msgstr "Načítání..." + +#~ msgid "All Accounts" +#~ msgstr "Všechny účty" + +#~ msgid "Color" +#~ msgstr "Barva" + +#~ msgid "Delete" +#~ msgstr "Odstranit" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Jedná se pouze o užitečné označení, které nemá vliv na fungování aplikace." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Pro přihlášení zadejte heslo:" + +#~ msgid "Checking Account Color" +#~ msgstr "Barva běžného účtu" + +#~ msgid "Savings Account Color" +#~ msgstr "Barva spořicího účtu" + +#~ msgid "Business Account Color" +#~ msgstr "Barva firemního účtu" + +#~ msgid "Use Native Digits" +#~ msgstr "Použít nativní číslice" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Zda se mají místo latinských číslic používat číslice, které jsou pro " +#~ "danou oblast přirozené." + +#~ msgid "Backup" +#~ msgstr "Záloha" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Složka zálohy CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Nezašifrované účty se při změně automaticky exportují do této složky jako " +#~ "soubory CSV." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Vymazat složku záloh" + +#~ msgid "No Reminders" +#~ msgstr "Žádné připomínky" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Převod" + +#~ msgid "New Transaction" +#~ msgstr "Nová transakce" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Přepnout postranní panel" + +#~ msgid "Make a Copy" +#~ msgstr "Vytvořit kopii" + +#~ msgid "Clear End Date" +#~ msgstr "Vymazat datum ukončení" + +#~ msgid "Daily" +#~ msgstr "Denně" + +#~ msgid "Weekly" +#~ msgstr "Týdně" + +#~ msgid "Biweekly" +#~ msgstr "Dvakrát týdně" + +#~ msgid "Monthly" +#~ msgstr "Měsíčně" + +#~ msgid "Quarterly" +#~ msgstr "Čtvrtletně" + +#~ msgid "Yearly" +#~ msgstr "Ročně" + +#~ msgid "Biyearly" +#~ msgstr "Dvakrát ročně" + +#~ msgid "Use group color" +#~ msgstr "Použít barvu skupiny" + +#~ msgid "Use unique color" +#~ msgstr "Použít unikátní barvu" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Zadejte nový název štítku..." + +#~ msgid "Add Tag" +#~ msgstr "Přidat štítek" + +#~ msgid "Extras" +#~ msgstr "Další" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Spravovat další pole transakce." + +#~ msgid "Enter notes here" +#~ msgstr "Sem zadejte poznámky" + +#~ msgid "Edit Transaction" +#~ msgstr "Upravit transakci" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Převodem peněz se vytvoří nákladová transakce s danou částkou na tomto " +#~ "účtu a příjmová transakce s danou částkou na účtu, na který je prováděn " +#~ "převod." + +#~ msgid "Select a destination account" +#~ msgstr "Vyberte cílový účet" + +#~ msgid "Recent Accounts" +#~ msgstr "Nedávné účty" + +#~ msgid "Conversion Needed" +#~ msgstr "Nutná konverze" + +#~ msgid "Use Custom Rates" +#~ msgstr "Použít vlastní kurzy" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Ručně zadejte kurzy" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Převod" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Nová" + +#~ msgid "Toggle Graphs" +#~ msgstr "Přepnout grafy" + +#~ msgid "result" +#~ msgstr "výsledek" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "peníze;finance;peněženka;hotovost;banka;Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Správa několika účtů najednou pomocí intuitivního rozhraní s kartami" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— Snadné filtrování transakcí podle typu, skupiny nebo data" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Snadné opakované transakce, například účtování, ke kterým dochází každý " +#~ "měsíc" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Převod peněz z jednoho účtu na druhý" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Export účtu do souboru CSV a import souboru CSV, OFX nebo QIF pro " +#~ "hromadné přidání transakcí na účet" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "Počkejte prosím na import transakcí..." + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Nepodařilo se importovat informace ze souboru. Nepodporovaný typ souboru." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Přizpůsobit uživatelské rozhraní aplikace." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Přizpůsobte si, jak Denaro využívá nastavení národního prostředí." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Přizpůsobte si umístění záloh pro účty Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Jiný" + +#~ msgid "Save" +#~ msgstr "Uložit" + +#~ msgid "Hide" +#~ msgstr "Skrýt" + +#~ msgid "Show" +#~ msgstr "Zobrazit" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Obnovit filtry dat" + +#~ msgid "Delete Group?" +#~ msgstr "Odstranit skupinu?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Odstranit transakci?" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "- Opraven problém, při kterém Denaro padalo na systémech s nenastavenými " +#~ "místními nastaveními" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "" +#~ "- Opraven problém, kdy se nezdařil export do PDF u účtů s velkým počtem " +#~ "faktur" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "" +#~ "- Opraven problém, kdy se filtr skupiny znovu aktivoval, když byla do " +#~ "dané skupiny přidána transakce" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "- Pokud se Denaro pokusí o přístup k nedostupným souborům, místo pádu se " +#~ "zobrazí chybové zprávy" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "- Aktualizovány překlady (Díky všem na Weblate)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Nastavení účtu" + +#~ msgid "Version: {0}" +#~ msgstr "Verze: {0}" + +#~ msgid "About {0}" +#~ msgstr "O aplikaci {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Přispěvatelé na GitHubu ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Překladatelé na Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Převod peněz (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Import ze souboru (Ctrl+I)" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transakce ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transakce ({0})" + +#~ msgid "Filters" +#~ msgstr "Filtry" + +#~ msgid "Reset All Filters" +#~ msgstr "Obnovit všechny filtry" + +#~ msgid "Hide Groups" +#~ msgstr "Skrýt skupiny" + +#~ msgid "Show Groups" +#~ msgstr "Zobrazit skupiny" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Nastavení účtu (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Řazení" + +#~ msgid "Order By" +#~ msgstr "Řadit podle" + +#~ msgid "Increasing" +#~ msgstr "Vzestupně" + +#~ msgid "Decreasing" +#~ msgstr "Sestupně" + +#~ msgid "Sort By" +#~ msgstr "Řadit podle" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Importováno {0} transakcí ze souboru." + +#~ msgid "Enter description here" +#~ msgstr "Sem zadejte popis" + +#~ msgid "Enter decimal separator" +#~ msgstr "Zadejte oddělovač desetinných míst" + +#~ msgid "Enter group separator" +#~ msgstr "Zadejte oddělovač skupin" + +#~ msgid "No Backup Folder" +#~ msgstr "Žádná složka záloh" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Správa více účtů najednou pomocí známého rozhraní karet\n" +#~ "— Snadné filtrování transakcí podle typu, skupiny nebo data\n" +#~ "— Snadné opakování transakcí, například účtů, které se objevují každý " +#~ "měsíc.\n" +#~ "— Převod peněz z jednoho účtu na druhý\n" +#~ "— Export účtu jako soubor CSV a import souboru CSV, OFX nebo QIF pro " +#~ "hromadné přidávání transakcí na účet" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Peněžní účet (*.nmoney)" + +#~ msgid "New Window" +#~ msgstr "Nové okno" diff --git a/resources/po/da.po b/resources/po/da.po new file mode 100644 index 000000000..ccedb5c87 --- /dev/null +++ b/resources/po/da.po @@ -0,0 +1,1705 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Ikke grupperet" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Overførsler uden en gruppe" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Overfør til {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Overfør fra {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Dit system fortalte at din valuta er" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Ude af stand til at logge ind på kontoen. Kodeordet er forkert." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Administrer din privatøkonomi" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix Chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Godmorgen!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Godmorgen!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "God eftermiddag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Godaften!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "God dag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Denne konto er allerede åben." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Denne konto er allerede åben." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Denne konto er allerede åben." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importer fra fil" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Eksporter til fil" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Eksporter til fil" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Oversigt" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Overfør penge" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Konto indstillinger" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Indstillinger" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Indkomst" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Udgift" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupper" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Ny gruppe" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Ny" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Overførsler" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +#, fuzzy +msgid "Account Name" +msgstr "Kontotype" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Kontotype" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Indkomst" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Opsparing" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Virksomhed" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Standard overførselstype" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Aldrig" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Valuta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Brug tilpasset valuta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +#, fuzzy +msgid "Decimal Separator" +msgstr "Indsæt decimal-seperator" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Valuta symbol" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Kodeord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Hvis du glemmer kodeordet kan kontoen ikke blive genskabt!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Ny kodeord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Bekræft kodeord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Skift kodeord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Resultat" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Beløb" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "Ingen seneste kontier" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Tilbage" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Ny konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +#, fuzzy +msgid "Let's Start" +msgstr "Start" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Kodeord på destinations konto (ugyldig)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +#, fuzzy +msgid "Select Folder" +msgstr "Vælg rækkevidde" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +#, fuzzy +msgid "Overwrite Existing Accounts" +msgstr "Modtagerkonto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "Konto indstillinger" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +#, fuzzy +msgid "Account Currency" +msgstr "Konto menu" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +#, fuzzy +msgid "Import File" +msgstr "Importer fra fil" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +#, fuzzy +msgid "Select File" +msgstr "Vælg rækkevidde" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Præferencer" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Tastatur genveje" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Hjælp" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Konto menu" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Seneste" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Ny konto (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Åbn konto (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Åbn" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Ingen seneste kontier" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Fjern" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Hovedmenu" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Hjem" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Valutakode" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Opret eller åbn en konto for at starte. Du kan også trække en fil ind i " +"programmet fra fil browseren." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Kontotype" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Brugerflade" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +#, fuzzy +msgctxt "Theme" +msgid "Light" +msgstr "Lys" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +#, fuzzy +msgctxt "Theme" +msgid "Dark" +msgstr "Mørk" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +#, fuzzy +msgctxt "Theme" +msgid "System" +msgstr "System" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Farver" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Tilpas farverne som Denaro bruger." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Standardfarve for overførsel" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"En ændring i indstillinger bliver kun gælde for nyligt tilføjede overførsler." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Standardfarve for overførsel" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "En ændring i indstillinger vil gælde for nye overførsler." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +#, fuzzy +msgid "Group Default Color" +msgstr "Standardfarve for overførsel" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "En ændring i indstillinger vil gælde for nye overførsler." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Lokalitet" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Indsæt decimal-seperator" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Indstil hvilke taster der kan trykkes på for at indsætte lokalitetens " +"decimalseparator i beløbsfeltet." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Fra" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Kun numerisk tastatur" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Punktum og komma" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Åbn konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Program" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Program" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Afslut" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Luk" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Kodeord" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Skift kodeord" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Kodeord" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Ingen overførsler" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Ret gruppe" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importer fra fil" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub Depot" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro Konto" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Indtast kodeord" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Afbryd" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Lås op" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "Indtast navn her" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Åbn" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Handlinger" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Opsparing" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Indtast symbol her" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Indsæt valutakode her" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Beløb" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importer fra fil" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Ingen konto valgt" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Ingen konto åbnet" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Valuta symbol (tom)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Navn (tom)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +#, fuzzy +msgid "Decimal Separator (Empty)" +msgstr "Indsæt decimal-seperator" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +#, fuzzy +msgid "Decimal Separator (Invalid)" +msgstr "Indsæt decimal-seperator" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +#, fuzzy +msgid "Group Separator (Invalid)" +msgstr "Beløb (ugyldig)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Valuta symbol (tom)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Ændringer" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Anmeld en fejl" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Diskussioner" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Kreditter" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Opret eller åbn en konto for at starte. Du kan også trække en fil ind i " +"programmet fra fil browseren." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Ude af stand til at overskrive en åbnet konto." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Luk konto" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Standard overførselstype" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Standardfarve for overførsel" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Standardfarve for overførsel" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Indtast beløb her" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Resultat" + +#~ msgid "(Copy)" +#~ msgstr "(Kopi)" + +#, fuzzy, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "Overførsel" +#~ msgstr[1] "Overførsel" + +#, fuzzy +#~ msgid "Account Name (Exists)" +#~ msgstr "Navn (findes allerede)" + +#~ msgid "Add" +#~ msgstr "Tilføj" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Tilføj en ny overførsel eller importer overførsler fra en fil." + +#~ msgid "All files" +#~ msgstr "Alle filer" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Beløb (ugyldig)" + +#~ msgid "Apply" +#~ msgstr "Anvend" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Er du sikker på at du vil slette denne gruppe?\n" +#~ "Handlingen kan ikke fortrydes." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Er du sikker på at du vil slette overførslen?\n" +#~ "Handlingen kan ikke fortrydes." + +#~ msgid "Currency Code" +#~ msgstr "Valutakode" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Valutakode (tom)" + +#~ msgid "Date" +#~ msgstr "Dato" + +#, fuzzy +#~ msgid "Delete Existing" +#~ msgstr "Slet eksisterende" + +#~ msgid "Delete Group" +#~ msgstr "Slet gruppe" + +#~ msgid "Delete Only Source" +#~ msgstr "Slet kun udgangspunktet" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Slet udgangspunktet samt alle tilføjede" + +#~ msgid "Delete Transaction" +#~ msgstr "Slet overførsel" + +#~ msgid "Description" +#~ msgstr "Beskrivelse" + +#~ msgid "Description (Empty)" +#~ msgstr "Beskrivelse (tom)" + +#~ msgid "Destination Account" +#~ msgstr "Modtagerkonto" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Modtagerkonto (ugyldig)" + +#~ msgid "Destination Account Password" +#~ msgstr "Kodeord på destinations konto" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Kodeord på destinations konto (ugyldig)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Kodeord på destinations konto (påkrævet)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Fjern eksisterende tilknytning" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Kontoen blev eksporteret til fil uden fejl." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Genereret: {0}" + +#~ msgid "Group" +#~ msgstr "Gruppe" + +#~ msgid "Group Name" +#~ msgstr "Gruppenavn" + +#~ msgid "Id" +#~ msgstr "Id" + +#, fuzzy +#~ msgid "Import from Account" +#~ msgstr "Importer fra fil" + +#, fuzzy, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Importerede {0} overførsel fra fil." +#~ msgstr[1] "Importerede {0} overførsel fra fil." + +#~ msgid "N/A" +#~ msgstr "I/T" + +#~ msgid "Name" +#~ msgstr "Navn" + +#~ msgid "Name (Exists)" +#~ msgstr "Navn (findes allerede)" + +#~ msgid "No" +#~ msgstr "Nej" + +#~ msgid "No End Date" +#~ msgstr "Ingen slutdato" + +#~ msgid "No Transactions Found" +#~ msgstr "Ingen overførsler fundet" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Ingen overførsler ud fra de valgte filtre." + +#~ msgid "Page {0}" +#~ msgstr "Side {0}" + +#, fuzzy +#~ msgid "PDF Password" +#~ msgstr "Kodeord" + +#~ msgid "Receipt" +#~ msgstr "Kvittering" + +#~ msgid "Receipts" +#~ msgstr "Kvitteringer" + +#~ msgid "Repeat End Date" +#~ msgstr "Gentag slutdato" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Gentag sludato (ugyldig)" + +#~ msgid "Repeat Interval" +#~ msgstr "Gentag interval" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Intervallet for gentagelse er ændret" + +#, fuzzy +#~ msgid "Select Account" +#~ msgstr "Seneste kontier" + +#~ msgid "Sort By Amount" +#~ msgstr "Sorter efter beløb" + +#~ msgid "Sort By Date" +#~ msgstr "Sorter efter dato" + +#~ msgid "Sort By Id" +#~ msgstr "Sorter efter Id" + +#~ msgid "The password of the account was changed." +#~ msgstr "Kontoens kodeord blev ændret." + +#~ msgid "The password of the account was removed." +#~ msgstr "Kontoens kodeord blev fjernet." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Kodeordet bliver fjernet når du lukker denne dialog." + +#, fuzzy +#~ msgid "The passwords do not match." +#~ msgstr "Kontoens kodeord blev ændret." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Intervallet for gentagelse blev ændret.\n" +#~ "Hvad vil du gerne gøre med de eksisterende genererede overførsler?\n" +#~ "\n" +#~ "Nye gentagende overførsler vil blive genereret ud fra det nye interval." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Denne konto har ingen penge tilgængelig til overførsel." + +#, fuzzy +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Denne overførsel er en udgangspunktet for gentagende overførsel.\n" +#~ "Hvad vil du gøre med de gentagende overførsler?\n" +#~ "\n" +#~ "Ved kun at slette udgangspunktet bliver det muligt at \n" +#~ "ændre i alle individuelt tilføjede overførsler." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Denne overførsel er oprettet som en gentagende overførsel.\n" +#~ "HVad vil du gerne gøre med de gentange overførsler?\n" +#~ "\n" +#~ "Hvis du ændrer i den oprindelig overførsel, vil den \n" +#~ "fjerne tilknytningen til samtlige gentagelserne." + +#~ msgid "Transaction" +#~ msgstr "Overførsel" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Unable to export account to file." +#~ msgstr "Ude af stand til at eksportere konto til fil." + +#, fuzzy +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Tilføj en ny overførsel eller importer overførsler fra en fil." + +#, fuzzy +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Ude af stand til at overskrive en åbnet konto." + +#, fuzzy +#~ msgid "Upcoming transactions" +#~ msgstr "Ingen overførsler" + +#~ msgid "Update Only Source" +#~ msgstr "Kun opdatere kilden" + +#~ msgid "Update Source and Generated" +#~ msgstr "Opdater kilde og genereret" + +#~ msgid "Update Transaction" +#~ msgstr "Opdater overførsel" + +#~ msgid "Upload" +#~ msgstr "Upload" + +#~ msgid "View" +#~ msgstr "Visning" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "Set a new password or remove one." +#~ msgstr "Sæt nyt kodeord eller fjern kodeord." + +#, fuzzy +#~ msgid "Export Current View" +#~ msgstr "Eksporter til fil" + +#~ msgid "Search by description" +#~ msgstr "Søg efter beskrivelse" + +#~ msgid "Today's Overview" +#~ msgstr "Dagens oversigt" + +#, fuzzy +#~ msgid "Select All Overview Filters" +#~ msgstr "Nulstil oversigt filtre" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Ny gruppe (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Skift gruppers synlighed" + +#, fuzzy +#~ msgid "Select All Groups Filters" +#~ msgstr "Nulstil gruppe filtre" + +#, fuzzy +#~ msgid "Unselect Groups Filters" +#~ msgstr "Nulstil gruppe filtre" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Skift gruppers synlighed" + +#, fuzzy +#~ msgid "Select All Tags Filters" +#~ msgstr "Nulstil gruppe filtre" + +#, fuzzy +#~ msgid "Unselect Tags Filters" +#~ msgstr "Nulstil gruppe filtre" + +#~ msgid "Calendar" +#~ msgstr "Kalender" + +#~ msgid "Select Range" +#~ msgstr "Vælg rækkevidde" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Start" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Slut" + +#~ msgid "Sort From First To Last" +#~ msgstr "Sorter fra første til sidste" + +#~ msgid "Sort From Last To First" +#~ msgstr "Sorter fra sidste til første" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Ny overførsel (Ctrl+Shift+N)" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Ny" + +#, fuzzy +#~ msgid "All Accounts" +#~ msgstr "Konto" + +#~ msgid "Color" +#~ msgstr "Farve" + +#~ msgid "Delete" +#~ msgstr "Slet" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "Dette er kun en brugbar label som ikke påvirker programmet." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Indtast kodeord for at logge ind:" + +#~ msgid "Checking Account Color" +#~ msgstr "Indkomstkonto farve" + +#~ msgid "Savings Account Color" +#~ msgstr "Opsparingskonto farve" + +#~ msgid "Business Account Color" +#~ msgstr "Virksomhedskonto farve" + +#, fuzzy +#~ msgid "Backup" +#~ msgstr "Tilbage" + +#, fuzzy +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Overførsel" + +#~ msgid "New Transaction" +#~ msgstr "Ny overførsel" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Skift sidebjælke" + +#~ msgid "Make a Copy" +#~ msgstr "Lav en kopi" + +#~ msgid "Clear End Date" +#~ msgstr "Ryd slutdato" + +#~ msgid "Daily" +#~ msgstr "Daglig" + +#~ msgid "Weekly" +#~ msgstr "Ugentlig" + +#~ msgid "Biweekly" +#~ msgstr "Hver anden uge" + +#~ msgid "Monthly" +#~ msgstr "Månedlig" + +#~ msgid "Quarterly" +#~ msgstr "Kvartalsvis" + +#~ msgid "Yearly" +#~ msgstr "Årlig" + +#~ msgid "Biyearly" +#~ msgstr "Hvert andet år" + +#~ msgid "Edit Transaction" +#~ msgstr "Ret overførsel" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Overførsel af penge til lave en udgifts-overførsel med det givne beløb på " +#~ "denne konto og en indkomst-overførsel med det givne beløb på den konto " +#~ "der overføres til." + +#~ msgid "Select a destination account" +#~ msgstr "Vælg en modtagerkonto" + +#~ msgid "Recent Accounts" +#~ msgstr "Seneste kontier" + +#~ msgid "Conversion Needed" +#~ msgstr "Omregning krævet" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "Brug tilpasset valuta" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Indtast omregning her" + +#, fuzzy +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Overførsel" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Ny" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Resultat" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "penge;finans;pung;kontanter;bank;GTK;Nickvision;" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Tilpas programmets brugerflade." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Tilpas hvordan Denaro bruger lokale indstillinger." + +#, fuzzy +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Tilpas programmets brugerflade." + +#~ msgid "Save" +#~ msgstr "Gem" + +#~ msgid "Hide" +#~ msgstr "Skjul" + +#~ msgid "Show" +#~ msgstr "Vis" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Nulstil dato filtre" + +#~ msgid "Delete Group?" +#~ msgstr "Slet gruppe?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Slet overførsel?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Konto indstillinger" + +#~ msgid "Version: {0}" +#~ msgstr "Version: {0}" + +#~ msgid "About {0}" +#~ msgstr "Om {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Bidragydere på GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "David Lapshin https://github.com/daudix-UFO" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Oversættere på Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Overfør penge (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importer fra fil (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtre" + +#~ msgid "Hide Groups" +#~ msgstr "Skjul grupper" + +#~ msgid "Show Groups" +#~ msgstr "Vis grupper" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Importerede {0} overførsler fra fil." + +#~ msgid "Enter description here" +#~ msgstr "Indtast beskrivelse her" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Administrer din privatøkonomi" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Penge konto (*.nmoney)" + +#~ msgid "New Window" +#~ msgstr "Nyt vindue" diff --git a/resources/po/de.po b/resources/po/de.po new file mode 100644 index 000000000..e300d56a2 --- /dev/null +++ b/resources/po/de.po @@ -0,0 +1,1959 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-08-29 18:53+0000\n" +"Last-Translator: Ettore Atalan \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Ungruppiert" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Überweisungen ohne Gruppe" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Zu {0} Überweisen" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Von {0} Überweisen" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} von {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Morgen" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "In einer Woche ab jetzt" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "In einem Monat ab jetzt" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "In zwei Monaten" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "In zwei Monaten" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Dein System meldete deine Währung sei" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" +"Anmeldung zum Konto nicht möglich. Das angegebene Kennwort ist ungültig." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Verwalte deine persönlichen Finanzen" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix-Chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Beitragende auf Github ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Jummit" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Guten Morgen!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Guten Morgen!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Guten Nachmittag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Guten Abend!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Schönen Tag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Dieses Konto ist schon geöffnet." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Dieses Konto ist schon geöffnet." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Dieses Konto ist schon geöffnet." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Von Datei importieren" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Zu Datei exportieren" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Zu Datei exportieren" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Übersicht" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Geld Überweisen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Konto-Einstellungen" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Einstellungen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Insgesamt" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Einkommen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Ausgaben" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Erinnerungen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Gruppen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Neue Gruppe" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Neu" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Überweisungen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Veranschaulichen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Weiter" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Kontoname" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Kontotyp" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Girokonto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Sparkonto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Geschäftskonto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Standard-Transaktionsart" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Schwellenwert für Überweisungserinnerungen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nie" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Einen Tag vorher" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Eine Woche vorher" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Einen Monat vorher" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Zwei Monate vorher" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Währung" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Eigene Währung Benutzen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Dezimaltrennzeichen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Gruppentrennzeichen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Keine" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Dezimalziffern" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Zwei" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Drei" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Vier" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Fünf" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Sechs" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Währungszeichen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Passwort" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" +"Wenn das Passwort verloren geht, gibt es keine Möglichkeit, die Datei " +"wiederherzustellen!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Neues Passwort" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Passwort bestätigen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Passwort ändern" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Währungen wechseln" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Wechseln" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Quelle" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Ergebnis" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Betrag" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Ergebnisbetrag kopieren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Zurück" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Neues Konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Nutzen Sie diesen Assistenten, um Ihr Konto optimal zu nutzen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Los geht's" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Speicherort" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Kontopasswort (optional)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Ordner" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Ordner auswählen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Bestehende Kontos überschreiben" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Kontooptionen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Kontowährung" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Bestehende Informationen importieren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Laden Sie eine gültige Datei hoch, mit der Sie bestehende Informationen in " +"das neue Konto importieren können." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Datei importieren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Datei auswählen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Datei leeren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Erstellen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Einstellungen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Tastaturkürzel" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Hilfe" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Über Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Konto-Menü" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Kürzliche" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Neues Konto (Strg+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Konto öffnen (Strg+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Öffnen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Keine kürzlichen Konten" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Entfernen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Hauptmenü" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Startseite" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Währungsumrechner" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Konten" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Übersicht" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Erstelle oder öffne ein Konto um loszulegen. Dateien können auch vom Datei-" +"Manager in das Programm gezogen werden." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Kontotyp" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Nutzeroberfläche" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Thema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Hell" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Dunkel" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "System" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Farben" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Passe die Farben an die Denaro verwendet." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Standardfarbe für Überweisungen" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Eine Änderung zu dieser Einstellung wird nur für neue Überweisungen " +"verwendet." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Standard-Transferfarbe" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Eine Änderung zu dieser Einstellung wird nur für neue Überweisungen " +"verwendet." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Standardfarbe der Gruppe" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Eine Änderung dieser Einstellung wird nur auf neue Gruppen angewendet." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Sprache" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Dezimaltrennzeichen einfügen" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Stelle ein bei welchen Gedrückten Tasten das Dezimaltrennzeichen der " +"Sprachumgebung in das Mengenfeld eingefügt wird." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Aus" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Nur Ziffernblock-Punkt" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Punkt und Komma" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Konto öffnen" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Programm" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Programm" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Beenden" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Fehler" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Währungsdaten können nicht geladen werden. Bitte versuchen Sie es erneut. " +"Wenn der Fehler weiterhin auftritt, melden Sie einen Fehler." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Schließen" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Ergebnis wurde in die Zwischenablage kopiert." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Passwortstärke" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Passwort ändern" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Passwortstärke" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Keine Überweisungen" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Gruppe Editieren" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Datei importieren" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub-Repo" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro-Konto" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Passwort hier eingeben" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Abbrechen" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Entsperren" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Speicherort" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Gebe hier den Namen ein" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Öffnen" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Aktionen" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Sparkonto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Zeichen hier eingeben" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Code hier eingeben" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Betrag" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Datei importieren" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Kein Konto Ausgewählt" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Kontoname (Eröffnet)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Währungszeichen (leer)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Name (Leer)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Dezimaltrennzeichen (leer)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Dezimaltrennzeichen (ungültig)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Gruppentrennzeichen (ungültig)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Währungszeichen (ungültig)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Alle Informationen exportieren" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Änderungen" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Einen Fehler melden" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Diskussionen" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Anerkennungen" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Erstelle oder öffne ein Konto um loszulegen. Dateien können auch vom Datei-" +"Manager in das Programm gezogen werden." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Eröffnetes Konto konnte nicht überschrieben werden." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Ergebnis wurde in die Zwischenablage kopiert." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Konto Schließen" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Standard-Transaktionsart" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Standard-Transferfarbe" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Standardfarbe der Gruppe" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Gebe hier den Betrag ein" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Ergebnis" + +#~ msgid "(Copy)" +#~ msgstr "(Kopie)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} Tag" +#~ msgstr[1] "{0} Tags" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} Überweisung" +#~ msgstr[1] "{0} Überweisungen" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Kontoname (Existiert)" + +#~ msgid "Add" +#~ msgstr "Hinzufügen" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "" +#~ "Füge eine neue Überweisung hinzu oder importiere eine von einer Datei." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Passwort zur PDF hinzufügen?" + +#~ msgid "All files" +#~ msgstr "Alle dateien" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Betrag (Ungültig)" + +#~ msgid "Apply" +#~ msgstr "Anwenden" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Möchtest du diese Gruppe wirklich löschen?\n" +#~ "Diese Aktion kann nicht rückgängig gemacht werden." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Möchtest du diese Überweisung wirklich löschen?\n" +#~ "Diese Aktion kann nicht rückgängig gemacht werden." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Kann auf den ausgewählten Ordner nicht zugreifen, prüfe Flatpack-Rechte." + +#~ msgid "Currency Code" +#~ msgstr "Währungs-Code" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Währungs-Code (Leer)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Datum" + +#~ msgid "Delete Existing" +#~ msgstr "Bestehende Löschen" + +#~ msgid "Delete Group" +#~ msgstr "Gruppe Löschen" + +#~ msgid "Delete Only Source" +#~ msgstr "Nur Ursprung Löschen" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Ursprung und Generierte Löschen" + +#~ msgid "Delete Transaction" +#~ msgstr "Überweisung Löschen" + +#~ msgid "Description" +#~ msgstr "Beschreibung" + +#~ msgid "Description (Empty)" +#~ msgstr "Beschreibung (Leer)" + +#~ msgid "Destination Account" +#~ msgstr "Zielkonto" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Zielkonto (Ungültig)" + +#~ msgid "Destination Account Password" +#~ msgstr "Zielkonto-Passwort" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Passwort des Zielkontos (ungültig)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Passwort für das Zielkonto (erforderlich)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Bestehende Trennen" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Konto erfolgreich zu Datei exportiert." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Generiert: {0}" + +#~ msgid "Group" +#~ msgstr "Gruppe" + +#~ msgid "Group Name" +#~ msgstr "Gruppenname" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Aus Konto importieren" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} Überweisung aus Datei importiert." +#~ msgstr[1] "{0} Überweisungen aus Datei importiert." + +#~ msgid "N/A" +#~ msgstr "Entfällt" + +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgid "Name (Exists)" +#~ msgstr "Name (Existiert)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Nein" + +#~ msgid "No End Date" +#~ msgstr "Kein End-Datum" + +#~ msgid "No Transactions Found" +#~ msgstr "Keine Überweisungen Gefunden" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Keine Überweisung entsprechen den angegebenen Filtern." + +#~ msgid "Notes" +#~ msgstr "Notizen" + +#~ msgid "Page {0}" +#~ msgstr "Seite {0}" + +#~ msgid "PDF Password" +#~ msgstr "PDF-Passwort" + +#~ msgid "Receipt" +#~ msgstr "Beleg" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Beleg (Datei unzugänglich)" + +#~ msgid "Receipts" +#~ msgstr "Beleg" + +#~ msgid "Repeat End Date" +#~ msgstr "Wiederholungs-Ende" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Wiederholungs-Ende (Ungültig)" + +#~ msgid "Repeat Interval" +#~ msgstr "Wiederholungs-Intervall" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Wiederholungs-Intervall Wurde Geändert" + +#~ msgid "Select Account" +#~ msgstr "Konto auswählen" + +#~ msgid "Select Backup Folder" +#~ msgstr "Sicherungsordner auswählen" + +#~ msgid "Sort By Amount" +#~ msgstr "Nach Menge sortieren" + +#~ msgid "Sort By Date" +#~ msgstr "Nach Datum sortieren" + +#~ msgid "Sort By Id" +#~ msgstr "Nach ID sortieren" + +#~ msgid "Tags" +#~ msgstr "Tags" + +#~ msgid "The password of the account was changed." +#~ msgstr "Das Passwort des Kontos wurde geändert." + +#~ msgid "The password of the account was removed." +#~ msgstr "Das Passwort des Kontos wurde entfernt." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "" +#~ "Das Passwort wird nach dem Schließen dieses Dialogs entfernt werden." + +#~ msgid "The passwords do not match." +#~ msgstr "Die Passwörter stimmen nicht überein." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Das Wiederholungs-Intervall wurde geändert.\n" +#~ "Was möchtest du mit bestehenden generierten Überweisungen machen?\n" +#~ "\n" +#~ "Neue wiederholte Überweisungen werden basierend auf dem neuen Intervall " +#~ "generiert." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Dieses Konto hat kein Geld zum überweisen mehr." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Diese Überweisung ist eine wiederholte Überweisung.\n" +#~ "Was möchtest du mit wiederholten Überweisungen machen?\n" +#~ "\n" +#~ "Nur die Ursprungs-Überweisung zu löschen macht es möglich\n" +#~ "die generierten Überweisungen zu modifizieren." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Diese Überweisung ist eine wiederholte Überweisung.\n" +#~ "Was möchtest du mit wiederholten Überweisungen machen?\n" +#~ "\n" +#~ "Nur die Ursprungs-Überweisung zu aktualisieren wird die\n" +#~ "generierten Überweisungen unabhängig machen." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Überweisung" + +#~ msgid "Type" +#~ msgstr "Art" + +#~ msgid "Unable to export account to file." +#~ msgstr "Konto konnte nicht zu Datei exportiert werden." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Die Informationen aus der Datei können nicht importiert werden. Bitte " +#~ "stellen Sie sicher, dass die App die Berechtigungen für den Zugriff auf " +#~ "die Datei hat und versuchen Sie es erneut." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Es können keine Überweisungen aus der Datei importiert werden." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Das Konto kann nicht eröffnet werden. Bitte stellen Sie sicher, dass die " +#~ "App die Berechtigungen für den Zugriff auf die Datei hat und versuchen " +#~ "Sie es erneut." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Bestehendes Konto konnte nicht überschrieben werden." + +#~ msgid "Untagged" +#~ msgstr "Nicht gekennzeichnet" + +#~ msgid "Upcoming transactions" +#~ msgstr "Bevorstehende Überweisungen" + +#~ msgid "Update Only Source" +#~ msgstr "Nur Ursprung Aktualisieren" + +#~ msgid "Update Source and Generated" +#~ msgstr "Ursprung und Generierte Aktualisieren" + +#~ msgid "Update Transaction" +#~ msgstr "Überweisung Aktualisieren" + +#~ msgid "Upload" +#~ msgstr "Hochladen" + +#~ msgid "View" +#~ msgstr "Ansehen" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Möchten Sie die PDF-Datei mit einem Passwort schützen?\n" +#~ "\n" +#~ "Wenn das Passwort verloren geht, ist die PDF-Datei unzugänglich." + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Die vom Konto verwendete Währung verwalten." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Legen Sie ein neues Passwort fest oder entfernen Sie eines." + +#~ msgid "Other" +#~ msgstr "Andere" + +#~ msgid "Unlimited" +#~ msgstr "Unbegrenzt" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Aktuelle Ansicht exportieren" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Nach Beschreibung suchen" + +#~ msgid "Today's Overview" +#~ msgstr "Heutige Übersicht" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Alle Übersichtsfilter auswählen" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Neue Gruppe (Strg+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Gruppen-Sichtbarkeit Umschalten" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Alle Gruppenfilter auswählen" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Gruppenfilter abwählen" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Tag-Sichtbarkeit Umschalten" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Alle Tagfilter auswählen" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Tagfilter abwählen" + +#~ msgid "Calendar" +#~ msgstr "Kalender" + +#~ msgid "Select Current Month" +#~ msgstr "Jetzigen Monat auswählen" + +#~ msgid "Reset To Today" +#~ msgstr "Für heute zurücksetzen" + +#~ msgid "Today" +#~ msgstr "Heute" + +#~ msgid "Select Range" +#~ msgstr "Wähle Zeitspanne Aus" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Beginn" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Ende" + +#~ msgid "Sort From First To Last" +#~ msgstr "Sortiere Vom Ersten Zum Letzten" + +#~ msgid "Sort From Last To First" +#~ msgstr "Sortiere Vom Letzten Zum Ersten" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Neue Überweisung (Strg+Umschalt+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Neu" + +#~ msgid "Suggestions" +#~ msgstr "Vorschläge" + +#~ msgid "Converter" +#~ msgstr "Umrechner" + +#~ msgid "Loading..." +#~ msgstr "Wird geladen..." + +#~ msgid "All Accounts" +#~ msgstr "Alle Konten" + +#~ msgid "Color" +#~ msgstr "Farbe" + +#~ msgid "Delete" +#~ msgstr "Löschen" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Dies ist nur eine nützliche Bezeichnung die nicht beeinflusst wie das " +#~ "Programm funktioniert." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Passwort zum Anmelden eingeben:" + +#~ msgid "Checking Account Color" +#~ msgstr "Girokonto-Farbe" + +#~ msgid "Savings Account Color" +#~ msgstr "Sparkonto-Farbe" + +#~ msgid "Business Account Color" +#~ msgstr "Geschäftskontofarbe" + +#~ msgid "Use Native Digits" +#~ msgstr "Native Ziffern verwenden" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Ob Sie anstelle von lateinischen Ziffern die für Ihre Sprachumgebung " +#~ "typischen Ziffern verwenden wollen." + +#~ msgid "Backup" +#~ msgstr "Sicherung" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV-Sicherungsordner" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Unverschlüsselte Konten werden automatisch als CSV-Dateien in diesen " +#~ "Ordner exportiert wenn eine Änderung gemacht wird." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Setze Sicherungs-Ordner zurück" + +#~ msgid "No Reminders" +#~ msgstr "Keine Erinnerungen" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Überweisen" + +#~ msgid "New Transaction" +#~ msgstr "Neue Überweisung" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Seitenleiste Umschalten" + +#~ msgid "Make a Copy" +#~ msgstr "Eine Kopie erstellen" + +#~ msgid "Clear End Date" +#~ msgstr "End-Datum Zurücksetzen" + +#~ msgid "Daily" +#~ msgstr "Täglich" + +#~ msgid "Weekly" +#~ msgstr "Wöchentlich" + +#~ msgid "Biweekly" +#~ msgstr "Zweiwöchentlich" + +#~ msgid "Monthly" +#~ msgstr "Monatlich" + +#~ msgid "Quarterly" +#~ msgstr "Vierteljährlich" + +#~ msgid "Yearly" +#~ msgstr "Jährlich" + +#~ msgid "Biyearly" +#~ msgstr "Zweijährlich" + +#~ msgid "Use group color" +#~ msgstr "Gruppenfarbe verwenden" + +#~ msgid "Use unique color" +#~ msgstr "Einzigartige Farbe verwenden" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Geben Sie einen neuen Schlagwortnamen ein..." + +#~ msgid "Add Tag" +#~ msgstr "Tag hinzufügen" + +#~ msgid "Extras" +#~ msgstr "Extras" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Verwalte Extra-Felder der Transaktion." + +#~ msgid "Enter notes here" +#~ msgstr "Notizen hier eingeben" + +#~ msgid "Edit Transaction" +#~ msgstr "Überweisung Editieren" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Geld zu überweisen wird eine Ausgabe-Überweisung mit dem angegebenen " +#~ "Betrag in diesem Konto und eine Einkommen-Überweisung mit dem gegebenen " +#~ "Betrag in dem angegeben Konto erstellen." + +#~ msgid "Select a destination account" +#~ msgstr "Wähle ein Zielkonto aus" + +#~ msgid "Recent Accounts" +#~ msgstr "Kürzliche Konten" + +#~ msgid "Conversion Needed" +#~ msgstr "Umwechslung Benötigt" + +#~ msgid "Use Custom Rates" +#~ msgstr "Benutzerdefinierte Kurse verwenden" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Geben Sie die Umrechnungskurse manuell ein" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Überweisen" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Neu" + +#~ msgid "Toggle Graphs" +#~ msgstr "Diagramm umschalten" + +#~ msgid "result" +#~ msgstr "Ergebnis" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "Geld;Finanzen;Brieftasche;Bargeld;Bank;Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Mehrere Konten gleichzeitig verwalten, mit einer vertrauten " +#~ "Registerkartenoberfläche" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— Transaktionen einfach nach Typ, Gruppe oder Datum filtern" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Einfaches Wiederholen von Überweisungen, beispielsweise von Rechnungen, " +#~ "die jeden Monat anfallen" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Geld von einem Konto auf ein anderes überweisen" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Ein Konto als CSV-Datei exportieren und eine CSV-, OFX- oder QIF-Datei " +#~ "importieren, um einem Konto massenhaft Überweisungen hinzuzufügen" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "Bitte warten Sie, während Transaktionen importiert werden..." + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Die Informationen aus der Datei können nicht importiert werden. Nicht " +#~ "unterstützter Dateityp." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Passe die Nutzeroberfläche des Programms an." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Passe an wie Denaro Spracheinstellungen verwendet." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Passe den Sicherungsort der Denaro-Konten an." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Anderes" + +#~ msgid "Save" +#~ msgstr "Speichern" + +#~ msgid "Hide" +#~ msgstr "Ausblenden" + +#~ msgid "Show" +#~ msgstr "Zeigen" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Datum-Filter Zurücksetzen" + +#~ msgid "Delete Group?" +#~ msgstr "Gruppe Löschen?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Überweisung Löschen?" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "- Ein Problem behoben, bei dem Denaro auf Systemen mit nicht " +#~ "konfigurierten Gebietsschemata abstürzte" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "" +#~ "- Ein Problem behoben, bei dem der PDF-Export für Konten mit vielen " +#~ "Belegen fehlschlug" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "" +#~ "- Ein Problem behoben, bei dem der Filter einer Gruppe reaktiviert wurde, " +#~ "wenn eine Überweisung zu dieser Gruppe hinzugefügt wurde" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "- Fehlermeldungen werden angezeigt, wenn Denaro versucht, auf " +#~ "unzugängliche Dateien zuzugreifen, anstatt abzustürzen" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "- Aktualisierte Übersetzungen (Dank an alle auf Weblate)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Konto-Einstellungen" + +#~ msgid "Version: {0}" +#~ msgstr "Version: {0}" + +#~ msgid "About {0}" +#~ msgstr "Über {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Beitragende auf GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Übersetzer auf Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Geld Überweisen (Strg+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Von Datei importieren (Strg+I)" + +#~ msgid "Filters" +#~ msgstr "Filter" + +#~ msgid "Hide Groups" +#~ msgstr "Gruppen Ausblenden" + +#~ msgid "Show Groups" +#~ msgstr "Gruppen Zeigen" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "{0} Überweisungen von Datei importiert." + +#~ msgid "Enter description here" +#~ msgstr "Gebe hier die Beschreibung ein" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Money-Konto (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "- Verwalte mehrere Konten gleichzeitig, mit einer bekannten " +#~ "Registerkartenoberfläche\n" +#~ "- Einfaches Filtern von Transaktionen nach Typ, Gruppe oder Datum\n" +#~ "- Einfaches Wiederholen von Transaktionen, z. B. von Rechnungen, die " +#~ "jeden Monat anfallen\n" +#~ "- Geld von einem Konto auf ein anderes übertragen\n" +#~ "- Exportiere ein Konto als CSV-Datei und importieren Sie eine CSV-, OFX- " +#~ "oder QIF-Datei, um einem Konto massenhaft Transaktionen hinzuzufügen" + +#~ msgid "New Window" +#~ msgstr "Neues Fenster" + +#~ msgid "Enter decimal separator" +#~ msgstr "Dezimaltrennzeichen eingeben" + +#~ msgid "Enter group separator" +#~ msgstr "Gruppentrennzeichen eingeben" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transaktion {0}" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transaktionen ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Kein Sicherungs-Ordner" + +#~ msgid "Reset All Filters" +#~ msgstr "All Filter Zurücksetzen" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Kontoeinstellungen (Strg+.)" + +#~ msgid "Sort" +#~ msgstr "Sortieren" + +#~ msgid "Order By" +#~ msgstr "Sortieren Nach" + +#~ msgid "Increasing" +#~ msgstr "Steigend" + +#~ msgid "Decreasing" +#~ msgstr "Abnehmend" + +#~ msgid "Sort By" +#~ msgstr "Sortieren Nach" diff --git a/resources/po/denaro.pot b/resources/po/denaro.pot new file mode 100644 index 000000000..38c630903 --- /dev/null +++ b/resources/po/denaro.pot @@ -0,0 +1,1080 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "" + +#: libdenaro/src/models/account.cpp:495 +#, c++-format +msgid "Transfer to {}" +msgstr "" + +#: libdenaro/src/models/account.cpp:512 +#, c++-format +msgid "Transfer from {}" +msgstr "" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +msgid "This account already exists." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +msgid "This account cannot be overwritten." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +msgid "The account is already open." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +msgid "Export to CSV" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +msgid "Export to PDF" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +msgid "New" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +msgid "$ is the currency's symbol." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +msgid "Account Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +msgid "No Accounts Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +msgid "Off" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +msgctxt "Shortcut" +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +msgctxt "Shortcut" +msgid "Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +msgid "About Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +msgid "Unable to change password" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +msgid "No Transaction Reminders" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +msgid "Select Import File" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +msgid "On" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +msgid "Options" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +msgid "Saving" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +msgid "Amount Style" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +msgid "No File Selected" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +msgid "Account Name (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +msgid "Symbol (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +msgid "Code (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +msgid "Symbol (Invalid)" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +msgid "Unlock Account" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +msgid "Default Transaction Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +msgid "Default Transfer Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +msgid "Default Group Color" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" diff --git a/resources/po/es.po b/resources/po/es.po new file mode 100644 index 000000000..5eb872066 --- /dev/null +++ b/resources/po/es.po @@ -0,0 +1,1960 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-12-29 06:12+0000\n" +"Last-Translator: Óscar Fernández Díaz \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Sin agrupar" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transacciones sin grupo" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transferir a {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transferir desde {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} de {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Mañana" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Dentro de una semana" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Dentro de un mes" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Dentro de dos meses" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Dentro de dos meses" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Su sistema informó de que su moneda es" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" +"No se puede acceder a la cuenta. La contraseña proporcionada no es válida." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Administre sus finanzas personales" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Chat de Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Contribuidores en GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Óscar Fernández Díaz " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "¡Buenos días!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "¡Buenos días!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "¡Buenas tardes!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "¡Buenas noches!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "¡Buen día!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Esta cuenta ya está abierta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Esta cuenta ya está abierta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Esta cuenta ya está abierta." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importar desde archivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportar a archivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportar a archivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Resumen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Transferir dinero" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Configuración de la cuenta" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Configuración" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Ingresos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Gastos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Recordatorios" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Grupo nuevo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nuevo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transacciones" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Visualizar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Siguiente" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Cuenta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nombre de cuenta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipo de cuenta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Corriente" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Ahorros" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Empresa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tipo de transacción predeterminado" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Umbral de recordatorios de las transacciones" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nunca" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Un día antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Una semana antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Un mes antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Dos meses antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Moneda" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Usar moneda personalizada" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separador de decimales" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separador de grupos" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Ninguno" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Dígitos decimales" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Dos" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Tres" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Cuatro" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Cinco" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Seis" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Estilo de visualización de la cantidad" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Símbolo de moneda" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Contraseña" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Si se pierde la contraseña, ¡no hay forma de restaurar el archivo!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nueva contraseña" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Confirmar contraseña" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Cambiar contraseña" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Cambiar de divisa" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Cambiar" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Fuente" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Resultado" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Importe" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Copiar el resultado del importe" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Volver" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Cuenta nueva" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Use este asistente para sacar el máximo partido a su cuenta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Comencemos" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Ubicación de almacenamiento" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Contraseña de la cuenta (opcional)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Carpeta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Seleccionar carpeta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Sobrescribir cuentas existentes" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Opciones de cuenta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Divisa de la cuenta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importar información existente" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Cargue un archivo válido para importar la información existente en la cuenta " +"nueva." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Importar archivo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Seleccionar archivo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Limpiar archivo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Crear" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Preferencias" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Atajos del teclado" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Ayuda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Acerca de Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menú de la cuenta" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Recientes" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Cuenta nueva (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Abrir cuenta (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Abrir" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Sin cuentas recientes" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Eliminar" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menú principal" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Inicio" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Conversor de divisas" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Cuentas" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Panel" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Cree o abra una cuenta para empezar. También puede arrastrar un archivo a la " +"aplicación desde el explorador de archivos." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipo de cuenta" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interfaz de usuario" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Claro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Oscuro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Sistema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Colores" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Personalice los colores usados por Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Color de transacción predeterminado" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Un cambio en esta configuración sólo se aplicará a las transacciones recién " +"añadidas." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Color predeterminado de la transferencia" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Un cambio en esta configuración sólo se aplicará a las transferencias nuevas." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Color predeterminado del grupo" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Un cambio en esta configuración sólo se aplicará a los grupos nuevos." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Localización" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Insertar separador decimal" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Establecer para qué teclas pulsadas se insertará el separador decimal de la " +"configuración regional en un campo de importe." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Fuera" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Punto final" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Punto y coma" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Cuenta" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Abrir cuenta" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplicación" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplicación" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Salir" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Error" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"No se han podido cargar los datos de la divisa. Por favor, vuelva a " +"intentarlo. Si el error persiste, notifique un error." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Cerrar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Resultado copiado al portapapeles." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Fortaleza de la contraseña" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Cambiar contraseña" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Fortaleza de la contraseña" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Sin transacciones" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Editar grupo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importar archivo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repositorio de GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Cuenta Denaro de Nickvision" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Introduzca aquí la contraseña" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Cancelar" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Desbloquear" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Ubicación de almacenamiento" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Introduzca aquí el nombre" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Abrir" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Acciones" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Ahorros" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Introduzca aquí el símbolo" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Introduzca aquí el código" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Estilo de visualización de la cantidad" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importar archivo" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Ninguna cuenta seleccionada" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nombre de la cuenta (abierta)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Símbolo de moneda (vacío)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nombre (vacío)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separador de decimal (vacío)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separador de decimal (No válido )" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separador de grupos (no válido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Símbolo de la moneda (no válido)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Exportar toda la información" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Registro de cambios" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Informar de un error" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Debates" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Créditos" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Cree o abra una cuenta para empezar. También puede arrastrar un archivo a la " +"aplicación desde el explorador de archivos." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "No se puede sobrescribir una cuenta abierta." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Resultado copiado al portapapeles." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Cerrar cuenta" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tipo de transacción predeterminado" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Color predeterminado de la transferencia" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Color predeterminado del grupo" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Introduzca aquí el importe" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "Aceptar" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Resultado" + +#~ msgid "(Copy)" +#~ msgstr "(Copia)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} etiqueta" +#~ msgstr[1] "{0} etiquetas" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transacción" +#~ msgstr[1] "{0} transacciones" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Nombre de la cuenta (existente)" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "" +#~ "Añadir una transacción nueva o importar transacciones desde un archivo." + +#~ msgid "Add Password To PDF?" +#~ msgstr "¿Añadir contraseña a un PDF?" + +#~ msgid "All files" +#~ msgstr "Todos los archivos" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Importe (no válido)" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "¿Está seguro de que desea borrar este grupo?\n" +#~ "Esta acción es irreversible." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "¿Está seguro de que desea borrar esta transacción?\n" +#~ "Esta acción es irreversible." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "No se puede acceder a la carpeta seleccionada, compruebe los permisos de " +#~ "Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Código de moneda" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Código de la divisa (vacío)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Fecha" + +#~ msgid "Delete Existing" +#~ msgstr "Borrar existente" + +#~ msgid "Delete Group" +#~ msgstr "Borrar grupo" + +#~ msgid "Delete Only Source" +#~ msgstr "Borrar solo origen" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Borrar origen y generadas" + +#~ msgid "Delete Transaction" +#~ msgstr "Borrar transacción" + +#~ msgid "Description" +#~ msgstr "Descripción" + +#~ msgid "Description (Empty)" +#~ msgstr "Descripción (vacía)" + +#~ msgid "Destination Account" +#~ msgstr "Cuenta de destino" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Cuenta de destino (no válida)" + +#~ msgid "Destination Account Password" +#~ msgstr "Contraseña de la cuenta de destino" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Contraseña de la cuenta de destino (no válida)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Contraseña de la cuenta de destino (requerida)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Disociar existente" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Cuenta exportada a archivo correctamente." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Generado: {0}" + +#~ msgid "Group" +#~ msgstr "Grupo" + +#~ msgid "Group Name" +#~ msgstr "Nombre del grupo" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Import from Account" +#~ msgstr "Importar desde cuenta" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Importada {0} transacción del archivo." +#~ msgstr[1] "Importadas {0} transacciones del archivo." + +#~ msgid "N/A" +#~ msgstr "N/D" + +#~ msgid "Name" +#~ msgstr "Nombre" + +#~ msgid "Name (Exists)" +#~ msgstr "Nombre (existente)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "No End Date" +#~ msgstr "Sin fecha final" + +#~ msgid "No Transactions Found" +#~ msgstr "No se han encontrado transacciones" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Ninguna transacción coincide con los filtros especificados." + +#~ msgid "Notes" +#~ msgstr "Notas" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nada que importar del archivo." + +#~ msgid "Page {0}" +#~ msgstr "Página {0}" + +#~ msgid "PDF Password" +#~ msgstr "Contraseña del PDF" + +#~ msgid "Receipt" +#~ msgstr "Recibo" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Recibo (Archivo inaccesible)" + +#~ msgid "Receipts" +#~ msgstr "Recibos" + +#~ msgid "Repeat End Date" +#~ msgstr "Repetir fecha final" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Repetir fecha final (no válida)" + +#~ msgid "Repeat Interval" +#~ msgstr "Intervalo de repetición" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Intervalo de repetición modificado" + +#~ msgid "Select Account" +#~ msgstr "Seleccionar cuenta" + +#~ msgid "Select Backup Folder" +#~ msgstr "Seleccione la carpeta de copia de seguridad" + +#~ msgid "Sort By Amount" +#~ msgstr "Ordenar por cantidad" + +#~ msgid "Sort By Date" +#~ msgstr "Ordenar por fecha" + +#~ msgid "Sort By Id" +#~ msgstr "Ordenar por id" + +#~ msgid "Tags" +#~ msgstr "Etiquetas" + +#~ msgid "The password of the account was changed." +#~ msgstr "La contraseña de la cuenta ha sido cambiada." + +#~ msgid "The password of the account was removed." +#~ msgstr "La contraseña de la cuenta ha sido eliminada." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "La contraseña se eliminará al cerrar este diálogo." + +#~ msgid "The passwords do not match." +#~ msgstr "Las contraseñas no concuerdan." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Se ha modificado el intervalo de repetición.\n" +#~ "¿Qué desea hacer con las transacciones generadas existentes?\n" +#~ "\n" +#~ "Se generarán nuevas transacciones de repetición basadas en el nuevo " +#~ "intervalo." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Esta cuenta no tiene dinero disponible para transferir." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Esta transacción es una transacción repetida en origen.\n" +#~ "¿Qué desea hacer con las transacciones repetidas?\n" +#~ "\n" +#~ "Borrando sólo la transacción de origen permitirá que las\n" +#~ "transacciones generadas sean modificables." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Esta transacción es una transacción repetida en origen.\n" +#~ "¿Qué desea hacer con las transacciones repetidas?\n" +#~ "\n" +#~ "Al actualizar sólo la transacción de origen se disociarán\n" +#~ "las transacciones generadas en origen." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transacción" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Unable to export account to file." +#~ msgstr "No se puede exportar la cuenta a un archivo." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "No se ha podido importar la información del archivo. Asegúrese de que la " +#~ "aplicación tiene permisos para acceder al archivo e inténtelo de nuevo." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "No se pueden importar las transacciones del archivo." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "No se ha podido abrir la cuenta. Asegúrese de que la aplicación tiene los " +#~ "permisos para acceder al archivo e inténtelo de nuevo." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "No se puede sobrescribir una cuenta existente." + +#~ msgid "Untagged" +#~ msgstr "Sin etiqueta" + +#~ msgid "Upcoming transactions" +#~ msgstr "Próximas transacciones" + +#~ msgid "Update Only Source" +#~ msgstr "Actualizar solo origen" + +#~ msgid "Update Source and Generated" +#~ msgstr "Actualizar origen y generadas" + +#~ msgid "Update Transaction" +#~ msgstr "Actualizar transacción" + +#~ msgid "Upload" +#~ msgstr "Cargar" + +#~ msgid "View" +#~ msgstr "Ver" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "¿Desea proteger el archivo PDF con una contraseña?\n" +#~ "\n" +#~ "Si pierde la contraseña, el PDF será inaccesible." + +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Gestionar la moneda utilizada por la cuenta." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Establecer una nueva contraseña o eliminar una." + +#~ msgid "Other" +#~ msgstr "Otro" + +#~ msgid "Unlimited" +#~ msgstr "Sin límites" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Exportar vista actual" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Buscar por las descripciones" + +#~ msgid "Today's Overview" +#~ msgstr "Resumen de hoy" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Seleccionar todos los filtros del resumen" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Grupo nuevo (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Conmutar visibilidad de grupos" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Seleccionar todos los grupos de Filtros" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Desmarcar los filtros de los grupos" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Conmutar la visibilidad de las etiquetas" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Seleccionar todas los filtros para las etiquetas" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Deseleccionar los filtros para las etiquetas" + +#~ msgid "Calendar" +#~ msgstr "Calendario" + +#~ msgid "Select Current Month" +#~ msgstr "Seleccionar mes actual" + +#~ msgid "Reset To Today" +#~ msgstr "Volver al día de hoy" + +#~ msgid "Today" +#~ msgstr "Hoy" + +#~ msgid "Select Range" +#~ msgstr "Seleccionar intervalo" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Inicio" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Fin" + +#~ msgid "Sort From First To Last" +#~ msgstr "Ordenar del primero al último" + +#~ msgid "Sort From Last To First" +#~ msgstr "Ordenar del último al primero" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Transacción nueva (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nueva" + +#~ msgid "Suggestions" +#~ msgstr "Sugerencias" + +#~ msgid "Converter" +#~ msgstr "Conversor" + +#~ msgid "Loading..." +#~ msgstr "Cargando..." + +#~ msgid "All Accounts" +#~ msgstr "Todas las cuentas" + +#~ msgid "Color" +#~ msgstr "Color" + +#~ msgid "Delete" +#~ msgstr "Borrar" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Se trata sólo de una etiqueta útil que no afecta al funcionamiento de la " +#~ "aplicación." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Introduzca la contraseña para iniciar sesión:" + +#~ msgid "Checking Account Color" +#~ msgstr "Color de la cuenta corriente" + +#~ msgid "Savings Account Color" +#~ msgstr "Color de la cuenta de ahorro" + +#~ msgid "Business Account Color" +#~ msgstr "Color de la cuenta de la empresa" + +#~ msgid "Use Native Digits" +#~ msgstr "Usar dígitos nativos" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Si usar numerales que son nativos para su localización en lugar de " +#~ "dígitos latinos." + +#~ msgid "Backup" +#~ msgstr "Copia de seguridad" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Carpeta de copia de seguridad de CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Las cuentas no cifradas se exportarán automáticamente como archivos CSV a " +#~ "esta carpeta cuando se realice un cambio." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Borrar la carpeta de copia de seguridad" + +#~ msgid "No Reminders" +#~ msgstr "Sin recordatorios" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transferencia" + +#~ msgid "New Transaction" +#~ msgstr "Transacción nueva" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Conmutar barra lateral" + +#~ msgid "Make a Copy" +#~ msgstr "Hacer una copia" + +#~ msgid "Clear End Date" +#~ msgstr "Limpiar fecha final" + +#~ msgid "Daily" +#~ msgstr "Diario" + +#~ msgid "Weekly" +#~ msgstr "Semanal" + +#~ msgid "Biweekly" +#~ msgstr "Quincenal" + +#~ msgid "Monthly" +#~ msgstr "Mensual" + +#~ msgid "Quarterly" +#~ msgstr "Trimestral" + +#~ msgid "Yearly" +#~ msgstr "Anual" + +#~ msgid "Biyearly" +#~ msgstr "Bianual" + +#~ msgid "Use group color" +#~ msgstr "Usar color de grupo" + +#~ msgid "Use unique color" +#~ msgstr "Usar color único" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Introduzca un nombre de etiqueta nuevo..." + +#~ msgid "Add Tag" +#~ msgstr "Añadir una etiqueta" + +#~ msgid "Extras" +#~ msgstr "Extras" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Gestionar los campos adicionales de la transacción." + +#~ msgid "Enter notes here" +#~ msgstr "Escriba aquí las notas" + +#~ msgid "Edit Transaction" +#~ msgstr "Editar transacción" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Al transferir dinero se creará una operación de gasto con el importe dado " +#~ "en esta cuenta y una operación de ingreso con el importe dado en la " +#~ "cuenta a la que se va a transferir." + +#~ msgid "Select a destination account" +#~ msgstr "Seleccione una cuenta de destino" + +#~ msgid "Recent Accounts" +#~ msgstr "Cuentas recientes" + +#~ msgid "Conversion Needed" +#~ msgstr "Se necesita la conversión" + +#~ msgid "Use Custom Rates" +#~ msgstr "Usar tarifas personalizadas" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Introduzca manualmente los índices para la conversión" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Nueva" + +#~ msgid "Toggle Graphs" +#~ msgstr "Conmutar gráficas" + +#~ msgid "result" +#~ msgstr "resultado" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "dinero;finanzas;cartera;efectivo;banco;Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Gestione varias cuentas a la vez, con una interfaz de pestañas intuitiva" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— Filtre fácilmente las transacciones por tipo, grupo o fecha" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Repetir fácilmente las transacciones, como facturas que se producen " +#~ "todos los meses" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Transferir dinero de una cuenta a otra" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Exporte una cuenta como un archivo CSV e importe un archivo CSV, OFX o " +#~ "QIF para añadir las transacciones en bloque a una cuenta" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "Espere mientras se importan las transacciones..." + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "No se ha podido importar información del fichero. Tipo de archivo no " +#~ "compatible." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Personalice la interfaz de usuario de la aplicación." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Personalizar cómo Denaro usa la configuración regional." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "" +#~ "Personalizar las ubicaciones de la copia de seguridad para las cuentas de " +#~ "Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Otro" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Hide" +#~ msgstr "Ocultar" + +#~ msgid "Show" +#~ msgstr "Mostrar" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Restablecer filtros de fechas" + +#~ msgid "Delete Group?" +#~ msgstr "¿Eliminar grupo?" + +#~ msgid "Delete Transaction?" +#~ msgstr "¿Eliminar transacción?" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "- Se ha solucionado un problema por el que Denaro se bloqueaba en " +#~ "sistemas con configuraciones regionales no configuradas" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "" +#~ "- Se ha solucionado un problema por el que la exportación a PDF fallaba " +#~ "en cuentas con muchos recibos" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "" +#~ "- Se ha corregido un problema por el que el filtro de un grupo se " +#~ "reactivaba cuando se añadía una transacción a ese grupo" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "- Se mostrarán mensajes de error si Denaro intenta acceder a archivos " +#~ "inaccesibles en lugar de bloquearse" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "" +#~ "- ¡Traducciones actualizadas (Gracias a todos los usuarios de Weblate)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Configuración de la cuenta" + +#~ msgid "Version: {0}" +#~ msgstr "Versión: {0}" + +#~ msgid "About {0}" +#~ msgstr "Acerca de {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contribuidores en GitHub ❤️ https://github.com/NickvisionApps/Denaro/" +#~ "graphs/contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Los traductores en Weblate ❤️ https://hosted.weblate.org/projects/" +#~ "nickvision-money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Transferir dinero (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importar desde archivo (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Importadas {0} transacciones del archivo." + +#~ msgid "Enter description here" +#~ msgstr "Introduzca aquí la descripción" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Cuenta bancaria (*.nmoney)" + +#~ msgid "Hide Groups" +#~ msgstr "Ocultar grupos" + +#~ msgid "Show Groups" +#~ msgstr "Mostrar grupos" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Administra varias cuentas simultáneamente, ya que la interfaz de la " +#~ "aplicación es una interfaz de pestañas\n" +#~ "— Ordenar transacciones por sus tipos, grupos o fechas\n" +#~ "— Repita las transacciones con facilidad, por ejemplo, puede repetir las " +#~ "transacciones todos los meses\n" +#~ "Transferir dinero de una cuenta a otra\n" +#~ "— Exporte cuentas como archivos CSV e importe archivos CSV, OFX o QIF " +#~ "para agregar transacciones a una cuenta" + +#~ msgid "New Window" +#~ msgstr "Ventana nueva" + +#~ msgid "Enter decimal separator" +#~ msgstr "Introduzca el separador de decimal" + +#~ msgid "Enter group separator" +#~ msgstr "Introduzca el separador de grupos" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transacción ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transacciones ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Sin carpeta de copia de seguridad" + +#~ msgid "Reset All Filters" +#~ msgstr "Restablecer todos los filtros" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Configuración de la cuenta (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Ordenar" + +#~ msgid "Order By" +#~ msgstr "Ordenar por" + +#~ msgid "Increasing" +#~ msgstr "Ascendente" + +#~ msgid "Decreasing" +#~ msgstr "Descendente" + +#~ msgid "Sort By" +#~ msgstr "Ordenar por" diff --git a/resources/po/et.po b/resources/po/et.po new file mode 100644 index 000000000..b7aa88838 --- /dev/null +++ b/resources/po/et.po @@ -0,0 +1,1237 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +#, fuzzy +msgid "Transactions without a group" +msgstr "Tehingud" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Tehing ({0})" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Tehing ({0})" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrixi jututuba" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Head ööd!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Tere hommikust!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Tere päevast!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Tere õhtust!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Tere päevast!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Konto" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +msgid "This account cannot be overwritten." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +msgid "The account is already open." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +msgid "Export to CSV" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +msgid "Export to PDF" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Ülevaade" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +#, fuzzy +msgid "Account Settings" +msgstr "Sätted" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "Sätted" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Kokku" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Tulu" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Kulu" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +#, fuzzy +msgid "New Group" +msgstr "Uus konto" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Uus" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Tehingud" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +#, fuzzy +msgid "Account Name" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +#, fuzzy +msgid "Account Type" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +#, fuzzy +msgid "Savings" +msgstr "Sätted" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +#, fuzzy +msgid "Default Transaction Type" +msgstr "Kustuta tehing" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +msgid "$ is the currency's symbol." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +#, fuzzy +msgid "Amount" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "Kontod" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Tagasi" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Uus konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +#, fuzzy +msgid "Overwrite Existing Accounts" +msgstr "Uus konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "Sätted" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +#, fuzzy +msgid "Account Currency" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Eelistused" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Kiirklahvid" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Abi" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +#, fuzzy +msgid "Account Menu" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Uus konto (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +#, fuzzy +msgid "Open Account (Ctrl+O)" +msgstr "Uus konto (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Ava" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +#, fuzzy +msgid "No Recent Accounts" +msgstr "Kontod" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Eemalda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +msgid "Off" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +#, fuzzy +msgid "Open Account" +msgstr "Uus konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Tehingud" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Sätted" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Lahku" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Sulge" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +msgid "Unable to change password" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Pole tehinguid" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +msgid "Select Import File" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro konto" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Tühista" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Ava" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Tehingud" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Sätted" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Konto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Uus konto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Konto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +msgid "Symbol (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +msgid "Code (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +msgid "Symbol (Invalid)" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Muudatused" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Teata veast" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Vestlused" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Tegijad" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Uus konto" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Kustuta tehing" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Kustuta tehing" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Kustuta tehing" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" + +#, fuzzy, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "Tehingud" +#~ msgstr[1] "Tehingud" + +#~ msgid "Add" +#~ msgstr "Lisa" + +#~ msgid "All files" +#~ msgstr "Kõik failid" + +#~ msgid "Apply" +#~ msgstr "Rakenda" + +#, fuzzy +#~ msgid "Delete Existing" +#~ msgstr "Kustuta tehing" + +#~ msgid "Delete Transaction" +#~ msgstr "Kustuta tehing" + +#, fuzzy +#~ msgid "Destination Account" +#~ msgstr "Uus konto" + +#~ msgid "No" +#~ msgstr "Ei" + +#, fuzzy +#~ msgid "No Transactions Found" +#~ msgstr "Pole tehinguid" + +#, fuzzy +#~ msgid "Select Account" +#~ msgstr "Uus konto" + +#, fuzzy +#~ msgid "Transaction" +#~ msgstr "Tehingud" + +#, fuzzy +#~ msgid "Upcoming transactions" +#~ msgstr "Pole tehinguid" + +#, fuzzy +#~ msgid "Update Transaction" +#~ msgstr "Kustuta tehing" + +#~ msgid "Yes" +#~ msgstr "Jah" + +#~ msgid "Today's Overview" +#~ msgstr "Tänane ülevaade" + +#, fuzzy +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Uus konto (Ctrl+N)" + +#~ msgid "Calendar" +#~ msgstr "Kalender" + +#, fuzzy +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Uus konto (Ctrl+N)" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Uus" + +#, fuzzy +#~ msgid "All Accounts" +#~ msgstr "Kontod" + +#, fuzzy +#~ msgid "Backup" +#~ msgstr "Tagasi" + +#, fuzzy +#~ msgid "New Transaction" +#~ msgstr "Pole tehinguid" + +#, fuzzy +#~ msgid "Edit Transaction" +#~ msgstr "Tehingud" + +#, fuzzy +#~ msgid "Recent Accounts" +#~ msgstr "Kontod" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Uus" + +#~ msgid "Save" +#~ msgstr "Salvesta" + +#~ msgid "Hide" +#~ msgstr "Peida" + +#, fuzzy +#~ msgid "Delete Transaction?" +#~ msgstr "Kustuta tehing" + +#~ msgid "Version: {0}" +#~ msgstr "Versioon: {0}" + +#~ msgid "About {0}" +#~ msgstr "Teave - {0}" + +#~ msgid "Filters" +#~ msgstr "Filtrid" + +#~ msgid "Transactions ({0})" +#~ msgstr "Tehingud ({0})" + +#~ msgid "Sort" +#~ msgstr "Sorteeri" diff --git a/resources/po/fi.po b/resources/po/fi.po new file mode 100644 index 000000000..bb9c55fca --- /dev/null +++ b/resources/po/fi.po @@ -0,0 +1,1761 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-08-24 20:09+0000\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Ryhmittämätön" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Tapahtumat ilman ryhmää" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Siirrä kohteeseen {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Siirrä kohteesta {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Huomenna" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Yksi viikko tästä hetkestä" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Yksi kuukausi tästä hetkestä" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Kaksi kuukautta tästä hetkestä" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Kaksi kuukautta tästä hetkestä" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Järjestelmä ilmoitti, että käyttämäsi valuutta on" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Kirjautuminen tilille ei onnistu. Annettu salasana on virheellinen." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Hallitse raha-asioitasi" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix-keskustelu" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Avustajat GitHubissa ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Hyvää huomenta!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Hyvää huomenta!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Hyvää iltapäivää!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Hyvää iltaa!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Hyvää päivää!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Tämä tili on jo avattu." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Tämä tili on jo avattu." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Tämä tili on jo avattu." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Tuo tiedostosta" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Vie tiedostoon" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Vie tiedostoon" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Yleisnäkymä" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Siirrä rahaa" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Tilin asetukset" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Asetukset" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Yhteensä" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Tulo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Meno" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Muistutukset" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Ryhmät" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Uusi ryhmä" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Uusi" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Tapahtumat" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Seuraava" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Tili" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Tilin nimi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tilin tyyppi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Siirto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Säästöt" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Yritys" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tapahtuman oletustyyppi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Ei koskaan" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Valuutta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Käytä mukautettua valuuttaa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Desimaalierotin" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Ryhmäerotin" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +#, fuzzy +msgid "None" +msgstr "Ei mitään" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Kaksi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Kolme" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Neljä" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Viisi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Kuusi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Valuutan symboli" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Salasana" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Jos salasana häviää, tiedostoa ei ole mahdollista palauttaa!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Uusi salasana" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Vahvista salasana" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Vaihda salasana" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Tulos" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Määrä" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "Ei viimeisimpiä tilejä" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Takaisin" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Uusi tili" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Aloitetaan" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Tallennustilan sijainti" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Tilin salasana (valinnainen)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Kansio" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Valitse kansio" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Korvaa olemassa olevat tilit" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Tilin valinnat" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Tilin valuutta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Tuo olemassa olevat tiedot" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Tuo tiedosto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Valitse tiedosto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Tyhjennä tiedosto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Luo" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Asetukset" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Pikanäppäimet" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Ohje" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Tietoja - Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Tilivalikko" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Viimeisimmät" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Uusi tili (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Avaa tili (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Avaa" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Ei viimeisimpiä tilejä" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Poista" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Päävalikko" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Etusivu" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Valuuttakoodi" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Tilit" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Kojelauta" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Luo tai avaa tili, jotta pääset alkuun. Voit myös vetää tiedoston " +"tiedostonhallinnasta tähän sovellukseen." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tilin tyyppi" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Käyttöliittymä" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Teema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Vaalea" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Tumma" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Järjestelmä" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Värit" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Mukauta Denaron käyttämiä värejä." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Tapahtuman oletusväri" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "Muutos tähän asetukseen toteutetaan vain uusiin tapahtumiin." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Siirron oletusväri" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Muutos tähän asetukseen toteutetaan vain uusiin siirtoihin." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Ryhmän oletusväri" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Muutos tähän asetukseen toteutetaan vain uusiin ryhmiin." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Maa-asetusto" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Syötä desimaalierotin" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Pois" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Piste ja pilkku" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Tili" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Avaa tili" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Sovellus" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Sovellus" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Lopeta" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Sulje" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Salasanan vahvuus" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Vaihda salasana" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Salasanan vahvuus" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Ei tapahtumia" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Muokkaa ryhmää" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Tuo tiedosto" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub-tietovarasto" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro -tili" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Kirjoita salasana tähän" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Peru" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Avaa lukitus" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Tallennustilan sijainti" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "Kirjoita nimi tähän" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Avaa" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Toiminnot" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Säästöt" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Kirjoita symboli tähän" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Kirjoita koodi tähän" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Määrä" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Tuo tiedosto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Tiliä ei ole valittu" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Tilin nimi (avattu)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Valuutan symboli (tyhjä)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nimi (tyhjä)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Desimaalierotin (tyhjä)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Desimaalierotin (virheellinen)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Ryhmäerotin (virheellinen)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Valuutan symboli (virheellinen)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Vie kaikki tiedot" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Muutosloki" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Ilmoita ongelmasta" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Keskustelut" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Tekijät" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Luo tai avaa tili, jotta pääset alkuun. Voit myös vetää tiedoston " +"tiedostonhallinnasta tähän sovellukseen." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Tiliä ei voitu viedä tiedostoon." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Sulje tili" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tapahtuman oletustyyppi" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Siirron oletusväri" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Ryhmän oletusväri" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Kirjoita määrä tähän" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Tulos" + +#~ msgid "(Copy)" +#~ msgstr "(Kopio)" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} tapahtuma" +#~ msgstr[1] "{0} tapahtumaa" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Tilin nimi (olemassa)" + +#~ msgid "Add" +#~ msgstr "Lisää" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Lisää uusi tapahtuma tai tuo tapahtumat tiedostosta." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Lisätäänkö salasana PDF:ään?" + +#~ msgid "All files" +#~ msgstr "Kaikki tiedostot" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Määrä (virheellinen)" + +#~ msgid "Apply" +#~ msgstr "Toteuta" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän ryhmän?\n" +#~ "Tätä toimintoa ei voi perua." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän tapahtuman?\n" +#~ "Tätä toimintoa ei voi perua." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Ei pääsyä valittuun kansioon, tarkista Flatpak-oikeudet." + +#~ msgid "Currency Code" +#~ msgstr "Valuuttakoodi" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Valuuttakoodi (tyhjä)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Päivä" + +#~ msgid "Delete Existing" +#~ msgstr "Poista olemassa oleva" + +#~ msgid "Delete Group" +#~ msgstr "Poista ryhmä" + +#, fuzzy +#~ msgid "Delete Only Source" +#~ msgstr "Poista ryhmä" + +#~ msgid "Delete Transaction" +#~ msgstr "Poista tapahtuma" + +#~ msgid "Description" +#~ msgstr "Kuvaus" + +#~ msgid "Description (Empty)" +#~ msgstr "Kuvaus (tyhjä)" + +#~ msgid "Destination Account" +#~ msgstr "Kohdetili" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Kohdetili (virheellinen)" + +#~ msgid "Destination Account Password" +#~ msgstr "Kohdetilin salasana" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Kohdetilin salasana (virheellinen)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Kohdetilin salasana (pakollinen)" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Tili viety tiedostoon onnistuneesti." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Luotu: {0}" + +#~ msgid "Group" +#~ msgstr "Ryhmä" + +#~ msgid "Group Name" +#~ msgstr "Ryhmän nimi" + +#~ msgid "Id" +#~ msgstr "Tunniste" + +#~ msgid "Import from Account" +#~ msgstr "Tuo tililtä" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Tuotu {0} tapahtuma tiedostosta." +#~ msgstr[1] "Tuotu {0} tapahtumaa tiedostosta." + +#~ msgid "N/A" +#~ msgstr "-" + +#~ msgid "Name" +#~ msgstr "Nimi" + +#~ msgid "Name (Exists)" +#~ msgstr "Nimi (olemassa)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Ei" + +#~ msgid "No End Date" +#~ msgstr "Ei loppupäivää" + +#~ msgid "No Transactions Found" +#~ msgstr "Tapahtumia ei löytynyt" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Suodattimia vastaavia tapahtumia ei löydy." + +#~ msgid "Nothing to import from the file." +#~ msgstr "Ei mitään tuotavaa tiedostosta." + +#~ msgid "Page {0}" +#~ msgstr "Sivu {0}" + +#~ msgid "PDF Password" +#~ msgstr "PDF-salasana" + +#~ msgid "Receipt" +#~ msgstr "Kuitti" + +#~ msgid "Receipts" +#~ msgstr "Kuitit" + +#~ msgid "Repeat End Date" +#~ msgstr "Toistumisen loppupäivä" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Toistumisen loppupäivä (virheellinen)" + +#~ msgid "Repeat Interval" +#~ msgstr "Toistumisväli" + +#, fuzzy +#~ msgid "Repeat Interval Changed" +#~ msgstr "Toistumisväli" + +#~ msgid "Select Account" +#~ msgstr "Valitse tili" + +#~ msgid "Select Backup Folder" +#~ msgstr "Valitse varmuuskopiokansio" + +#~ msgid "Sort By Amount" +#~ msgstr "Järjestä summan mukaan" + +#~ msgid "Sort By Date" +#~ msgstr "Järjestä päivän mukaan" + +#~ msgid "Sort By Id" +#~ msgstr "Järjestä tunnisteen mukaan" + +#~ msgid "Tags" +#~ msgstr "Tunnisteet" + +#~ msgid "The password of the account was changed." +#~ msgstr "Tilin salasana vaihdettiin." + +#~ msgid "The password of the account was removed." +#~ msgstr "Tilin salasana poistettiin." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Salasana poistetaan, kun tämä ikkuna suljetaan." + +#~ msgid "The passwords do not match." +#~ msgstr "Salasanat eivät täsmää." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Tällä tilillä ei ole riittävästi rahaa siirtoa varten." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Tapahtuma" + +#~ msgid "Type" +#~ msgstr "Tyyppi" + +#~ msgid "Unable to export account to file." +#~ msgstr "Tiliä ei voitu viedä tiedostoon." + +#, fuzzy +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Lisää uusi tapahtuma tai tuo tapahtumat tiedostosta." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Olemassa olevan tilin korvaaminen ei onnistu." + +#, fuzzy +#~ msgid "Upcoming transactions" +#~ msgstr "Ei tapahtumia" + +#~ msgid "Update Only Source" +#~ msgstr "Päivitä vain lähde" + +#~ msgid "Update Transaction" +#~ msgstr "Päivitä tapahtuma" + +#~ msgid "Upload" +#~ msgstr "Lähetä" + +#~ msgid "View" +#~ msgstr "Näytä" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Haluatko suojata PDF-tiedoston salasanalla?\n" +#~ "\n" +#~ "Jos salasana katoaa, PDF-tiedosto ei ole käytettävissä." + +#~ msgid "Yes" +#~ msgstr "Kyllä" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Hallitse tilillä käytettävää valuuttaa." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Aseta uusi salasana tai poista salasana." + +#, fuzzy +#~ msgid "Other" +#~ msgstr "Muu" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Vie nykyinen näkymä" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Etsi kuvausta" + +#~ msgid "Today's Overview" +#~ msgstr "Päivän yleisnäkymä" + +#, fuzzy +#~ msgid "Select All Overview Filters" +#~ msgstr "Nollaa yleisnäkymän suodattimet" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Uusi ryhmä (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Näytä/piilota ryhmät" + +#, fuzzy +#~ msgid "Select All Groups Filters" +#~ msgstr "Nollaa ryhmäsuodattimet" + +#, fuzzy +#~ msgid "Unselect Groups Filters" +#~ msgstr "Nollaa ryhmäsuodattimet" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Näytä/piilota ryhmät" + +#, fuzzy +#~ msgid "Select All Tags Filters" +#~ msgstr "Nollaa ryhmäsuodattimet" + +#, fuzzy +#~ msgid "Unselect Tags Filters" +#~ msgstr "Nollaa ryhmäsuodattimet" + +#~ msgid "Calendar" +#~ msgstr "Kalenteri" + +#~ msgid "Select Current Month" +#~ msgstr "Valitse nykyinen kuukausi" + +#~ msgid "Today" +#~ msgstr "Tänään" + +#~ msgid "Select Range" +#~ msgstr "Valitse aikaväli" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Alku" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Loppu" + +#~ msgid "Sort From First To Last" +#~ msgstr "Järjestä ensimmäisestä viimeiseen" + +#~ msgid "Sort From Last To First" +#~ msgstr "Järjestä viimeisestä ensimmäiseen" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Uusi tapahtuma (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Uusi" + +#~ msgid "Suggestions" +#~ msgstr "Ehdotukset" + +#~ msgid "All Accounts" +#~ msgstr "Kaikki tilit" + +#~ msgid "Color" +#~ msgstr "Väri" + +#~ msgid "Delete" +#~ msgstr "Poista" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Tämä on vain hyödyllinen selite, eikä se vaikuta sovelluksen toimintaan." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Kirjoita salasana kirjautuaksesi:" + +#~ msgid "Checking Account Color" +#~ msgstr "Siirtotilin väri" + +#~ msgid "Savings Account Color" +#~ msgstr "Säästötilin väri" + +#~ msgid "Business Account Color" +#~ msgstr "Yritystilin väri" + +#, fuzzy +#~ msgid "Backup" +#~ msgstr "Takaisin" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV-varmuuskopion kansio" + +#~ msgid "Clear Backup Folder" +#~ msgstr "Tyhjennä varmuuskopiokansio" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Siirto" + +#~ msgid "New Transaction" +#~ msgstr "Uusi tapahtuma" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Näytä/piilota sivupalkki" + +#~ msgid "Make a Copy" +#~ msgstr "Tee kopio" + +#~ msgid "Clear End Date" +#~ msgstr "Tyhjennä loppupäivä" + +#~ msgid "Daily" +#~ msgstr "Päivittäin" + +#~ msgid "Weekly" +#~ msgstr "Viikottain" + +#~ msgid "Biweekly" +#~ msgstr "Joka toinen viikko" + +#~ msgid "Monthly" +#~ msgstr "Kuukausittain" + +#~ msgid "Quarterly" +#~ msgstr "Neljännesvuosittain" + +#~ msgid "Yearly" +#~ msgstr "Vuosittain" + +#~ msgid "Biyearly" +#~ msgstr "Joka toinen vuosi" + +#~ msgid "Use group color" +#~ msgstr "Käytä ryhmän väriä" + +#~ msgid "Use unique color" +#~ msgstr "Käytä yksilöllistä väriä" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Kirjoita uuden tunnisteen nimi..." + +#~ msgid "Add Tag" +#~ msgstr "Lisää tunniste" + +#~ msgid "Extras" +#~ msgstr "Lisäkentät" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Hallitse tapahtuman lisäkenttiä." + +#~ msgid "Edit Transaction" +#~ msgstr "Muokkaa tapahtumaa" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Rahan siirtäminen luo menotapahtuman annetun määrän mukaisesti tälle " +#~ "tilille, ja tulotapahtuman annetun määrän mukaisesti tilille, jolle rahat " +#~ "siirretään." + +#~ msgid "Select a destination account" +#~ msgstr "Valitse kohdetili" + +#~ msgid "Recent Accounts" +#~ msgstr "Viimeisimmät tilit" + +#~ msgid "Conversion Needed" +#~ msgstr "Muunnos vaaditaan" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "Käytä mukautettua valuuttaa" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Kirjoita muunnos tähän" + +#, fuzzy +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Siirto" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Uusi" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Tulos" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "money;finance;wallet;cash;bank;GTK;Nickvision;raha;lompakko;käteinen;" +#~ "pankki;varallisuus;" + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Mukauta sovelluksen käyttöliittymää." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Mukauta miten Denaro käyttää maa-asetustoja." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Mukauta Denaro-tilien varmuuskopioiden sijainnit." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Muu" + +#~ msgid "Save" +#~ msgstr "Tallenna" + +#~ msgid "Hide" +#~ msgstr "Piilota" + +#~ msgid "Show" +#~ msgstr "Näytä" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Nollaa päiväsuodattimet" + +#~ msgid "Delete Group?" +#~ msgstr "Poistetaanko ryhmä?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Poistetaanko tapahtuma?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Tilin asetukset" + +#~ msgid "Version: {0}" +#~ msgstr "Versio: {0}" + +#~ msgid "About {0}" +#~ msgstr "Tietoja - {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Avustajat GitHubissa ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Kääntäjät Weblatessa ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Siirrä rahaa (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Tuo tiedostosta (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Suodattimet" + +#~ msgid "Hide Groups" +#~ msgstr "Piilota ryhmät" + +#~ msgid "Show Groups" +#~ msgstr "Näytä ryhmät" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Tuotu {0} tapahtumaa tiedostosta." + +#~ msgid "Enter description here" +#~ msgstr "Kirjoita kuvaus tähän" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Hallitse raha-asioitasi" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Rahatili (*.nmoney)" + +#~ msgid "New Window" +#~ msgstr "Uusi ikkuna" + +#~ msgid "No Backup Folder" +#~ msgstr "Ei varmuuskopiokansiota" + +#~ msgid "Reset All Filters" +#~ msgstr "Nollaa kaikki suodattimet" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Tilin asetukset (Ctrl+.)" + +#~ msgid "Enter group separator" +#~ msgstr "Kirjoita ryhmäerotin" + +#~ msgid "Transactions ({0})" +#~ msgstr "Tapahtumat ({0})" + +#~ msgid "Transaction ({0})" +#~ msgstr "Tapahtuma ({0})" + +#~ msgid "Enter decimal separator" +#~ msgstr "Kirjoita desimaalierotin" diff --git a/resources/po/fr.po b/resources/po/fr.po new file mode 100644 index 000000000..05cf39d36 --- /dev/null +++ b/resources/po/fr.po @@ -0,0 +1,1929 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-11-15 11:53+0000\n" +"Last-Translator: rene-coty \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.2-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Sans groupe" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transactions sans groupe" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transférer vers {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transférer depuis {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} de {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Demain" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Dans une semaine" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Dans un mois" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Dans deux mois" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Dans deux mois" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Votre système indique que votre devise monétaire est" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" +"Impossible de se connecter au compte. Le mot de passe fourni n'est pas " +"valide." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Gérez vos finances personnelles" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Discussion Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Contributeurs sur GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Irénée Thirion" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Bonjour !" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Bonjour !" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Bonjour !" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Bonsoir !" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Bonjour !" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Ce compte est déjà ouvert." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Ce compte est déjà ouvert." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Ce compte est déjà ouvert." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importer à partir d’un fichier" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exporter vers un fichier" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exporter vers un fichier" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Aperçu" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Virer de l’argent" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Paramètres du compte" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Paramètres" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Revenus" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Dépenses" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Rappels" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Groupes" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Nouveau groupe" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nouveau" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transactions" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Visualiser" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Suivant" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Compte" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nom du compte" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Type de compte" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Chèques" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Épargne" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Affaires" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Type de transaction par défaut" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Seuil de rappel des transactions" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Jamais" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Un jour avant" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Une semaine avant" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Un mois avant" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Deux mois avant" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Devise monétaire" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Utiliser une devise personnalisée" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Séparateur des décimales" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Séparateur de groupes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Aucun" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Chiffres des décimales" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Deux" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Trois" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Quatre" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Cinq" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Six" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Style d’affichage du montant" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Symbole monétaire" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Mot de passe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" +"Si le mot de passe est perdu, il n’y a aucun moyen de restaurer le fichier !" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nouveau mot de passe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Confirmer le mot de passe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Changer le mot de passe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Échanger les devises" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Échanger" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Source" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Résultat" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Montant" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Copier le résultat du montant" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Retour" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nouveau compte" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Utilisez cet assistant pour tirer le meilleur parti de votre compte" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Commençons" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Emplacement de stockage" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Mot de passe du compte (optionnel)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Dossier" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Sélectionner un dossier" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Remplacer les comptes existants" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Options du compte" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Devise du compte" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importer des informations existantes" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Téléverser un fichier valide à utiliser pour importer les informations " +"existantes vers le nouveau compte." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Importer un fichier" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Sélectionner un fichier" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Effacer le fichier" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Créer" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Préférences" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Raccourcis clavier" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Aide" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "À propos de Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menu des comptes" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Récents" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nouveau compte (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Ouvrir un compte (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Ouvrir" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Aucun compte récent" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Retirer" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menu principal" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Accueil" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Convertisseur monétaire" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Comptes" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Créez ou ouvrez un compte pour commencer. Vous pouvez également faire " +"glisser un fichier dans l’application depuis votre navigateur de fichiers." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Type de compte" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interface utilisateur" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Thème" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Clair" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Sombre" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Système" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Couleurs" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Personnaliser les couleurs utilisées par Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Couleur par défaut des transactions" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Un changement de ce paramètre ne sera uniquement appliqué qu’aux " +"transactions nouvellement ajoutées." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Couleur par défaut des transferts" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Un changement de ce paramètre ne sera uniquement appliqué qu’aux nouveaux " +"transferts." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Couleur de groupe par défaut" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" +"Un changement de ce paramètre ne sera appliqué qu’aux nouveaux groupes." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Paramètres régionaux" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Insérer un séparateur décimale" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Définit pour quelles touches pressées le séparateur décimal des paramètres " +"régionaux sera inséré dans un champ de montant." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Désactivé" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Point du pavé numérique uniquement" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Point et virgule" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Compte" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Ouvrir un compte" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Application" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Application" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Quitter" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Erreur" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Impossible de charger les données de la devise. Veuillez réessayer. Si " +"l’erreur persiste, signalez le bogue." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Fermer" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Le résultat a été copié vers le presse-papiers." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Robustesse du mot de passe" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Changer le mot de passe" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Robustesse du mot de passe" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Aucune transaction" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Modifier le groupe" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importer un fichier" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Dépôt GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Compte Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Entrez le mot de passe ici" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Annuler" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Déverrouiller" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Emplacement de stockage" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Entrez le nom ici" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Ouvrir" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Actions" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Épargne" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Entrez un symbole ici" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Entrez un code ici" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Style d’affichage du montant" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importer un fichier" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Aucun compte sélectionné" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nom du compte (ouvert)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Symbole monétaire (vide)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nom (vide)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Séparateur de décimales (vide)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Séparateur de décimales (invalide)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Séparateur de groupes (invalide)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Symbole monétaire (invalide)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Exporter toutes les informations" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Journal des modifications" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Signaler une erreur" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussions" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Crédits" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Créez ou ouvrez un compte pour commencer. Vous pouvez également faire " +"glisser un fichier dans l’application depuis votre navigateur de fichiers." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Impossible de remplacer un compte ouvert." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Le résultat a été copié vers le presse-papiers." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Fermer le compte" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Type de transaction par défaut" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Couleur par défaut des transferts" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Couleur de groupe par défaut" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Entrez un montant ici" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Résultat" + +#~ msgid "(Copy)" +#~ msgstr "(Copie)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} étiquette" +#~ msgstr[1] "{0} étiquettes" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transaction" +#~ msgstr[1] "{0} transactions" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Nom du compte (existe)" + +#~ msgid "Add" +#~ msgstr "Ajouter" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "" +#~ "Ajoutez une nouvelle transaction ou importez des transactions depuis un " +#~ "fichier." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Ajouter un mot de passe au document PDF ?" + +#~ msgid "All files" +#~ msgstr "Tous les fichiers" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Montant (invalide)" + +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Êtes-vous sûr de vouloir supprimer ce groupe ?\n" +#~ "Cette action est irréversible." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Êtes-vous sûr·e de vouloir supprimer cette transaction ?\n" +#~ "Cette action est irréversible." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Impossible d’accéder au dossier sélectionné, vérifiez les permissions " +#~ "Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Code monétaire" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Code devise (vide)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Date" + +#~ msgid "Delete Existing" +#~ msgstr "Supprimer l’existant" + +#~ msgid "Delete Group" +#~ msgstr "Supprimer le groupe" + +#~ msgid "Delete Only Source" +#~ msgstr "Supprimer uniquement la source" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Supprimer la source et les transactions générées" + +#~ msgid "Delete Transaction" +#~ msgstr "Supprimer la transaction" + +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgid "Description (Empty)" +#~ msgstr "Description (vide)" + +#~ msgid "Destination Account" +#~ msgstr "Compte destinataire" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Compte destinataire (invalide)" + +#~ msgid "Destination Account Password" +#~ msgstr "Mot de passe du compte de destination" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Mot de passe du compte de destination (invalide)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Mot de passe du compte de destination (obligatoire)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Dissocier l'existant" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Compte exporté dans le fichier avec succès." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Généré : {0}" + +#~ msgid "Group" +#~ msgstr "Groupe" + +#~ msgid "Group Name" +#~ msgstr "Nom de groupe" + +#~ msgid "Id" +#~ msgstr "Identifiant" + +#~ msgid "Import from Account" +#~ msgstr "Importer à partir d’un compte" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} transaction importée depuis le fichier." +#~ msgstr[1] "{0} transactions importées depuis le fichier." + +#~ msgid "N/A" +#~ msgstr "Indispo." + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "Name (Exists)" +#~ msgstr "Nom (existe)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Non" + +#~ msgid "No End Date" +#~ msgstr "Pas de date de fin" + +#~ msgid "No Transactions Found" +#~ msgstr "Aucune transaction trouvée" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Aucune transaction ne correspond aux critères spécifiés." + +#~ msgid "Notes" +#~ msgstr "Notes" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Rien à importer depuis le fichier." + +#~ msgid "Page {0}" +#~ msgstr "Page {0}" + +#~ msgid "PDF Password" +#~ msgstr "Mot de passe PDF" + +#~ msgid "Receipt" +#~ msgstr "Reçu" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Reçu (fichier inaccessible)" + +#~ msgid "Receipts" +#~ msgstr "Reçus" + +#~ msgid "Repeat End Date" +#~ msgstr "Date de fin de répétition" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Date de fin de répétition (invalide)" + +#~ msgid "Repeat Interval" +#~ msgstr "Intervalle de répétition" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Intervalle de répétition modifié" + +#~ msgid "Select Account" +#~ msgstr "Sélectionner un compte" + +#~ msgid "Select Backup Folder" +#~ msgstr "Sélectionner un dossier de sauvegarde" + +#~ msgid "Sort By Amount" +#~ msgstr "Trier par montant" + +#~ msgid "Sort By Date" +#~ msgstr "Trier par date" + +#~ msgid "Sort By Id" +#~ msgstr "Trier par identifiant" + +#~ msgid "Tags" +#~ msgstr "Étiquettes" + +#~ msgid "The password of the account was changed." +#~ msgstr "Le mot de passe du compte a été modifié." + +#~ msgid "The password of the account was removed." +#~ msgstr "Le mot de passe du compte a été retiré." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "" +#~ "Le mot de passe sera retiré à la fermeture de cette boîte de dialogue." + +#~ msgid "The passwords do not match." +#~ msgstr "Les mots de passe ne correspondent pas." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "L’intervalle de répétition a été modifié.\n" +#~ "Que souhaitez-vous faire avec les transactions générées existantes ?\n" +#~ "\n" +#~ "Les nouvelles transactions répétées seront générées sur la base du nouvel " +#~ "intervalle." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Ce compte n’a pas d’argent disponible à transférer." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Cette transaction est une transaction répétée à partir de la source.\n" +#~ "Que voulez-vous faire avec les transactions répétées ?\n" +#~ "\n" +#~ "En supprimant uniquement la transaction source, les transactions\n" +#~ "individuelles générées deviendront modifiables." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Cette transaction est une transaction répétée à partir de la source.\n" +#~ "Que voulez-vous faire avec les transactions répétées ?\n" +#~ "\n" +#~ "En mettant à jour uniquement la transaction source,\n" +#~ "les transactions générées en seront dissociées." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transaction" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Unable to export account to file." +#~ msgstr "Impossible d’exporter le compte dans un fichier." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Impossible d’importer les informations depuis le fichier. Assurez vous " +#~ "que l’application a les permissions d’accès au fichier, et réessayez." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Impossible d’importer des transactions depuis le fichier." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Impossible d’ouvrir le compte. Assurez-vous que l’application dispose des " +#~ "permissions d’accès au fichier, et réessayez." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Impossible de remplacer un compte existant." + +#~ msgid "Untagged" +#~ msgstr "Sans étiquette" + +#~ msgid "Upcoming transactions" +#~ msgstr "Transactions à venir" + +#~ msgid "Update Only Source" +#~ msgstr "Mettre à jour la source uniquement" + +#~ msgid "Update Source and Generated" +#~ msgstr "Mettre à jour la source et les transactions générées" + +#~ msgid "Update Transaction" +#~ msgstr "Mettre à jour la transaction" + +#~ msgid "Upload" +#~ msgstr "Téléverser" + +#~ msgid "View" +#~ msgstr "Voir" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Souhaitez-vous protéger le fichier PDF par un mot de passe ?\n" +#~ "\n" +#~ "En cas de perte du mot de passe le document sera inaccessible." + +#~ msgid "Yes" +#~ msgstr "Oui" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Gérer la devise utilisée par le compte." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Définissez un nouveau mot de passe ou supprimez-en un." + +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "Unlimited" +#~ msgstr "Illimités" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Exporter la vue actuelle" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Rechercher par description" + +#~ msgid "Today's Overview" +#~ msgstr "Vue d’aujourd’hui" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Sélectionner tous les filtres de la vue d’ensemble" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Nouveau groupe (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Basculer la visibilité des groupes" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Sélectionner tous les filtres de groupes" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Désélectionner les filtres de groupes" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Basculer la visibilité des étiquettes" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Sélectionner tous les filtres d’étiquettes" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Désélectionner les filtres d’étiquettes" + +#~ msgid "Calendar" +#~ msgstr "Calendrier" + +#~ msgid "Select Current Month" +#~ msgstr "Sélectionner le mois actuel" + +#~ msgid "Reset To Today" +#~ msgstr "Réinitialiser à aujourd’hui" + +#~ msgid "Today" +#~ msgstr "Aujourd’hui" + +#~ msgid "Select Range" +#~ msgstr "Choisir l’intervalle" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Début" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Fin" + +#~ msgid "Sort From First To Last" +#~ msgstr "Trier du premier au dernier" + +#~ msgid "Sort From Last To First" +#~ msgstr "Trier du dernier au premier" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nouvelle transaction (Ctrl+Maj+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nouveau" + +#~ msgid "Suggestions" +#~ msgstr "Suggestions" + +#~ msgid "Converter" +#~ msgstr "Convertisseur" + +#~ msgid "Loading..." +#~ msgstr "Chargement…" + +#~ msgid "All Accounts" +#~ msgstr "Tous les comptes" + +#~ msgid "Color" +#~ msgstr "Couleur" + +#~ msgid "Delete" +#~ msgstr "Supprimer" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Il s’agit seulement d’un indicateur utile, qui n’affecte pas le " +#~ "fonctionnement de l’application." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Entrez le mot de passe pour vous connecter :" + +#~ msgid "Checking Account Color" +#~ msgstr "Couleur du compte de chèques" + +#~ msgid "Savings Account Color" +#~ msgstr "Couleur du compte d’épargne" + +#~ msgid "Business Account Color" +#~ msgstr "Couleur du compte d’affaires" + +#~ msgid "Use Native Digits" +#~ msgstr "Utiliser des chiffres natifs" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Indique s’il faut utiliser des chiffres natifs de votre langue à la place " +#~ "de chiffres latins." + +#~ msgid "Backup" +#~ msgstr "Sauvegarde" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Dossier de sauvegarde CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Les comptes non cryptés seront automatiquement exportés en fichiers CSV " +#~ "dans ce dossier lors d’une modification." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Vider le dossier de sauvegarde" + +#~ msgid "No Reminders" +#~ msgstr "Aucun rappel" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transférer" + +#~ msgid "New Transaction" +#~ msgstr "Nouvelle transaction" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Afficher / masquer la barre latérale" + +#~ msgid "Make a Copy" +#~ msgstr "Faire une copie" + +#~ msgid "Clear End Date" +#~ msgstr "Effacer la date de fin" + +#~ msgid "Daily" +#~ msgstr "Quotidien" + +#~ msgid "Weekly" +#~ msgstr "Hebdomadaire" + +#~ msgid "Biweekly" +#~ msgstr "Bi-hebdomadaire" + +#~ msgid "Monthly" +#~ msgstr "Mensuel" + +#~ msgid "Quarterly" +#~ msgstr "Trimestriel" + +#~ msgid "Yearly" +#~ msgstr "Annuel" + +#~ msgid "Biyearly" +#~ msgstr "Bi-annuel" + +#~ msgid "Use group color" +#~ msgstr "Utiliser une couleur de groupe" + +#~ msgid "Use unique color" +#~ msgstr "Utiliser une couleur unique" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Entrez un nouveau nom d’étiquette…" + +#~ msgid "Add Tag" +#~ msgstr "Ajouter une étiquette" + +#~ msgid "Extras" +#~ msgstr "Extras" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Champs supplémentaires de la transaction." + +#~ msgid "Enter notes here" +#~ msgstr "Entrez vos notes ici" + +#~ msgid "Edit Transaction" +#~ msgstr "Modifier la transaction" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Un transfert d’argent créera dans ce compte une transaction dépensière " +#~ "avec le montant transféré, et une transaction de revenu dans le compte " +#~ "récipiendaire avec le montant transféré." + +#~ msgid "Select a destination account" +#~ msgstr "Sélectionnez une compte destinataire" + +#~ msgid "Recent Accounts" +#~ msgstr "Comptes récents" + +#~ msgid "Conversion Needed" +#~ msgstr "Conversion nécessaire" + +#~ msgid "Use Custom Rates" +#~ msgstr "Utiliser des taux personnalisés" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Entrer les taux de conversion manuellement" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transférer" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Nouveau" + +#~ msgid "Toggle Graphs" +#~ msgstr "Basculer les graphiques" + +#~ msgid "result" +#~ msgstr "résultat" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "argent;finance;portefeuille;liquide;banque;Nickvision;cash;monnaie;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Gérez plusieurs comptes à la fois, avec une interface en onglets " +#~ "intuitive" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— Filtrez facilement les transactions par type, groupe, ou date" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Répétez facilement des transactions, comme des factures mensuelles" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Transférez de l’argent d’un compte à un autre" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Exportez un compte en fichier CSV et importez un fichier CSV, OFX ou " +#~ "QIF pour importer en masse des transactions dans un compte" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "Veuillez patienter pendant l’importation des transactions…" + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Impossible d’importer les informations depuis le fichier. Type de fichier " +#~ "non pris en charge." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Personnaliser l’interface utilisateur de l’application." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "" +#~ "Personnalisez la manière dont Denaro utilise les paramètres linguistiques." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Personnaliser l’emplacement de sauvegarde pour les comptes Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "Save" +#~ msgstr "Enregistrer" + +#~ msgid "Hide" +#~ msgstr "Masquer" + +#~ msgid "Show" +#~ msgstr "Montrer" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Réinitialiser les filtres de dates" + +#~ msgid "Delete Group?" +#~ msgstr "Supprimer le groupe ?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Supprimer la transaction ?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Paramètres du compte" + +#~ msgid "Version: {0}" +#~ msgstr "Version : {0}" + +#~ msgid "About {0}" +#~ msgstr "À propos de {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributeurs sur GitHub ❤️ https://github.com/NickvisionApps/Denaro/" +#~ "graphs/contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Traducteurs sur Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Virer de l’argent (Ctrl+V)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importer à partir d’un fichier (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtres" + +#~ msgid "Hide Groups" +#~ msgstr "Masquer les groupes" + +#~ msgid "Show Groups" +#~ msgstr "Afficher les groupes" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "{0} transactions importées depuis le fichier." + +#~ msgid "Enter description here" +#~ msgstr "Entrez une description ici" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Compte d’argent (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Gérez plusieurs comptes à la fois, avec une interface à onglets " +#~ "familière\n" +#~ "— Filtrez facilement les transactions par type, groupe, ou date\n" +#~ "— Répétez facilement des transactions mensuelles récurrentes, comme les " +#~ "factures\n" +#~ "— Transférez de l’argent d’un compte à un autre\n" +#~ "— Exportez vos comptes en fichiers de format CSV et importez des fichiers " +#~ "CSV, OFX ou QIF pour ajouter des transactions en masse dans un compte" + +#~ msgid "New Window" +#~ msgstr "Nouvelle fenêtre" + +#~ msgid "Enter decimal separator" +#~ msgstr "Entrer un séparateur de décimales" + +#~ msgid "Enter group separator" +#~ msgstr "Entrer un séparateur de groupes" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transaction ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transactions ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Aucun dossier de sauvegarde" + +#~ msgid "Reset All Filters" +#~ msgstr "Réinitialiser tous les filtres" + +#~ msgid "Sort" +#~ msgstr "Trier" + +#~ msgid "Order By" +#~ msgstr "Ordre" + +#~ msgid "Increasing" +#~ msgstr "Croissant" + +#~ msgid "Decreasing" +#~ msgstr "Décroissant" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Paramètres du compte (Ctrl+.)" + +#~ msgid "Sort By" +#~ msgstr "Trier par" diff --git a/resources/po/gl.po b/resources/po/gl.po new file mode 100644 index 000000000..2425acfd6 --- /dev/null +++ b/resources/po/gl.po @@ -0,0 +1,1251 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-10-20 04:03+0000\n" +"Last-Translator: Nicolás Vieites Sueiro \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.1\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "" + +#: libdenaro/src/models/account.cpp:495 +#, c++-format +msgid "Transfer to {}" +msgstr "" + +#: libdenaro/src/models/account.cpp:512 +#, c++-format +msgid "Transfer from {}" +msgstr "" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} de {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Dentro dunha semana" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Dentro dun mes" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Dentro dunha semana" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Xestione os seus cartos" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Charla en Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Colaboradores no GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Boa tarde!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Boa noite!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Bo día pola mañan!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Nome da conta (existente)" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +msgid "This account cannot be overwritten." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +msgid "The account is already open." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importar dende ficheiro" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportar a ficheiro" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportar a ficheiro" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Axustes da conta" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "Axustes da conta" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Ingresos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Gastos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +msgid "New" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nome da conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipo de conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Corrente" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Empresa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nunca" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Moeda" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separador de decimais" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separador de grupos" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Símbolo da moeda" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Cambiar contrasinal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Importe" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Contrasinal da conta de destino" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Axuda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "Importe" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipo de conta" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +msgid "Off" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Importe" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +msgctxt "Shortcut" +msgid "Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +msgid "About Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Erro" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Pechar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Cambiar contrasinal" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Sen transaccións" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importar dende ficheiro" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repositorio de GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Conta Denaro de Nickvision" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Cancelar" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +msgid "On" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +msgid "Options" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +msgid "Saving" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Importe" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +msgid "No File Selected" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nome da conta (aberta)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Símbolo da moeda (baleiro)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nome (baleiro)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separador de decimais (baleiro)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separador de decimais (non válido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separador de grupos (non válido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Símbolo da moeda (non válido)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Conta de destino" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Borrar transacción" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +msgid "Default Transfer Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Borrar grupo" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" + +#~ msgid "(Copy)" +#~ msgstr "(Copia)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} etiqueta" +#~ msgstr[1] "{0} etiquetas" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transacción" +#~ msgstr[1] "{0} transaccións" + +#~ msgid "Add" +#~ msgstr "Engadir" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "" +#~ "Engadir unha nova transacción ou importar transaccións dende un ficheiro." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Protexer o PDF con contrasinal?" + +#~ msgid "All files" +#~ msgstr "Todos os ficheiros" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Importe (non válido)" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Estás seguro de que queres borrar este grupo?\n" +#~ "Esta acción é irreversible." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Estás seguro de que queres borrar esta transacción?\n" +#~ "Esta acción é irreversible." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Non foi posible acceder ao cartafol seleccionado, comprobe os permisos de " +#~ "Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Código da moeda" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Código da moeda (baleiro)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Delete Existing" +#~ msgstr "Borrar existentes" + +#~ msgid "Delete Only Source" +#~ msgstr "Borrar só orixinal" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Borrar orixinal e xerado" + +#~ msgid "Description" +#~ msgstr "Descrición" + +#~ msgid "Description (Empty)" +#~ msgstr "Descrición (baleiro)" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Conta de destino (non válida)" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Contrasinal da conta de destino (non válida)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Contrasinal da conta de destino (requirido)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Desvincular existentes" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Conta exportada a ficheiro satisfactoriamente." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Xerado: {0}" + +#~ msgid "Group" +#~ msgstr "Grupo" + +#~ msgid "Group Name" +#~ msgstr "Nome do grupo" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Importar dende conta" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Importada {0} transacción dende o ficheiro." +#~ msgstr[1] "Importadas {0} transaccións dende o ficheiro." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Name (Exists)" +#~ msgstr "Nome (existente)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Non" + +#~ msgid "No End Date" +#~ msgstr "Sen data final" + +#~ msgid "No Transactions Found" +#~ msgstr "Non se atoparon transaccións" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Ningunha transacción coincide cos filtro especificados." + +#~ msgid "Notes" +#~ msgstr "Apuntamentos" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nada que importar do ficheiro." diff --git a/resources/po/hi.po b/resources/po/hi.po new file mode 100644 index 000000000..e9d9c0ff3 --- /dev/null +++ b/resources/po/hi.po @@ -0,0 +1,1737 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2024-03-29 13:01+0000\n" +"Last-Translator: Scrambled777 \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "असमूहीकृत" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "समूह के बिना लेन-देन" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "{0} पर स्थानांतरण" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "{0} से स्थानांतरण" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} से {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "कल" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "अब से एक सप्ताह बाद" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "अब से एक महीना" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "अब से दो महीने बाद" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "अब से दो महीने बाद" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "आपके सिस्टम ने बताया कि आपकी मुद्रा है" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "खाते में लॉग इन करने में असमर्थ. प्रदान किया गया पासवर्ड अमान्य है।" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "अपने व्यक्तिगत वित्त का प्रबंधन करें" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix Chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "GitHub पर योगदानकर्ता ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "फ्योडोर सोबोलेव" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "डेविड लैपशिन" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Scrambled777 " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "शुभ प्रभात!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "शुभ प्रभात!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "शुभ दोपहर!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "शुभ संध्या!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "शुभ दिन!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "यह खाता पहले ही खोला जा चुका है।" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "यह खाता पहले ही खोला जा चुका है।" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "यह खाता पहले ही खोला जा चुका है।" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "फाइल से आयात करें" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "फाइल में निर्यात करें" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "फाइल में निर्यात करें" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "अवलोकन" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "धनराशि ट्रांसफ़र करें" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "खाता सेटिंग" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "Account Settings" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "कुल" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "आय" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "लागत/खर्च" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "अनुस्मारक" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "समूह" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "नया समूह" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "नया" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "लेन-देन" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "कल्पना" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "अगला" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "खाता" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "खाता नाम" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "खाते का प्रकार" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "चेकिंग" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "जमा पूंजी" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "व्यवसाय" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "डिफ़ॉल्ट लेनदेन प्रकार" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "लेन-देन अनुस्मारक सीमा" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "कभी नहीं" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "एक दिन पहले" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "एक सप्ताह पहले" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "एक महीना पहले" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "दो महीने पहले" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "मुद्रा" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "कस्टम मुद्रा का प्रयोग करें" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "दशमलव विभाजक" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "समूह विभाजक" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "कोई नहीं" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "दशमलव अंक" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "दो" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "तीन" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "चार" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "पाँच" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "छह" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "राशि प्रदर्शन शैली" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "मुद्रा चिन्ह" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "पासवर्ड" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "यदि पासवर्ड खो गया है, तो फाइल को पुनर्स्थापित करने का कोई तरीका नहीं है!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "नया पासवर्ड" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "पासवर्ड की पुष्टि कीजिये" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "पासवर्ड बदलें" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "मुद्राएँ बदलें" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "स्विच" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "स्रोत" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "परिणाम" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "राशि" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "परिणाम राशि कॉपी करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "पीछे" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "नया खाता" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "अपने खाते से अधिकतम लाभ प्राप्त करने के लिए इस विज़ार्ड का उपयोग करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "आइए शुरू करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "स्टोरेज स्थान" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "खाता पासवर्ड (वैकल्पिक)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "फोल्डर" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "फोल्डर का चयन करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "मौजूदा खातों को अधिलेखित करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "खाता विकल्प" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "खाते का पैसा" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "मौजूदा जानकारी आयात करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"मौजूदा जानकारी को नए खाते में आयात करने के लिए उपयोग करने के लिए एक वैध फाइल अपलोड करें।" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "फाइल आयात करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "फाइल का चयन करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "फाइल साफ़ करें" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "बनाएं" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "प्राथमिकताएं" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "कीबोर्ड शॉर्टकट" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "सहायता" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Denaro के बारे में" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "खाता मेन्यू" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "हाल ही के" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "नया खाता (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "खाता खोलें (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "खोलें" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "कोई हालिया खाता नहीं" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "हटाएँ" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "मुख्य मेन्यू" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "मुद्रा परिवर्तक" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "खाता" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "डैशबोर्ड" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"आरंभ करने के लिए एक खाता बनाएं या खोलें। आप अपने फाइल ब्राउज़र से किसी फाइल को ऐप में " +"खींच भी सकते हैं।" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "खाते का प्रकार" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "उपयोगकर्ता इंटरफ़ेस" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "थीम" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "हल्का" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "गहरा" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "सिस्टम" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "रंग" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Denaro द्वारा उपयोग किए गए रंगों को अनुकूलित करें।" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "लेन-देन डिफ़ॉल्ट रंग" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "इस सेटिंग में बदलाव केवल नए जोड़े गए लेनदेन पर लागू किया जाएगा।" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "डिफ़ॉल्ट रंग स्थानांतरित करें" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "इस सेटिंग में बदलाव केवल नए स्थानांतरणों पर लागू किया जाएगा।" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "समूह डिफ़ॉल्ट रंग" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "इस सेटिंग में बदलाव केवल नए समूहों पर लागू किया जाएगा।" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "स्थानीय" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "दशमलव विभाजक डालें" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"सेट करें कि कौन सी कुंजी दबाने पर स्थान का दशमलव विभाजक राशि फ़ील्ड में डाला जाएगा।" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "बंद" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "केवल नमपाद अवधि" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "अवधि और अल्पविराम" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "खाता" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "खाता खोलें" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "एप्लिकेशन" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "एप्लिकेशन" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "छोड़ें" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "त्रुटि" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"मुद्रा डेटा लोड करने में असमर्थ. कृपया पुन: प्रयास करें। यदि त्रुटि अभी भी बनी रहती है, तो " +"बग की रिपोर्ट करें।" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "बंद करें" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "परिणाम को क्लिपबोर्ड पर कॉपी किया गया।" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "पासवर्ड की मजबूती" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "पासवर्ड बदलें" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "पासवर्ड की मजबूती" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "कोई लेनदेन मौजूद नहीं" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "समूह में परिवर्तन करें" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "फाइल आयात करें" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub रेपो" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro खाता" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Enter password here" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "रद्द" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "अनलॉक" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "स्टोरेज स्थान" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "यहां नोट्स दर्ज करें" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "खोलें" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "कार्रवाई" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "जमा पूंजी" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Enter symbol here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Enter code here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "राशि प्रदर्शन शैली" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "फाइल आयात करें" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "कोई खाता नहीं चुना गया है" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "खाता नाम (खुला हुआ)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "मुद्रा चिह्न (खाली)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "नाम (खाली)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "दशमलव विभाजक (खाली)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "दशमलव विभाजक (अमान्य)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "समूह विभाजक (अमान्य)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "मुद्रा चिह्न (अमान्य)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "सभी जानकारी निर्यात करें" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"आरंभ करने के लिए एक खाता बनाएं या खोलें। आप अपने फाइल ब्राउज़र से किसी फाइल को ऐप में " +"खींच भी सकते हैं।" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "खोले गए खाते को अधिलेखित करने में असमर्थ।" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "परिणाम को क्लिपबोर्ड पर कॉपी किया गया।" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "खाता बंद करें" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "डिफ़ॉल्ट लेनदेन प्रकार" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "डिफ़ॉल्ट रंग स्थानांतरित करें" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "समूह डिफ़ॉल्ट रंग" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "ठीक (OK)" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "परिणाम" + +#~ msgid "(Copy)" +#~ msgstr "(प्रतिलिपि)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} टैग" +#~ msgstr[1] "{0} टैग्स" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} लेन-देन" +#~ msgstr[1] "{0} लेनदेन" + +#~ msgid "Account Name (Exists)" +#~ msgstr "खाता नाम (मौजूद)" + +#~ msgid "Add" +#~ msgstr "जोड़ें" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "एक नया लेनदेन जोड़ें या किसी फाइल से लेनदेन आयात करें।" + +#~ msgid "Add Password To PDF?" +#~ msgstr "PDF में पासवर्ड जोड़ें?" + +#~ msgid "All files" +#~ msgstr "सभी फाइलें" + +#~ msgid "Amount (Invalid)" +#~ msgstr "धनराशि (अवैध)" + +#~ msgid "Apply" +#~ msgstr "लागू करें" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "क्या आप वाकई इस समूह को हटाना चाहते हैं?\n" +#~ "यह क्रिया अपरिवर्तनीय है।" + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "क्या आप वाकई इस लेनदेन को हटाना चाहते हैं?\n" +#~ "यह क्रिया अपरिवर्तनीय है।" + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "चयनित फोल्डर तक नहीं पहुँच सकते, Flatpak अनुमतियाँ जाँचें।" + +#~ msgid "Currency Code" +#~ msgstr "मुद्रा कोड" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "मुद्रा कोड (खाली)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "तारीख" + +#~ msgid "Delete Existing" +#~ msgstr "मौजूदा हटाएं" + +#~ msgid "Delete Group" +#~ msgstr "समूह हटाएँ" + +#~ msgid "Delete Only Source" +#~ msgstr "केवल स्रोत हटाएँ" + +#~ msgid "Delete Source and Generated" +#~ msgstr "स्रोत हटाएं और जेनरेट करें" + +#~ msgid "Delete Transaction" +#~ msgstr "लेन-देन हटाएँ" + +#~ msgid "Description" +#~ msgstr "विवरण" + +#~ msgid "Description (Empty)" +#~ msgstr "विवरण (खाली)" + +#~ msgid "Destination Account" +#~ msgstr "गंतव्य खाता" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "गंतव्य खाता (अमान्य)" + +#~ msgid "Destination Account Password" +#~ msgstr "गंतव्य खाता पासवर्ड" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "गंतव्य खाता पासवर्ड (अमान्य)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "गंतव्य खाता पासवर्ड (आवश्यक)" + +#~ msgid "Disassociate Existing" +#~ msgstr "मौजूदा को अलग करना" + +#~ msgid "Exported account to file successfully." +#~ msgstr "सफलतापूर्वक फाइल करने के लिए निर्यात किया गया खाता।" + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "उत्पन्न: {0}" + +#~ msgid "Group" +#~ msgstr "समूह" + +#~ msgid "Group Name" +#~ msgstr "समूह नाम" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Import from Account" +#~ msgstr "खाते से आयात करें" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "फाइल से आयातित {0} लेनदेन।" +#~ msgstr[1] "फाइल से आयातित {0} लेनदेन।" + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "नाम" + +#~ msgid "Name (Exists)" +#~ msgstr "नाम (मौजूद)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "निकोलस लोगोज़ो" + +#~ msgid "No" +#~ msgstr "नहीं" + +#~ msgid "No End Date" +#~ msgstr "कोई अंतिम तिथि नहीं" + +#~ msgid "No Transactions Found" +#~ msgstr "कोई लेनदेन मौजूद नहीं" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "कोई लेनदेन दिए गए फ़िल्टर से मेल नहीं खाता।" + +#~ msgid "Notes" +#~ msgstr "नोट्स" + +#~ msgid "Nothing to import from the file." +#~ msgstr "फाइल से आयात करने के लिए कुछ भी नहीं।" + +#~ msgid "Page {0}" +#~ msgstr "पृष्ठ {0}" + +#~ msgid "PDF Password" +#~ msgstr "PDF पासवर्ड" + +#~ msgid "Receipt" +#~ msgstr "रसीद" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "रसीद (फाइल अप्राप्य)" + +#~ msgid "Receipts" +#~ msgstr "रसीदें" + +#~ msgid "Repeat End Date" +#~ msgstr "समाप्ति तिथि दोहराएँ" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "अंतिम तिथि दोहराएँ (अमान्य)" + +#~ msgid "Repeat Interval" +#~ msgstr "अंतराल दोहराएँ" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "दोहराव अंतराल बदला गया" + +#~ msgid "Select Account" +#~ msgstr "खाता चुनें" + +#~ msgid "Select Backup Folder" +#~ msgstr "बैकअप फोल्डर का चयन करें" + +#~ msgid "Sort By Amount" +#~ msgstr "राशि के अनुसार क्रमबद्ध करें" + +#~ msgid "Sort By Date" +#~ msgstr "दिनांक के अनुसार क्रमबद्ध करें" + +#~ msgid "Sort By Id" +#~ msgstr "Id के अनुसार क्रमबद्ध करें" + +#~ msgid "Tags" +#~ msgstr "टैग्स" + +#~ msgid "The password of the account was changed." +#~ msgstr "खाते का पासवर्ड बदल दिया गया था।" + +#~ msgid "The password of the account was removed." +#~ msgstr "अकाउंट का पासवर्ड हटा दिया गया।" + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "इस संवाद को बंद करने पर पासवर्ड हटा दिया जाएगा।" + +#~ msgid "The passwords do not match." +#~ msgstr "पासवर्ड्स मेल नहीं खा रहे।" + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "दोहराव अंतराल बदल दिया गया था.\n" +#~ "आप मौजूदा जेनरेट किए गए लेनदेन के साथ क्या करना चाहेंगे?\n" +#~ "\n" +#~ "नए दोहराव वाले लेनदेन नए अंतराल के आधार पर उत्पन्न होंगे।" + +#~ msgid "This account has no money available to transfer." +#~ msgstr "इस खाते में ट्रांसफ़र करने के लिए कोई धनराशि उपलब्ध नहीं है।" + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "यह लेन-देन एक स्रोत दोहराव लेन-देन है।\n" +#~ "आप बार-बार होने वाले लेन-देन के साथ क्या करना चाहेंगे?\n" +#~ "\n" +#~ "केवल स्रोत लेनदेन को हटाने से व्यक्ति को अनुमति मिलेगी\n" +#~ "उत्पन्न लेनदेन को संशोधित किया जाना चाहिए।" + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "यह लेन-देन एक स्रोत दोहराव लेन-देन है।\n" +#~ "आप बार-बार होने वाले लेन-देन के साथ क्या करना चाहेंगे?\n" +#~ "\n" +#~ "केवल स्रोत लेनदेन को अद्यतन करने से असंबद्ध हो जाएगा\n" +#~ "स्रोत से उत्पन्न लेनदेन।" + +#~ msgid "Tobias Bernard" +#~ msgstr "टोबियास बर्नार्ड" + +#~ msgid "Transaction" +#~ msgstr "लेन-देन" + +#~ msgid "Type" +#~ msgstr "प्रकार" + +#~ msgid "Unable to export account to file." +#~ msgstr "खाते को फाइल में निर्यात करने में असमर्थ।" + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "फाइल से जानकारी आयात करने में असमर्थ. कृपया सुनिश्चित करें कि ऐप के पास फाइल तक पहुंचने " +#~ "की अनुमति है और पुनः प्रयास करें।" + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "फाइल से लेनदेन आयात करने में असमर्थ।" + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "खाता खोलने में असमर्थ. कृपया सुनिश्चित करें कि ऐप के पास फाइल तक पहुंचने की अनुमति है और " +#~ "पुनः प्रयास करें।" + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "किसी मौजूदा खाते को अधिलेखित करने में असमर्थ।" + +#~ msgid "Untagged" +#~ msgstr "अनटैग किया गया" + +#~ msgid "Upcoming transactions" +#~ msgstr "आगामी लेनदेन" + +#~ msgid "Update Only Source" +#~ msgstr "केवल स्रोत अपडेट करें" + +#~ msgid "Update Source and Generated" +#~ msgstr "अपडेट स्रोत और जनरेट किया गया" + +#~ msgid "Update Transaction" +#~ msgstr "लेन-देन अपडेट करें" + +#~ msgid "Upload" +#~ msgstr "अपलोड करें" + +#~ msgid "View" +#~ msgstr "देखें" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "क्या आप PDF फाइल को पासवर्ड से सुरक्षित करना चाहेंगे?\n" +#~ "\n" +#~ "यदि पासवर्ड खो गया है, तो PDF अप्राप्य हो जाएगा।" + +#~ msgid "Yes" +#~ msgstr "हाँ" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "खाते द्वारा उपयोग की जाने वाली मुद्रा का प्रबंधन करें।" + +#~ msgid "Set a new password or remove one." +#~ msgstr "नया पासवर्ड सेट करें या एक हटा दें।" + +#~ msgid "Other" +#~ msgstr "अन्य" + +#~ msgid "Unlimited" +#~ msgstr "असीमित" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "वर्तमान दृश्य निर्यात करें" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "विवरण के आधार पर खोजें" + +#~ msgid "Today's Overview" +#~ msgstr "आज का अवलोकन" + +#~ msgid "Select All Overview Filters" +#~ msgstr "सभी अवलोकन फ़िल्टर चुनें" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "नया समूह (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "समूह दृश्यता टॉगल करें" + +#~ msgid "Select All Groups Filters" +#~ msgstr "सभी समूह फ़िल्टर चुनें" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "समूह फ़िल्टर अचयनित करें" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "टैग दृश्यता टॉगल करें" + +#~ msgid "Select All Tags Filters" +#~ msgstr "सभी टैग फ़िल्टर चुनें" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "टैग फ़िल्टर अचयनित करें" + +#~ msgid "Calendar" +#~ msgstr "कैलेंडर" + +#~ msgid "Select Current Month" +#~ msgstr "चालू माह का चयन करें" + +#~ msgid "Reset To Today" +#~ msgstr "आज पर रीसेट करें" + +#~ msgid "Today" +#~ msgstr "आज" + +#~ msgid "Select Range" +#~ msgstr "दायरे का चयन करें" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "प्रारंभ" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "समाप्त" + +#~ msgid "Sort From First To Last" +#~ msgstr "प्रथम से अंतिम तक क्रमबद्ध करें" + +#~ msgid "Sort From Last To First" +#~ msgstr "अंतिम से प्रथम तक क्रमबद्ध करें" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "नया लेनदेन (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "नया" + +#~ msgid "Suggestions" +#~ msgstr "सुझाव" + +#~ msgid "Converter" +#~ msgstr "परिवर्तक" + +#~ msgid "Loading..." +#~ msgstr "लोड हो रहा है…" + +#~ msgid "All Accounts" +#~ msgstr "सभी खाते" + +#~ msgid "Color" +#~ msgstr "रंग" + +#~ msgid "Delete" +#~ msgstr "हटाएँ" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "यह केवल एक उपयोगी लेबल है जो ऐप के काम करने के तरीके को प्रभावित नहीं करता है।" + +#~ msgid "Enter Password To Login:" +#~ msgstr "लॉगिन करने के लिए पासवर्ड दर्ज करें:" + +#~ msgid "Checking Account Color" +#~ msgstr "खाते का रंग जांचा जा रहा है" + +#~ msgid "Savings Account Color" +#~ msgstr "बचत खाते का रंग" + +#~ msgid "Business Account Color" +#~ msgstr "बिजनेस अकाउंट का रंग" + +#~ msgid "Use Native Digits" +#~ msgstr "मूल अंकों का प्रयोग करें" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "क्या लैटिन अंकों के बजाय उन अंकों का उपयोग करना है जो आपके स्थान के लिए मूल हैं।" + +#~ msgid "Backup" +#~ msgstr "बैकअप" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV बैकअप फोल्डर" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "परिवर्तन किए जाने पर अनएन्क्रिप्टेड खाते स्वचालित रूप से इस फोल्डर में CSV फाइलों के रूप " +#~ "में निर्यात हो जाएंगे।" + +#~ msgid "Clear Backup Folder" +#~ msgstr "बैकअप फोल्डर साफ़ करें" + +#~ msgid "No Reminders" +#~ msgstr "कोई अनुस्मारक नहीं" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "स्थानांतरण" + +#~ msgid "New Transaction" +#~ msgstr "नई लेनदेन" + +#~ msgid "Toggle Sidebar" +#~ msgstr "बाजू पट्टी को बंद करें/खोलें" + +#~ msgid "Make a Copy" +#~ msgstr "एक प्रति बनाएँ" + +#~ msgid "Clear End Date" +#~ msgstr "अंतिम तिथि साफ़ करें" + +#~ msgid "Daily" +#~ msgstr "दैनिक" + +#~ msgid "Weekly" +#~ msgstr "साप्ताहिक" + +#~ msgid "Biweekly" +#~ msgstr "द्विसाप्ताहिक" + +#~ msgid "Monthly" +#~ msgstr "मासिक" + +#~ msgid "Quarterly" +#~ msgstr "त्रैमासिक" + +#~ msgid "Yearly" +#~ msgstr "वार्षिक" + +#~ msgid "Biyearly" +#~ msgstr "द्विवार्षिक" + +#~ msgid "Use group color" +#~ msgstr "समूह रंग का प्रयोग करें" + +#~ msgid "Use unique color" +#~ msgstr "अनोखे रंग का प्रयोग करें" + +#~ msgid "Enter a new tag name..." +#~ msgstr "नया टैग नाम दर्ज करें…" + +#~ msgid "Add Tag" +#~ msgstr "टैग जोड़ें" + +#~ msgid "Extras" +#~ msgstr "अतिरिक्त" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "लेन-देन के अतिरिक्त फ़ील्ड प्रबंधित करें।" + +#~ msgid "Edit Transaction" +#~ msgstr "लेनदेन में परिवर्तन करें" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "धनराशि ट्रांसफ़र करने से इस खाते में बताई गई राशि का खर्च लेनदेन दिखाया जाएगा और जिस " +#~ "खाते में ट्रांसफ़र करने के लिए कहा गया है उस में दी गई राशि का एक आय लेनदेन दिखाया " +#~ "जाएगा।" + +#~ msgid "Select a destination account" +#~ msgstr "एक गंतव्य खाता चुनें" + +#~ msgid "Recent Accounts" +#~ msgstr "हाल ही में उपयोग किए गए खाते" + +#~ msgid "Conversion Needed" +#~ msgstr "रूपांतरण की आवश्यकता" + +#~ msgid "Use Custom Rates" +#~ msgstr "कस्टम दरों का प्रयोग करें" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "रूपांतरण दरें मैन्युअल रूप से दर्ज करें" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "स्थानांतरण" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "नया" + +#~ msgid "Toggle Graphs" +#~ msgstr "ग्राफ़ टॉगल करें" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Result" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "money;finance;wallet;cash;bank;GTK;Nickvision;" + +#~ msgid "Customize the application's user interface." +#~ msgstr "एप्लिकेशन के इंटरफ़ेस को अनुकूलित करें।" + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Customize how Denaro uses locale settings." + +#, fuzzy +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "एप्लिकेशन के इंटरफ़ेस को अनुकूलित करें।" + +#~ msgid "Show" +#~ msgstr "Show" + +#~ msgid "Reset Dates Filters" +#~ msgstr "तिथि फ़िल्टर रीसेट करें" + +#~ msgid "Delete Group?" +#~ msgstr "समूह हटाएँ?" + +#~ msgid "Delete Transaction?" +#~ msgstr "लेनदेन हटाएँ?" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "मनी खाता (*.nmoney)" + +#~ msgid "New Window" +#~ msgstr "New Window" diff --git a/resources/po/hr.po b/resources/po/hr.po new file mode 100644 index 000000000..2294d0668 --- /dev/null +++ b/resources/po/hr.po @@ -0,0 +1,1877 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-09-26 13:22+0000\n" +"Last-Translator: Milo Ivir \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.1-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Negrupirano" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transakcije bez grupe" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transferiraj na {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transferiraj sa {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} od {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Sutra" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Za tjedan dana" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Za mjesec dana" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Za dva mjeseca" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Za dva mjeseca" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Tvoj sustav je prijavio da je tvoja valuta" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Prijava na račun nije moguća. Navedena lozinka je neispravna." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Upravljaj osobnim financijama" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Chat na Matrixu" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Doprinositelji na GitHub-u ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Milo Ivir " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Dobro jutro!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Dobro jutro!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Dobar dan!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Dobra večer!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Dobar dan!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Ovaj je račun već otvoren." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Ovaj je račun već otvoren." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Ovaj je račun već otvoren." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Uvezi iz datoteke" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Izvezi u datoteku" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Izvezi u datoteku" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Pregled" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Transferiraj novac" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Postavke računa" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Postavke" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Ukupno" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Prihod" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Rashod" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Podsjetnici" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupe" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Nova grupa" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nova" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transakcije" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Vizualiziraj" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Dalje" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Račun" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Ime računa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Vrsta računa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Žiro račun" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Štedni račun" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Poslovni" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Standardna vrsta transakcije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Prag podsjetnika za transakcije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nikada" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Jedan dan prije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Jedan tjedan prije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Jedan mjesec prije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Dva mjeseca prije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Valuta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Koristi prilagođenu valutu" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Decimalni znak" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Znak za odvajanja grupa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Nijedan" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Broj decimala" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Dvije" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Tri" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Četiri" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Pet" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Šest" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Stil prikaza iznosa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Znak valute" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Lozinka" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Ako izgubiš lozinku, datoteka se ne može obnoviti!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nova lozinka" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Potvrdi lozinku" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Promijeni lozinku" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Zamijeni valutu" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Zamijeni" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Izvor" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Rezultat" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Iznos" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Kopiraj iznos rezultata" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Natrag" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Novi račun" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Koristi ovog čarobnjaka za maksimalno iskorištavanje tvog računa" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Započnimo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Mjesto spremišta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Lozinka za račun (opcionalno)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Mapa" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Odaberi mapu" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Prepiši postojeće račune" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Opcije računa" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Valuta računa" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Uvazi postojeće informacije" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "Prenesi ispravnu datoteku za uvoz postojećih informacija u novi račun." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Uvezi datoteku" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Odaberi datoteku" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Izbriši datoteku" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Stvori" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Osobitosti" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Tipkovni prečaci" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Pomoć" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Denaro informacije" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Izbornik računa" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Nedavno korišteni" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Novi račun (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Otvori račun (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Otvori" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Nema nedavno korištenih računa" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Ukloni" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Glavni izbornik" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Početna stranica" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Konverter valuta" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Računi" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Pregledna ploča" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Započni stvaranjem ili otvarenjem računa. Također možeš povući datoteku u " +"program iz preglednika datoteka." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Vrsta računa" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Korisničko sučelje" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Svijetla" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Tamna" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Sustav" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Boje" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Prilagodi boje za Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Standardna boja transakcija" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Promjena ove postavke primijenit će se samo na novo dodane transakcije." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Standardna boja transfera" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Promjena ove postavke primijenit će se samo na nove transfere." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Standardna boja grupa" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Promjena u ovoj postavki će se primijeniti samo na nove grupe." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Jezično područje" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Umetni decimalni znak" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Odredi tipke za umetanje decimalnog znaka jezičnog područja u polju iznosa." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Isključeno" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Samo točka numeričke tipkovnice" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Točka i zarez" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Račun" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Otvori račun" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Program" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Program" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Zatvori program" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Greška" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Nije moguće učitati podatke o valuti. Pokušaj ponovo. Ako to ne pomogne " +"prijavi grešku." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Zatvori" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Rezultat je kopiran u međuspremnik." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Kvaliteta lozinke" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Promijeni lozinku" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Kvaliteta lozinke" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Nema transakcija" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Uredi grupu" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Uvezi datoteku" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub repozitorij" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro račun" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Ovdje upiši lozinku" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Odustani" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Otključaj" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Mjesto spremišta" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Ovdje upiši ime" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Otvori" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Radnje" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Štedni račun" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Ovdje upiši znak" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Ovdje upiši kôd" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Stil prikaza iznosa" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Uvezi datoteku" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Nijedan račun nije odabran" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Ime računa (otvoren)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Znak valute (prazno)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Ime (prazno)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Decimalni znak (prazno)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Decimalni znak (neispravno)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Znak za odvajanja grupa (neispravno)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Znak valute (neispravno)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Izvezi sve informacije" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Dnevnik promjena" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Prijavi grešku" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Rasprave" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Zasluge" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Započni stvaranjem ili otvarenjem računa. Također možeš povući datoteku u " +"program iz preglednika datoteka." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Nije moguće prepisati otvoreni račun." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Rezultat je kopiran u međuspremnik." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Zatvori račun" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Standardna vrsta transakcije" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Standardna boja transfera" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Standardna boja grupa" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Ovdje upiši iznos" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "U redu" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Rezultat" + +#~ msgid "(Copy)" +#~ msgstr "(kopija)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} oznaka" +#~ msgstr[1] "{0} oznake" +#~ msgstr[2] "{0} oznaka" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transakcija" +#~ msgstr[1] "{0} transakcije" +#~ msgstr[2] "{0} transakcija" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Ime računa (postoji)" + +#~ msgid "Add" +#~ msgstr "Add" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Dodaj novu transakciju ili uvezi transakciju iz datoteke." + +#~ msgid "Add Password To PDF?" +#~ msgstr "PDF-u dodati lozinku?" + +#~ msgid "All files" +#~ msgstr "Sve datoteke" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Iznos (neispravno)" + +#~ msgid "Apply" +#~ msgstr "Primijeni" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Stvarno želiš izbrisati ovu grupu?\n" +#~ "Ovo je nepovratna radnja." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Stvarno želiš izbrisati ovu transakciju?\n" +#~ "Ovo je nepovratna radnja." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Nije moguće pristupiti odabranoj mapi, provjeri dozvole za Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Kôd valute" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Kôd valute (prazno)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Datum" + +#~ msgid "Delete Existing" +#~ msgstr "Izbriši potojeće" + +#~ msgid "Delete Group" +#~ msgstr "Izbriši grupu" + +#~ msgid "Delete Only Source" +#~ msgstr "Izbriši samo izvor" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Izbriši izvor i generirane" + +#~ msgid "Delete Transaction" +#~ msgstr "Izbriši transakciju" + +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgid "Description (Empty)" +#~ msgstr "Opis (prazan)" + +#~ msgid "Destination Account" +#~ msgstr "Odredišni račun" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Odredišni račun (neispravno)" + +#~ msgid "Destination Account Password" +#~ msgstr "Lozinka za odredišni račun" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Lozinka za odredišni račun (neispravno)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Lozinka za odredišni račun (obavezno)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Odspoji postojeće" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Račun je uspješno izvezen u datoteku." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Stvoreno: {0}" + +#~ msgid "Group" +#~ msgstr "Grupa" + +#~ msgid "Group Name" +#~ msgstr "Ime grupe" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Uvezi iz računa" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Uvezena je {0} transakcija iz datoteke." +#~ msgstr[1] "Uvezene su {0} transakcije iz datoteke." +#~ msgstr[2] "Uvezeno je {0} transakcija iz datoteke." + +#~ msgid "N/A" +#~ msgstr "--" + +#~ msgid "Name" +#~ msgstr "Ime" + +#~ msgid "Name (Exists)" +#~ msgstr "Ime (postoji)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Ne" + +#~ msgid "No End Date" +#~ msgstr "Bez krajnjeg datuma" + +#~ msgid "No Transactions Found" +#~ msgstr "Nije pronađena nijedna transakcija" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Nijedna transakcija ne odgovora zadanim filtrima." + +#~ msgid "Notes" +#~ msgstr "Bilješke" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nema ničega što bi se moglo uvesti iz datoteke." + +#~ msgid "Page {0}" +#~ msgstr "{0}. stranica" + +#~ msgid "PDF Password" +#~ msgstr "PDF lozinka" + +#~ msgid "Receipt" +#~ msgstr "Priznanica" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Priznanica (datoteka nedostupna)" + +#~ msgid "Receipts" +#~ msgstr "Priznanice" + +#~ msgid "Repeat End Date" +#~ msgstr "Krajnji datum ponavljanja" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Krajnji datum ponavljanja (neispravno)" + +#~ msgid "Repeat Interval" +#~ msgstr "Interval ponavljanja" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Interval ponavljanja promijenjen" + +#~ msgid "Select Account" +#~ msgstr "Odaberi račun" + +#~ msgid "Select Backup Folder" +#~ msgstr "Odaberi mapu sigurnosne kopije" + +#~ msgid "Sort By Amount" +#~ msgstr "Razvrstaj po iznosu" + +#~ msgid "Sort By Date" +#~ msgstr "Razvrstaj po datumu" + +#~ msgid "Sort By Id" +#~ msgstr "Razvrstaj po ID-u" + +#~ msgid "Tags" +#~ msgstr "Oznake" + +#~ msgid "The password of the account was changed." +#~ msgstr "Lozinka računa je promijenjena." + +#~ msgid "The password of the account was removed." +#~ msgstr "Lozinka računa je uklonjena." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Lozinka će se ukloniti nakon zatvaranja dijaloga." + +#~ msgid "The passwords do not match." +#~ msgstr "Lozinke se ne poklapaju." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Interval ponavljanje je promijenjen.\n" +#~ "Što želiš učiniti s postojećim generiranim transakcijama?\n" +#~ "\n" +#~ "Nove ponovljajuće transakcije generirat će se na temelju novog intervala." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Na ovom računu nema novca za transferiranje." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Ova transakcija je izvorna ponavljajuća transakcija.\n" +#~ "Što želiš učiniti s ponovljajućim transakcijama?\n" +#~ "\n" +#~ "Brisanje samo izvorne transakcije omogućit će mijenjanje\n" +#~ "pojedinačno generiranih transakcija." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Ova transakcija je izvorna ponavljajuća transakcija.\n" +#~ "Što želiš učiniti s ponovljajućim transakcijama?\n" +#~ "\n" +#~ "Aktualiziranje samo izvorne transakcije će odspojiti\n" +#~ "iz izvora generirane transakcije." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transakcija" + +#~ msgid "Type" +#~ msgstr "Vrsta" + +#~ msgid "Unable to export account to file." +#~ msgstr "Nije moguće izvesti račun u datoteku." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Nije moguće uvesti podatke iz datoteke. Provjeri ima li aplikacija " +#~ "dozvole za pristup datoteci i pokušaj ponono." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Nije moguće uvesti transakcije iz datoteke." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Nije moguće otvoriti račun. Provjeri ima li aplikacija dozvole za pristup " +#~ "datoteci i pokušaj ponono." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Nije moguće prepisati postojeći račun." + +#~ msgid "Untagged" +#~ msgstr "Neoznačeno" + +#~ msgid "Upcoming transactions" +#~ msgstr "Nadolazeće transakcije" + +#~ msgid "Update Only Source" +#~ msgstr "Aktualiziraj samo izvornu transakciju" + +#~ msgid "Update Source and Generated" +#~ msgstr "Aktualiziraj izvor i generirane" + +#~ msgid "Update Transaction" +#~ msgstr "Aktualiziraj transakciju" + +#~ msgid "Upload" +#~ msgstr "Prenesi" + +#~ msgid "View" +#~ msgstr "Prikaz" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Želiš li PDF datoteku zaštititi lozinkom?\n" +#~ "\n" +#~ "Ako se lozinka izgubi, PDF neće biti dostupan." + +#~ msgid "Yes" +#~ msgstr "Da" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Upravljaj valutom računa." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Postavi novu ili ukloni jednu lozinku." + +#~ msgid "Other" +#~ msgstr "Drugi" + +#~ msgid "Unlimited" +#~ msgstr "Neograničeno" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Izvezi trenutačni prikaz" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Pretraži po opisu" + +#~ msgid "Today's Overview" +#~ msgstr "Pregled za danas" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Odaberi sve filtre pregleda" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Nova grupa (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Uključi/isključi vidljivost grupa" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Odaberi sve filtre grupa" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Odznači sve filtre grupa" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Uključi/isključi vidljivost oznaka" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Odabri sve filtre oznaka" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Odznači filtre grupa" + +#~ msgid "Calendar" +#~ msgstr "Kalendar" + +#~ msgid "Select Current Month" +#~ msgstr "Odaberi trenutačni mjesec" + +#~ msgid "Reset To Today" +#~ msgstr "Obnovi na danas" + +#~ msgid "Today" +#~ msgstr "Danas" + +#~ msgid "Select Range" +#~ msgstr "Odaberi raspon" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Početak" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Kraj" + +#~ msgid "Sort From First To Last" +#~ msgstr "Razvrstaj od prve prema zadnjoj" + +#~ msgid "Sort From Last To First" +#~ msgstr "Razvrstaj od zadnje prema prvoj" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nova transakcija (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nova" + +#~ msgid "Suggestions" +#~ msgstr "Prijedlozi" + +#~ msgid "Converter" +#~ msgstr "Konverter" + +#~ msgid "Loading..." +#~ msgstr "Učitavanje …" + +#~ msgid "All Accounts" +#~ msgstr "Svi računi" + +#~ msgid "Color" +#~ msgstr "Boja" + +#~ msgid "Delete" +#~ msgstr "Izbriši" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "Ovo je samo korisna oznaka koja ne utječe na rad programa." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Za prijavu upiši lozinku:" + +#~ msgid "Checking Account Color" +#~ msgstr "Boja žiro računa" + +#~ msgid "Savings Account Color" +#~ msgstr "Boja štednog računa" + +#~ msgid "Business Account Color" +#~ msgstr "Boja poslovnog računa" + +#~ msgid "Use Native Digits" +#~ msgstr "Koristi brojke jezika" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Da li umjesto arapskih brojki koristiti brojke tvog jezičnog područja." + +#~ msgid "Backup" +#~ msgstr "Sigurnosna kopija" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Mapa sigurnosnih kopija u CSV formatu" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Nešifrirani računi će se automatski izvesti kao CSV datoteke u ovu mapu " +#~ "kada se napravi promjena." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Izbriši mapu sigurnosne kopije" + +#~ msgid "No Reminders" +#~ msgstr "Bez podsjetnika" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transfer" + +#~ msgid "New Transaction" +#~ msgstr "Nova transakcija" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Uključi/Isključi bočnu traku" + +#~ msgid "Make a Copy" +#~ msgstr "Izradi kopiju" + +#~ msgid "Clear End Date" +#~ msgstr "Izbriši krajnji datum" + +#~ msgid "Daily" +#~ msgstr "Dnevno" + +#~ msgid "Weekly" +#~ msgstr "Tjedno" + +#~ msgid "Biweekly" +#~ msgstr "Dvotjedno" + +#~ msgid "Monthly" +#~ msgstr "Mjesečno" + +#~ msgid "Quarterly" +#~ msgstr "Kvartalno" + +#~ msgid "Yearly" +#~ msgstr "Godišnje" + +#~ msgid "Biyearly" +#~ msgstr "Dvogodišnje" + +#~ msgid "Use group color" +#~ msgstr "Koristi boju grupe" + +#~ msgid "Use unique color" +#~ msgstr "Koristi jedinstvenu boju" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Dodaj novo ime oznake …" + +#~ msgid "Add Tag" +#~ msgstr "Dodaj oznaku" + +#~ msgid "Extras" +#~ msgstr "Dodatno" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Upravljaj dodatnim poljima transakcije." + +#~ msgid "Enter notes here" +#~ msgstr "Upiši bilješke ovdje" + +#~ msgid "Edit Transaction" +#~ msgstr "Uredi transakciju" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Transferiranje novca stvorit će transakciju rashoda sa zadanim iznosom u " +#~ "ovom računu i transakciju prihoda sa zadanim iznosom u računu na koji se " +#~ "prenosi." + +#~ msgid "Select a destination account" +#~ msgstr "Odaberi odredišni račun" + +#~ msgid "Recent Accounts" +#~ msgstr "Nedavno korišteni računi" + +#~ msgid "Conversion Needed" +#~ msgstr "Potrebna je konverzija" + +#~ msgid "Use Custom Rates" +#~ msgstr "Koristi prilagođene tečajeve" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Upiši tečajeve ručno" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transferiraj" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Novi" + +#~ msgid "Toggle Graphs" +#~ msgstr "Uključi/Isključi dijagrame" + +#~ msgid "result" +#~ msgstr "rezultat" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "novac;financije;novčanik;gotovina;banka;GTK;Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "– Upravljaj računima istovremeno, s poznatim sučeljem kartica" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "– Filtriraj transakcije prema vrsti, grupi ili datumu" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "– Ponavljaj transakcije kao što su računi koji se mjesečno plaćaju" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "– Transferiraj novac s jednog računa na drugi" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "– Izvezi račun kao CSV datoteku i uvezi CSV, OFX ili QIF datoteku za " +#~ "skupno dodavanje transakcija računu" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Prilagodi korisničko sučelje programa." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Prilagodi postavke jezičnog područja za Denaro." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Prilagodi lokacije sigurnosne kopije za Denaro račune." + +#, fuzzy +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Drugi" + +#~ msgid "Save" +#~ msgstr "Spremi" + +#~ msgid "Hide" +#~ msgstr "Sakrij" + +#~ msgid "Show" +#~ msgstr "Prikaži" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Resetiraj filtre datuma" + +#~ msgid "Delete Group?" +#~ msgstr "Izbrisati grupu?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Izbrisati transakciju?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Postavke računa" + +#~ msgid "Version: {0}" +#~ msgstr "Verzija: {0}" + +#~ msgid "About {0}" +#~ msgstr "{0} informacije" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Doprinositelji na GitHubu ❤️ https://github.com/NickvisionApps/Denaro/" +#~ "graphs/contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Prevodioci na Weblateu ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Transferiraj novac (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Uvezi iz datoteke (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtri" + +#~ msgid "Hide Groups" +#~ msgstr "Sakrij grupe" + +#~ msgid "Show Groups" +#~ msgstr "Prikaži grupe" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Uvezene su {0} transakcije iz datoteke." + +#~ msgid "Enter description here" +#~ msgstr "Ovdje upiši opis" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Money račun (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Upravljaj osobnim financijama" + +#~ msgid "New Window" +#~ msgstr "Novi prozor" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transakcija ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transakcije ({0})" + +#~ msgid "Enter decimal separator" +#~ msgstr "Upiši decimalni znak" + +#~ msgid "Enter group separator" +#~ msgstr "Upiši znak odvajanja grupe" + +#~ msgid "No Backup Folder" +#~ msgstr "Nema mape sigurnosne kopije" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Postavke računa (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Razvrstaj" + +#~ msgid "Order By" +#~ msgstr "Redoslijed" + +#~ msgid "Increasing" +#~ msgstr "Uzlazno" + +#~ msgid "Sort By" +#~ msgstr "Razvrstaj po" + +#~ msgid "Reset All Filters" +#~ msgstr "Resetiraj sve filtre" + +#~ msgid "Decreasing" +#~ msgstr "Silazno" diff --git a/resources/po/id.po b/resources/po/id.po new file mode 100644 index 000000000..4ecf79a9d --- /dev/null +++ b/resources/po/id.po @@ -0,0 +1,1848 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-06-07 19:40+0000\n" +"Last-Translator: Krindog7337 \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.18-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Tidak digrup" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transaksi Tanpa Grup" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transfer ke {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transfer dari {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} dari {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Sistem anda melaporkan bahwa mata uang anda adalah" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Tidak dapat masuk ke rekening. Sandi yang diberikan tidak valid." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Kelola keuangan pribadi anda" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Obrolan Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "" +"Nicholas Logozzo {0}\n" +"Kontributor di GitHub ❤️ {1}" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Selamat Pagi!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Selamat Pagi!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Selamat Siang!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Selamat Malam!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Halo!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Rekening ini sudah dibuka." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Rekening ini sudah dibuka." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Rekening ini sudah dibuka." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Impor dari Berkas" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Ekspor ke Berkas\t" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Ekspor ke Berkas\t" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Gambaran" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Transfer Uang" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Pengaturan Rekening" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Pengaturan" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Pemasukan" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Pengeluaran" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grup" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Grup Baru" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Baru" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transaksi" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Selanjutnya" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Rekening" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nama Rekening" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipe Rekening" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Giro" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Tabungan" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Bisnis" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tipe Transaksi Bawaan" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Tidak Pernah" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Mata Uang" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Gunakan Mata Uang Kustom" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Pemisah desimal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Pemisah Grup" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +#, fuzzy +msgid "None" +msgstr "Tidak ada" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Digit desimal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Simbol Mata Uang" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Kata Sandi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Jika kata sandi hilang, tidak ada cara untuk mengembalikan berkas ini!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Kata Sandi Baru" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Konfirmasi Kata Sandi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Ubah Kata Sandi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Hasil" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Jumlah" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "Tidak Ada Rekening Baru-baru Ini" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Kembali" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Rekening Baru" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Gunakan wizard ini untuk mendapatkan hasil maksimal dari rekening Anda" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Ayo Mulai" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Lokasi Penyimpanan" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Kata Sandi Rekening (Opsional)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Folder" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Pilih Folder" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +#, fuzzy +msgid "Overwrite Existing Accounts" +msgstr "Rekening Tujuan" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Opsi Rekening" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Mata Uang Rekening" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +#, fuzzy +msgid "Import Existing Information" +msgstr "Ekspor Semua Informasi" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +#, fuzzy +msgid "Import File" +msgstr "Impor dari Berkas" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +#, fuzzy +msgid "Select File" +msgstr "Pilih Folder" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +#, fuzzy +msgid "Clear File" +msgstr "Bersihkan Folder Cadangan" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Buat" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Preferensi" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Pintasan Papan Tik" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Bantuan" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Tentang Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menu Rekening" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Baru-baru Ini" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Rekening Baru (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Buka Rekening (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Buka" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Tidak Ada Rekening Baru-baru Ini" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Hapus" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menu Utama" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Beranda" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Kode Mata Uang" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Rekening" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Dasbor" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Buat atau buka rekening untuk memulai. Anda juga bisa menyeret berkas ke " +"aplikasi dari penjelajah file." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipe Rekening" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Tampilan Pengguna" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Terang" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Gelap" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Sistem" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Warna" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Kustomisasi warna yang digunakan Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Warna Bawaan Transaksi" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Perubahan pada pengaturan ini hanya akan diterapkan pada transaksi baru." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Warna Bawaan Transfer" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Perubahan pada pengaturan ini hanya akan diterapkan pada transfer baru." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Warna Bawaan Grup" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Perubahan dalam setelan ini hanya akan diterapkan ke grup baru." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Lokal" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Masukkan Pemisah Desimal" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Atur tombol mana yang akan ditekan oleh pemisah desimal lokal yang akan " +"dimasukkan ke dalam kolom jumlah." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Mati" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Titik numpad saja" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Titik dan Koma" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Rekening" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Buka Rekening" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplikasi" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplikasi" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Keluar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Tutup" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Kata Sandi" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Ubah Kata Sandi" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Kata Sandi" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Tidak Ada Transaksi" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Edit Grup" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Impor dari Berkas" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repo Github" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Rekening Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Masukkan kata sandi disini" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Batal" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Unlock" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Lokasi Penyimpanan" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "Masukkan catatan disini" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Buka" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Aksi" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Tabungan" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Masukkan simbol disini" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Masukkan kode disini" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Jumlah" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Impor dari Berkas" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Tidak Ada Rekening yang Dipilih" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Tidak Ada Rekening yang Terbuka" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Simbol Mata Uang (kosong)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nama (Kosong)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "pemisah Desimal (kosong)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Pemisah Desimal (Tidak sah)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Pemisah Grup (tidak sah)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Simbol Mata Uang (Tidak sah)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Ekspor Semua Informasi" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Perubahan" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Laporkan Masalah" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Diskusi" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Kredit" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Buat atau buka rekening untuk memulai. Anda juga bisa menyeret berkas ke " +"aplikasi dari penjelajah file." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Tidak dapat mengesampingkan rekening yang terbuka." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Tutup Rekening" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tipe Transaksi Bawaan" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Warna Bawaan Transfer" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Warna Bawaan Grup" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Masukan jumlah disini" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Hasil" + +#~ msgid "(Copy)" +#~ msgstr "(Salin)" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transaksi" + +#, fuzzy +#~ msgid "Account Name (Exists)" +#~ msgstr "Nama (Telah digunakan)" + +#~ msgid "Add" +#~ msgstr "Add" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Tambahkan transaksi baru atau impor transaksi dari berkas." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Tambahkan kata sandi ke PDF?" + +#~ msgid "All files" +#~ msgstr "Semua Berkas" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Jumlah (Tidak Sah)" + +#~ msgid "Apply" +#~ msgstr "Terapkan" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Apakah anda yakin ingin menghapus grup ini?\n" +#~ "Tindakan ini tidak dapat diurungkan." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Apakah anda yakin ingin menghapus transaksi ini?\n" +#~ "Tindakan ini tidak dapat diurungkan." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Tidak dapat mengakses folder yang dipilih, periksa perizinan Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Kode Mata Uang" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Kode mata uang (kosong)" + +#~ msgid "Date" +#~ msgstr "Tanggal" + +#~ msgid "Delete Existing" +#~ msgstr "Hapus yang Ada" + +#~ msgid "Delete Group" +#~ msgstr "Hapus Grup" + +#~ msgid "Delete Only Source" +#~ msgstr "Hapus Hanya Sumber" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Hapus Sumber dan yang Dihasilkan" + +#~ msgid "Delete Transaction" +#~ msgstr "Hapus Transaksi" + +#~ msgid "Description" +#~ msgstr "Deskripsi" + +#~ msgid "Description (Empty)" +#~ msgstr "Deskripsi (Kosong)" + +#~ msgid "Destination Account" +#~ msgstr "Rekening Tujuan" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Rekening Tujuan (Tidak Sah)" + +#~ msgid "Destination Account Password" +#~ msgstr "Kata Sandi Rekening Tujuan" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Kata Sandi Rekening Tujuan (Tidak Valid)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Kata Sandi Rekening Tujuan (Diperlukan)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Pisahkan yang Ada" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Ekspor rekening ke berkas berhasil." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Dihasilkan: {0}" + +#~ msgid "Group" +#~ msgstr "Grup" + +#~ msgid "Group Name" +#~ msgstr "Nama Grup" + +#~ msgid "Id" +#~ msgstr "Id" + +#, fuzzy +#~ msgid "Import from Account" +#~ msgstr "Impor dari Berkas" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Mengimpor {0} transaksi dari berkas." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Nama" + +#~ msgid "Name (Exists)" +#~ msgstr "Nama (Telah digunakan)" + +#~ msgid "No" +#~ msgstr "Tidak" + +#~ msgid "No End Date" +#~ msgstr "Tidak Ada Tanggal Akhir" + +#~ msgid "No Transactions Found" +#~ msgstr "Tidak Ada Transaksi yang Ditemukan" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Tidak ada transaksi yang sesuai dengan filter." + +#~ msgid "Notes" +#~ msgstr "Catatan" + +#~ msgid "Page {0}" +#~ msgstr "Halaman" + +#~ msgid "PDF Password" +#~ msgstr "Kata Sandi PDF" + +#~ msgid "Receipt" +#~ msgstr "Kuitansi" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Kwitansi (Berkas tidak dapat diakses)" + +#~ msgid "Receipts" +#~ msgstr "Kuitansi" + +#~ msgid "Repeat End Date" +#~ msgstr "Batas Akhir Pengulangan" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Batas Akhir Pengulangan (Tidak Sah)" + +#~ msgid "Repeat Interval" +#~ msgstr "Interval Pengulangan" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Interval Pengulangan diubah" + +#~ msgid "Select Account" +#~ msgstr "Pilih Rekening" + +#~ msgid "Select Backup Folder" +#~ msgstr "Pilih Folder Cadangan" + +#~ msgid "Sort By Amount" +#~ msgstr "Urutkan Berdasarkan Jumlah" + +#~ msgid "Sort By Date" +#~ msgstr "Urutkan Berdasarkan Tanggal" + +#~ msgid "Sort By Id" +#~ msgstr "Urutkan Berdasarkan Id" + +#~ msgid "The password of the account was changed." +#~ msgstr "Kata sandi pada rekening ini telah diubah." + +#~ msgid "The password of the account was removed." +#~ msgstr "Kata sandi pada rekening ini telah dihapus." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Kata sandi akan dihapus setelah menutup dialog ini." + +#~ msgid "The passwords do not match." +#~ msgstr "Kata sandi tidak cocok." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Interval pengulangan telah diubah.\n" +#~ "Apa yang anda ingin lakukan untuk transaksi yang telah dihasilkan?\n" +#~ "\n" +#~ "Transaksi berulang yang baru akan dihasilkan berdasarkan interval " +#~ "pengulangan yang baru." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Rekening ini tidak mempunyai uang untuk ditransfer." + +#, fuzzy +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Transaksi ini adalah sumber transaksi berulang.\n" +#~ "Apa yang anda ingin lakukan untuk transaksi berulang?\n" +#~ "\n" +#~ "Hanya menghapus transaksi sumber akan membuat transaksi yang telah " +#~ "dihasilkan untuk dimodifikasi." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Transaksi ini adalah sumber transaksi berulang.\n" +#~ "Apa yang anda ingin lakukan untuk transaksi berulang?\n" +#~ "\n" +#~ "Hanya memperbarui transaksi sumber akan memisahkan \n" +#~ "transaksi yang telah dihasilkan dari sumber." + +#~ msgid "Transaction" +#~ msgstr "Transaksi" + +#~ msgid "Type" +#~ msgstr "Tipe" + +#~ msgid "Unable to export account to file." +#~ msgstr "Tidak dapat mengekspor rekening ke berkas." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Tidak dapat mengimpor informasi dari berkas. Pastikan aplikasi memiliki " +#~ "izin untuk mengakses file dan coba lagi." + +#, fuzzy +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Tambahkan transaksi baru atau impor transaksi dari berkas." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Tidak dapat membuka rekening. Pastikan aplikasi memiliki izin untuk " +#~ "mengakses file dan coba lagi." + +#, fuzzy +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Tidak dapat mengesampingkan rekening yang terbuka." + +#, fuzzy +#~ msgid "Upcoming transactions" +#~ msgstr "Tidak Ada Transaksi" + +#~ msgid "Update Only Source" +#~ msgstr "Perbarui Hanya Sumber" + +#~ msgid "Update Source and Generated" +#~ msgstr "Perbarui Sumber dan yang Dihasilkan" + +#~ msgid "Update Transaction" +#~ msgstr "Perbarui Transaksi" + +#~ msgid "Upload" +#~ msgstr "Unggah" + +#~ msgid "View" +#~ msgstr "Lihat" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Apakah Anda ingin melindungi file PDF dengan kata sandi?\n" +#~ "\n" +#~ "Jika kata sandi hilang, file PDF tidak akan bisa diakses." + +#~ msgid "Yes" +#~ msgstr "Ya" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Atur mata uang yang digunakan rekening." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Buat kata sandi baru atau hapus." + +#, fuzzy +#~ msgid "Other" +#~ msgstr "Lainnya" + +#~ msgid "Unlimited" +#~ msgstr "Tak terbatas" + +#~ msgid "Export Current View" +#~ msgstr "Ekspor Tampilan Saat Ini" + +#~ msgid "Search by description" +#~ msgstr "Cari berdasarkan Deskripsi" + +#~ msgid "Today's Overview" +#~ msgstr "Gambaran Hari Ini" + +#, fuzzy +#~ msgid "Select All Overview Filters" +#~ msgstr "Atur Ulang Filter Gambaran" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Grup Baru (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Jungkitkan Tampilnya Grup" + +#, fuzzy +#~ msgid "Select All Groups Filters" +#~ msgstr "Atur Ulang Filter Grup" + +#, fuzzy +#~ msgid "Unselect Groups Filters" +#~ msgstr "Atur Ulang Filter Grup" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Jungkitkan Tampilnya Grup" + +#, fuzzy +#~ msgid "Select All Tags Filters" +#~ msgstr "Atur Ulang Filter Grup" + +#, fuzzy +#~ msgid "Unselect Tags Filters" +#~ msgstr "Atur Ulang Filter Grup" + +#~ msgid "Calendar" +#~ msgstr "Kalender" + +#~ msgid "Select Range" +#~ msgstr "Pilih Rentang" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Mulai" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Akhir" + +#~ msgid "Sort From First To Last" +#~ msgstr "Urutkan dari awal ke akhir" + +#~ msgid "Sort From Last To First" +#~ msgstr "Urutkan dari akhir ke awal" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Transaksi Baru (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Baru" + +#~ msgid "Suggestions" +#~ msgstr "Saran" + +#~ msgid "All Accounts" +#~ msgstr "Semua Rekening" + +#~ msgid "Color" +#~ msgstr "Warna" + +#~ msgid "Delete" +#~ msgstr "Hapus" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Ini hanyalah label yang tidak akan memengaruhi bagaimana aplikasi ini " +#~ "bekerja." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Masukkan Kata Sandi untuk Masuk:" + +#~ msgid "Checking Account Color" +#~ msgstr "Warna Rekening Giro" + +#~ msgid "Savings Account Color" +#~ msgstr "Warna Rekening Tabungan" + +#~ msgid "Business Account Color" +#~ msgstr "Warna Rekening Bisnis" + +#~ msgid "Use Native Digits" +#~ msgstr "Gunakan Digit Bawaan" + +#~ msgid "Backup" +#~ msgstr "Cadangan" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Cadangan folder CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Rekening tidak terenkripsi akan secara otomatis mengekspor sebagai file " +#~ "CSV ke folder ini jika ada perubahan." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Bersihkan Folder Cadangan" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transfer" + +#~ msgid "New Transaction" +#~ msgstr "Transaksi Baru" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Jungkitkan Bilah Samping" + +#~ msgid "Make a Copy" +#~ msgstr "Buat Salinan" + +#~ msgid "Clear End Date" +#~ msgstr "Hapus Batas Akhir" + +#~ msgid "Daily" +#~ msgstr "Harian" + +#~ msgid "Weekly" +#~ msgstr "Mingguan" + +#~ msgid "Biweekly" +#~ msgstr "Dua Mingguan" + +#~ msgid "Monthly" +#~ msgstr "Bulanan" + +#~ msgid "Quarterly" +#~ msgstr "Triwulanan" + +#~ msgid "Yearly" +#~ msgstr "Tahunan" + +#~ msgid "Biyearly" +#~ msgstr "Dua Tahunan" + +#~ msgid "Use group color" +#~ msgstr "Gunakan warna grup" + +#~ msgid "Use unique color" +#~ msgstr "Gunakan warna unik" + +#~ msgid "Extras" +#~ msgstr "Tambahan" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Kelola menu tambahan transaksi." + +#~ msgid "Edit Transaction" +#~ msgstr "Edit Transaksi" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Mentransfer uang akan membuat transaksi pengeluaran dengan jumlah yang " +#~ "diberikan di rekening ini dan transaksi pemasukan dengan jumlah yang " +#~ "diberikan di rekening tujuan." + +#~ msgid "Select a destination account" +#~ msgstr "Pilih rekening tujuan" + +#~ msgid "Recent Accounts" +#~ msgstr "Rekening Baru-baru Ini" + +#~ msgid "Conversion Needed" +#~ msgstr "Konversi diperlukan" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "Gunakan Mata Uang Kustom" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Masukkan konversi disini" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transfer" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Baru" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Hasil" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "money;finance;wallet;cash;bank;GTK;Nickvision;uang;finansial;dompet;tunai;" +#~ "bank;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Kelola beberapa rekening bersamaan, dengan antarmuka tab yang familiar" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "" +#~ "— Filter transaksi berdasarkan tipe, grup, atau tanggal dengan mudah" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Lakukan transaksi berulang dengan mudah, seperti tagihan yang terjadi " +#~ "setiap bulan" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Transfer uang dari rekening ke rekening lain" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Ekspor rekening sebagai berkas CSV dan impor berkas CSV, OFX, atau QIF " +#~ "untuk menambahkan transaksi secara massal ke akun" + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Tidak dapat mengimpor informasi dari berkas. Tipe berkas tidak didukung." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Kustomisasi tampilan pengguna pada aplikasi." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Kustomisasi bagaimana Denaro menggunakan pengaturan lokal." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Sesuaikan lokasi cadangan untuk rekening Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Lainnya" + +#~ msgid "Save" +#~ msgstr "Simpan" + +#~ msgid "Hide" +#~ msgstr "Sembunyikan" + +#~ msgid "Show" +#~ msgstr "Tunjukkan" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Atur Ulang Filter Tanggal" + +#~ msgid "Delete Group?" +#~ msgstr "Hapus Grup?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Hapus Transaksi?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Pengaturan Rekening" + +#~ msgid "Version: {0}" +#~ msgstr "Versi: {0}" + +#~ msgid "About {0}" +#~ msgstr "Tentang {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Kontributor di GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Penerjemah di Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Transfer Uang (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Impor dari Berkas (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filter" + +#~ msgid "Hide Groups" +#~ msgstr "Sembunyikan Grup" + +#~ msgid "Show Groups" +#~ msgstr "Tampilkan Grup" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Mengimpor {0} transactions from file." + +#~ msgid "Enter description here" +#~ msgstr "Masukkan deskripsi disini" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Rekening Money (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Kelola keuangan pribadi anda" + +#~ msgid "New Window" +#~ msgstr "Jendela Baru" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transaksi ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transaksi ({0})" + +#~ msgid "Enter decimal separator" +#~ msgstr "Masukka pemisah desimal" + +#~ msgid "Enter group separator" +#~ msgstr "Masukkan lemisah grup" + +#~ msgid "No Backup Folder" +#~ msgstr "Tidak Ada Folder Cadangan" + +#~ msgid "Reset All Filters" +#~ msgstr "Atur Ulang Semua Filter" + +#~ msgid "Sort" +#~ msgstr "Urutkan" + +#~ msgid "Increasing" +#~ msgstr "Meningkat" + +#~ msgid "Decreasing" +#~ msgstr "Menurun" + +#~ msgid "Sort By" +#~ msgstr "Urutkan Berdasarkan" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Pengaturan Rekening(Ctrl+.)" diff --git a/resources/po/it.po b/resources/po/it.po new file mode 100644 index 000000000..b6a4015b4 --- /dev/null +++ b/resources/po/it.po @@ -0,0 +1,1951 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-09-16 10:15+0000\n" +"Last-Translator: Davide \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.2\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Senza gruppo" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transazioni senza gruppo" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Trasferimento a {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Trasferimento da {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} da {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Domani" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Tra una settimana" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Tra un mese" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Tra due mesi" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Tra due mesi" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Il sistema riferisce che la valuta di sistema è" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Accesso al conto non riuscito. La password non è corretta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Gestisci le tue finanze" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Chat di Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "I collaboratori di GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" +"Mattia Borda\n" +"Davide Ferracin " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Buongiorno!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Buongiorno!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Buon pomeriggio!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Buona sera!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Buongiorno!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Questo account è già aperto." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Questo account è già aperto." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Questo account è già aperto." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importa da file" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Esporta su file" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Esporta su file" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Panoramica" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Trasferisci denaro" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Impostazioni account" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Impostazioni" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Totale" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Entrata" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Uscita" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Promemoria" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Gruppi" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Nuovo gruppo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nuovo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transazioni" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Visualizza" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Successivo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Conti" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nome del conto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipo di conto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Conto corrente" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Conto deposito" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Aziendale" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tipo di transazione predefinito" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Soglia per i promemoria delle transazioni" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Mai" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Un giorno prima" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Una settimana prima" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Un mese prima" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Due mesi prima" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Valuta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Usa valuta personalizzata" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separatore decimale" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separatore dei gruppi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Nessuno" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Cifre decimali" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Due" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Tre" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Quattro" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Cinque" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Sei" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Stile visualizzazione importo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Simbolo della valuta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" +"Se la password viene dimenticata, non sarà possibile ripristinare il file!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nuova password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Conferma password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Modifica password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Cambia valuta" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Cambia" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Sorgente" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Risultato" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Importo" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Copia importo risultato" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Indietro" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nuovo conto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Usare questo assistente per sfruttare al meglio il proprio conto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Iniziamo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Posizione di archiviazione" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Password del conto (facoltativa)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Cartella" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Seleziona cartella" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Sovrascrivi conti esistenti" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Impostazioni conto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Valuta del conto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importa informazioni esistenti" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Caricare un file valido da cui importare le informazioni esistenti nel nuovo " +"conto." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Importa file" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Selezionare un file" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Rimuovi file" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Crea" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Preferenze" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Scorciatoie da tastiera" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Aiuto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Informazioni su Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menù conti" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Recenti" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nuovo conto (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Apri conto (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Apri" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Nessun account recente" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Rimuovi" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menù principale" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Home" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Convertitore di valuta" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Account" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Cruscotto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Creare o aprire un conto per iniziare. Si può anche trascinare un file " +"all'interno dell'applicazione." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipo di conto" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interfaccia utente" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Stile" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Chiaro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Scuro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Sistema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Colori" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Personalizza i colori usati da Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Colore predefinito delle transazioni" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "Le modifiche saranno applicate solo alle nuove transazioni." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Colore predefinito dei trasferimenti" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Le modifiche saranno applicate solo ai nuovi trasferimenti." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Colore dei gruppi predefinito" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Le modifiche saranno applicate solo ai nuovi gruppi." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Impostazioni regionali" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Inserimento separatore decimale" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Imposta per quali tasti verrà inserito il separatore decimale predefinito " +"per la lingua." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Spento" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Punto del tastierino numerico" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Punto o virgola" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Conti" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Apre un conto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Applicazione" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Applicazione" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Esce" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Errore" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Impossibile caricare i dati sulla valuta. Per favore riprova. Se l'errore " +"persiste ancora, segnala un bug." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Chiudi" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Il risultato è stato copiato negli appunti." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Robustezza della password" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Modifica password" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Robustezza della password" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Nessuna transazione" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Modifica gruppo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importa file" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repository GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Conto di Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Inserire la password" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Annulla" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Sblocca" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Posizione di archiviazione" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Inserire il nome" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Apri" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Azioni" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Conto deposito" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Inserire il simbolo" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Inserire il codice" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Stile visualizzazione importo" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importa file" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Nessun conto selezionato" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nome del conto (aperto)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Simbolo della valuta (vuoto)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nome (vuoto)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separatore decimale (vuoto)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separatore decimale (non valido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separatore dei gruppi (non valido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Simbolo della valuta (non valido)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Esporta tutte le informazioni" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Novità" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Segnala un problema" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussioni" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Riconoscimenti" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Creare o aprire un conto per iniziare. Si può anche trascinare un file " +"all'interno dell'applicazione." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Non è possibile sovrascrivere un conto aperto." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Il risultato è stato copiato negli appunti." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Chiude il conto" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tipo di transazione predefinito" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Colore predefinito dei trasferimenti" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Colore dei gruppi predefinito" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Inserire l'ammontare" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "Ok" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Risultato" + +#~ msgid "(Copy)" +#~ msgstr "(Copia)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} etichetta" +#~ msgstr[1] "{0} etichette" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transazione" +#~ msgstr[1] "{0} transazioni" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Nome del conto (esistente)" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Creare una nuova transazione o importare le transazioni da un file." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Aggiungere una password al PDF?" + +#~ msgid "All files" +#~ msgstr "Tutti i file" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Importo (non valido)" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Eliminare il gruppo?\n" +#~ "L'azione è irreversibile." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Eliminare la transazione?\n" +#~ "L'azione è irreversibile." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Impossibile accedere alla cartella selezionata, controllare i permessi di " +#~ "Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Codice della valuta" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Codice della valuta (vuoto)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Delete Existing" +#~ msgstr "Elimina esistenti" + +#~ msgid "Delete Group" +#~ msgstr "Elimina gruppo" + +#~ msgid "Delete Only Source" +#~ msgstr "Elimina solo l'originale" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Elimina l'originale e quelle generate" + +#~ msgid "Delete Transaction" +#~ msgstr "Elimina transazione" + +#~ msgid "Description" +#~ msgstr "Descrizione" + +#~ msgid "Description (Empty)" +#~ msgstr "Descrizione (vuota)" + +#~ msgid "Destination Account" +#~ msgstr "Conto di destinazione" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Conto di destinazione (non valido)" + +#~ msgid "Destination Account Password" +#~ msgstr "Password del conto di destinazione" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Password del conto di destinazione (non valida)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Password del conto di destinazione (richiesta)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Scollega esistenti" + +#~ msgid "Exported account to file successfully." +#~ msgstr "L'account è stato esportato su file." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Generate: {0}" + +#~ msgid "Group" +#~ msgstr "Gruppo" + +#~ msgid "Group Name" +#~ msgstr "Nome gruppo" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Importa da un conto" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} transazione importata dal file." +#~ msgstr[1] "{0} transazioni importate dal file." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Name (Exists)" +#~ msgstr "Nome (esistente)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "No End Date" +#~ msgstr "Per sempre" + +#~ msgid "No Transactions Found" +#~ msgstr "Nessuna transazione trovata" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "" +#~ "Non è stata trovata alcuna transazione che corrisponda ai filtri " +#~ "selezionati." + +#~ msgid "Notes" +#~ msgstr "Annotazioni" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nulla da importare dal file." + +#~ msgid "Page {0}" +#~ msgstr "Pagina {0}" + +#~ msgid "PDF Password" +#~ msgstr "Password del PDF" + +#~ msgid "Receipt" +#~ msgstr "Ricevuta" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Ricevuta (File inaccessibile)" + +#~ msgid "Receipts" +#~ msgstr "Ricevute" + +#~ msgid "Repeat End Date" +#~ msgstr "Fine ripetizione" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Fine ripetizione (non valida)" + +#~ msgid "Repeat Interval" +#~ msgstr "Frequenza" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "La frequenza è stata modificata" + +#~ msgid "Select Account" +#~ msgstr "Seleziona conto" + +#~ msgid "Select Backup Folder" +#~ msgstr "Seleziona cartella di backup" + +#~ msgid "Sort By Amount" +#~ msgstr "Ordina per importo" + +#~ msgid "Sort By Date" +#~ msgstr "Ordina per data" + +#~ msgid "Sort By Id" +#~ msgstr "Ordina per ID" + +#~ msgid "Tags" +#~ msgstr "Etichette" + +#~ msgid "The password of the account was changed." +#~ msgstr "La password del conto è stata modificata." + +#~ msgid "The password of the account was removed." +#~ msgstr "La password del conto è stata eliminata." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "La password sarà eliminata alla chiusura di questa finestra." + +#~ msgid "The passwords do not match." +#~ msgstr "Le password non combaciano." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "La frequenza della ripetizione è stata modificata.\n" +#~ "Cosa fare con le transazioni collegate?\n" +#~ "\n" +#~ "Verranno generate nuove transazioni ripetute in base alla nuova frequenza." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Questo conto non ha sufficiente denaro per il trasferimento." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Questa è una transazione ricorrente.\n" +#~ "Cosa fare con le transazioni collegate?\n" +#~ "\n" +#~ "Eliminare solo la transazione ricorrente permetterà di modificare " +#~ "singolarmente le transazioni ad essa collegate." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Questa transazione è ricorrente.\n" +#~ "Cosa fare con le transazioni collegate?\n" +#~ "\n" +#~ "Aggiornare solo la transazione ricorrente scollegherà\n" +#~ "le transazioni ad essa collegate." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transazione" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Unable to export account to file." +#~ msgstr "Esportazione su file del conto non riuscita." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Importazione delle informazioni dal file non riuscita. Assicurarsi che " +#~ "l'applicazione abbia i permessi di accedere al file e riprovare." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Importazione delle transazioni dal file non riuscita." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Apertura del conto non riuscita. Assicurarsi che l'applicazione abbia i " +#~ "permessi di accedere al file e riprovare." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Non è possibile sovrascrivere un conto aperto." + +#~ msgid "Untagged" +#~ msgstr "Senza etichetta" + +#~ msgid "Upcoming transactions" +#~ msgstr "Prossime transazioni" + +#~ msgid "Update Only Source" +#~ msgstr "Aggiorna solo l'originale" + +#~ msgid "Update Source and Generated" +#~ msgstr "Aggiorna originale e collegate" + +#~ msgid "Update Transaction" +#~ msgstr "Aggiorna transazione" + +#~ msgid "Upload" +#~ msgstr "Carica" + +#~ msgid "View" +#~ msgstr "Visualizza" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Proteggere il file PDF con una password?\n" +#~ "\n" +#~ "Se la password viene dimenticata, non sarà possibile aprire il PDF." + +#~ msgid "Yes" +#~ msgstr "Sì" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Gestisce la valuta del conto." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Imposta una nuova password o cancella l'attuale." + +#~ msgid "Other" +#~ msgstr "Altro" + +#~ msgid "Unlimited" +#~ msgstr "Illimitata" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Esporta vista corrente" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Cerca per descrizione" + +#~ msgid "Today's Overview" +#~ msgstr "Panoramica di oggi" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Seleziona tutti i filtri dell'anteprima" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Nuovo gruppo (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Mostra/nascondi gruppi" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Seleziona tutti i filtri dei gruppi" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Deseleziona filtri dei gruppi" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Mostra/nascondi etichette" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Seleziona tutti i filtri delle etichette" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Deseleziona filtri delle etichette" + +#~ msgid "Calendar" +#~ msgstr "Calendario" + +#~ msgid "Select Current Month" +#~ msgstr "Seleziona il mese corrente" + +#~ msgid "Reset To Today" +#~ msgstr "Reimposta ad oggi" + +#~ msgid "Today" +#~ msgstr "Oggi" + +#~ msgid "Select Range" +#~ msgstr "Seleziona periodo" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Inizio" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Fine" + +#~ msgid "Sort From First To Last" +#~ msgstr "Ordina dalla meno recente" + +#~ msgid "Sort From Last To First" +#~ msgstr "Ordina dalla più recente" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nuova transazione (Ctrl+Maiusc+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nuova" + +#~ msgid "Suggestions" +#~ msgstr "Suggerimenti" + +#~ msgid "Converter" +#~ msgstr "Convertitore" + +#~ msgid "Loading..." +#~ msgstr "Caricamento..." + +#~ msgid "All Accounts" +#~ msgstr "Tutti gli account" + +#~ msgid "Color" +#~ msgstr "Colore" + +#~ msgid "Delete" +#~ msgstr "Elimina" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Questa è solamente un'etichetta, che non influenzerà il funzionamento " +#~ "dell’applicazione." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Inserire la password per accedere:" + +#~ msgid "Checking Account Color" +#~ msgstr "Colore dei conti correnti" + +#~ msgid "Savings Account Color" +#~ msgstr "Colore dei conti deposito" + +#~ msgid "Business Account Color" +#~ msgstr "Colore dei conti aziendali" + +#~ msgid "Use Native Digits" +#~ msgstr "Usa cifre native" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Se utilizzare i numeri nativi della propria regione anziché cifre latine." + +#~ msgid "Backup" +#~ msgstr "Backup" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Cartella di backup in CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "I conti non criptati saranno esportati automaticamente come file CSV in " +#~ "questa cartella quando viene applicata una modifica." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Rimuovi cartella di backup" + +#~ msgid "No Reminders" +#~ msgstr "Nessun promemoria" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Trasferimento" + +#~ msgid "New Transaction" +#~ msgstr "Nuova transazione" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Mostra/nasconde la barra laterale" + +#~ msgid "Make a Copy" +#~ msgstr "Duplica" + +#~ msgid "Clear End Date" +#~ msgstr "Rimuovi fine ripetizione" + +#~ msgid "Daily" +#~ msgstr "Ogni giorno" + +#~ msgid "Weekly" +#~ msgstr "Ogni settimana" + +#~ msgid "Biweekly" +#~ msgstr "Ogni due settimane" + +#~ msgid "Monthly" +#~ msgstr "Ogni mese" + +#~ msgid "Quarterly" +#~ msgstr "Ogni tre mesi" + +#~ msgid "Yearly" +#~ msgstr "Ogni anno" + +#~ msgid "Biyearly" +#~ msgstr "Ogni due anni" + +#~ msgid "Use group color" +#~ msgstr "Usa colore del gruppo" + +#~ msgid "Use unique color" +#~ msgstr "Usa colore speciale" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Inserire il nome per una nuova etichetta…" + +#~ msgid "Add Tag" +#~ msgstr "Aggiungi etichetta" + +#~ msgid "Extras" +#~ msgstr "Extra" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Gestisce i campi extra della transazione." + +#~ msgid "Enter notes here" +#~ msgstr "Inserire le note qui" + +#~ msgid "Edit Transaction" +#~ msgstr "Modifica transazione" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Un trasferimento di denaro creerà un'uscita in questo conto e un'entrata " +#~ "nel conto selezionato per il trasferimento." + +#~ msgid "Select a destination account" +#~ msgstr "Selezionare un conto di destinazione" + +#~ msgid "Recent Accounts" +#~ msgstr "Conti recenti" + +#~ msgid "Conversion Needed" +#~ msgstr "Conversione necessaria" + +#~ msgid "Use Custom Rates" +#~ msgstr "Utilizza tassi personalizzate" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Inserisci manualmente i tassi di conversione" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Trasferisci" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Nuovo" + +#~ msgid "Toggle Graphs" +#~ msgstr "Mostra/nascondi grafico" + +#~ msgid "result" +#~ msgstr "risultato" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "denaro;soldi;finanza;portafoglio;contante;banca;Nickvision;money;finance;" +#~ "wallet;cash;bank;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Gestire più conti contemporaneamente, con un'interfaccia a schede " +#~ "familiare" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— Filtrare con facilità le transazioni per tipo, gruppo e data" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "— Ripetere facilmente le transazioni, come le bollette mensili" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Trasferire denaro da un conto all'altro" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Esportare un conto come file CSV e importare file CSV, OFX e QIF per " +#~ "aggiungere a un conto tante transazioni in una sola volta" + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Importazione delle informazioni dal file non riuscita. Il tipo di file " +#~ "non è supportato." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Personalizza l'interfaccia dell'applicazione." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Personalizza il modo in cui Denaro usa le impostazioni regionali." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Personalizza le posizioni di backup per i conti di Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Altro" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Hide" +#~ msgstr "Nascondi" + +#~ msgid "Show" +#~ msgstr "Mostra" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Ripristina filtri delle date" + +#~ msgid "Delete Group?" +#~ msgstr "Eliminare il gruppo?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Eliminare la transazione?" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "— Corretto un errore per cui Denaro andava in crash su sistemi con " +#~ "impostazioni regionali non configurate" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "" +#~ "— Corretto un errore che non rendeva possibile esportare in PDF conti con " +#~ "tante ricevute" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "" +#~ "— Corretto un errore per cui il filtro dei gruppi veniva riattivato " +#~ "quando si aggiungeva una transizione al gruppo" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "— Invece di andare in crash, Denaro mostrerà un messaggio di errore se si " +#~ "tenta di accedere a file inaccessibili" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "— Aggiornamento delle traduzioni (Grazie a tutti su Weblate)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Impostazioni account" + +#~ msgid "Version: {0}" +#~ msgstr "Versione {0}" + +#~ msgid "About {0}" +#~ msgstr "Informazioni su {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Collaboratori su GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Traduttori su Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Trasferisci denaro (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importa da file (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtri" + +#~ msgid "Hide Groups" +#~ msgstr "Nascondi gruppi" + +#~ msgid "Show Groups" +#~ msgstr "Mostra gruppi" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "{0} transazioni sono state importate dal file." + +#~ msgid "Enter description here" +#~ msgstr "Inserire la descrizione" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Account Money (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Gestisci più account contemporaneamente, con un'interfaccia a schede " +#~ "familiare\n" +#~ "— Filtra facilmente le transazioni per tipo, gruppo o data\n" +#~ "— Ripeti facilmente le transazioni, come le fatture che si verificano " +#~ "ogni mese\n" +#~ "— Trasferire denaro da un conto all'altro\n" +#~ "— Esporta un account come file CSV e importa un file CSV, OFX o QIF per " +#~ "aggiungere transazioni in blocco a un account" + +#~ msgid "New Window" +#~ msgstr "Nuova finestra" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transazione ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transazioni ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Nessuna cartella backup" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Impostazioni account (Ctrl+.)" + +#~ msgid "Order By" +#~ msgstr "Ordina per" + +#~ msgid "Increasing" +#~ msgstr "Ascendente" + +#~ msgid "Decreasing" +#~ msgstr "Discendente" + +#~ msgid "Sort By" +#~ msgstr "Ordina per" + +#~ msgid "Enter decimal separator" +#~ msgstr "Inserire il separatore decimale" + +#~ msgid "Sort" +#~ msgstr "Ordina" + +#~ msgid "Reset All Filters" +#~ msgstr "Reimposta tutti i filtri" + +#~ msgid "Enter group separator" +#~ msgstr "Inserire il separatore dei gruppi" diff --git a/resources/po/ja.po b/resources/po/ja.po new file mode 100644 index 000000000..49a0fb065 --- /dev/null +++ b/resources/po/ja.po @@ -0,0 +1,1106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-07-09 22:27+0000\n" +"Last-Translator: Luci Draws \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "" + +#: libdenaro/src/models/account.cpp:495 +#, c++-format +msgid "Transfer to {}" +msgstr "" + +#: libdenaro/src/models/account.cpp:512 +#, c++-format +msgid "Transfer from {}" +msgstr "" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "デナロ" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix チャット" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +msgid "This account already exists." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +msgid "This account cannot be overwritten." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +msgid "The account is already open." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +msgid "Export to CSV" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +msgid "Export to PDF" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +msgid "New" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +msgid "$ is the currency's symbol." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +msgid "Account Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +msgid "No Accounts Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "テーマ" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "システム" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "オフ" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +msgctxt "Shortcut" +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +msgctxt "Shortcut" +msgid "Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +msgid "About Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +msgid "Unable to change password" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +msgid "No Transaction Reminders" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +msgid "Select Import File" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "キャンセル" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +msgid "On" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +msgid "Options" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +msgid "Saving" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +msgid "Amount Style" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +msgid "No File Selected" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +msgid "Account Name (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +msgid "Symbol (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +msgid "Code (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +msgid "Symbol (Invalid)" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +msgid "Unlock Account" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +msgid "Default Transaction Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +msgid "Default Transfer Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +msgid "Default Group Color" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" + +#~ msgid "(Copy)" +#~ msgstr "(コピー)" + +#~ msgid "Date" +#~ msgstr "デーツ" + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "No" +#~ msgstr "いいえ" + +#~ msgid "Yes" +#~ msgstr "はい" + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" diff --git a/resources/po/nl.po b/resources/po/nl.po new file mode 100644 index 000000000..69d898ee8 --- /dev/null +++ b/resources/po/nl.po @@ -0,0 +1,1874 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2024-03-01 15:00+0000\n" +"Last-Translator: Philip Goto \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Ongegroepeerd" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transacties die geen deel uitmaken van een groep" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Overmaken naar {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Overmaken van {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} van {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Morgen" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Over een week" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Over een maand" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Over twee maanden" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Over twee maanden" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Volgens uw besturingssysteem is uw valuta" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Kan niet inloggen met dit account. Opgegeven wachtwoord is ongeldig." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Beheer uw persoonlijke financiën" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix-kamer" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Bijdragers op GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Philip Goto https://philipgoto.nl/" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Goedenacht!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Goedemorgen!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Goedemiddag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Goedenavond!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Goedendag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Dit account is al geopend" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Dit account is al geopend" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Dit account is al geopend" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importeren uit bestand" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exporteren naar bestand" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exporteren naar bestand" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Overzicht" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Geld overmaken" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Rekeninginstellingen" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Instellingen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Totaal" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Inkomst" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Uitgave" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Herinneringen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Groepen" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Nieuwe groep" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nieuw" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transacties" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Visualiseren" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Volgende" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Account" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Accountnaam" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Soort rekening" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Cheques" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Spaarrekeningen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Zakelijk" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Standaardtransactietype" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Drempelwaarde voor transactie­herinneringen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nooit" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Eén dag van tevoren" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Eén week van tevoren" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Eén maand van tevoren" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Twee maanden van tevoren" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Valuta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Aangepaste valuta gebruiken" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Decimaal scheidingsteken" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Groepsscheidingsteken" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Geen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Decimale cijfers" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Twee" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Drie" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Vier" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Vijf" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Zes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Weergave­stijl van hoeveel­heid" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Valutasymbool" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Wachtwoord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" +"Als het wachtwoord verloren is is er geen manier om het bestand te " +"herstellen!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nieuw wachtwoord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Bevestiging wachtwoord" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Wachtwoord wijzigen" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Valuta wisselen" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Wisselen" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Bron" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Resultaat" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Bedrag" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Resultaat­hoeveelheid kopiëren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Terug" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nieuw account" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Gebruik deze wizard om het meeste uit uw account te halen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Laten we beginnen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Opslaglocatie" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Accountwachtwoord (optioneel)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Map" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Map selecteren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Bestaande accounts overschrijven" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Accountopties" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Accountvaluta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Bestaande informatie importeren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Bestand importeren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Bestand selecteren" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Bestand wissen" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Aanmaken" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Voorkeuren" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Sneltoetsen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Hulp" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Over Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Rekeningmenu" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Onlangs gebruikt" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nieuw account (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Account openen (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Openen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Geen recente accounts" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Verwijderen" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Hoofdmenu" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Overzicht" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Valuta­conversie" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Accounts" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Dashboard" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Maak een account aan of voeg er een toe om aan de slag te gaan. U kunt ook " +"een bestand naar de app slepen." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Soort rekening" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Vormgeving" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Thema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Licht" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Donker" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Systeemthema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Kleuren" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Pas de door Denaro gebruikte kleuren aan" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Standaardkleur van transacties" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "Let op: wijzigingen worden alléén toegepast op nieuwe overboekingen." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Standaardkleur van overdrachten" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Let op: wijzigingen worden alléén toegepast op nieuwe overboekingen." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Standaardgroepskleur" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" +"Een wijziging in deze instelling wordt alleen toegepast op nieuwe groepen." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Regio" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Decimaal scheidings­teken invoegen" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Stelt in voor welke toetsen het decimale scheidingsteken zal worden ingevoerd" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Uitgeschakeld" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Alleen numpad-punt" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Punt en komma" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Account" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Account openen" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "App" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "App" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Sluiten" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Fout" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Sluiten" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Resultaat is gekopieerd naar klem­bord." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Wachtwoord­sterkte" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Wachtwoord wijzigen" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Wachtwoord­sterkte" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Geen transacties" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Groep bewerken" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Bestand importeren" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub-repo" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro-account" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Voer wachtwoord hier in" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Annuleren" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Ontgrendelen" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Opslaglocatie" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Voer een naam in" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Openen" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Acties" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Spaarrekeningen" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Voer een symbool in" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Voer een code in" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Weergave­stijl van hoeveel­heid" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Bestand importeren" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Er is geen rekening gekozen" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Accountnaam (geopend)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Valutasymbool (blanco)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Naam (blanco)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Decimaal scheidingsteken (leeg)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Decimaal scheidingsteken (ongeldig)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Groepsscheidingsteken (ongeldig)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Valutasymbool (ongeldig)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Alle informatie exporteren" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Wijzigingslog" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Bug melden" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussies" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Met dank aan" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Maak een account aan of voeg er een toe om aan de slag te gaan. U kunt ook " +"een bestand naar de app slepen." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Kan geopend account niet over­schrijven." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Resultaat is gekopieerd naar klem­bord." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Rekening sluiten" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Standaardtransactietype" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Standaardkleur van overdrachten" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Standaardgroepskleur" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Voer een bedrag in" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "Oké" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Resultaat" + +#~ msgid "(Copy)" +#~ msgstr "(kopie)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} tag" +#~ msgstr[1] "{0} tags" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transactie" +#~ msgstr[1] "{0} transacties" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Accountnaam (bestaat)" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Voeg een transactie toe of importeer deze uit een bestand" + +#~ msgid "Add Password To PDF?" +#~ msgstr "Wachtwoord toevoegen aan PDF?" + +#~ msgid "All files" +#~ msgstr "Alle bestanden" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Bedrag (ongeldig)" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Weet u zeker dat u deze groep wilt verwijderen?\n" +#~ "Deze actie is onomkeerbaar." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Weet u zeker dat u deze transactie wilt verwijderen?\n" +#~ "Deze actie is onomkeerbaar." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Geen toegang tot de geselecteerde map, controleer Flatpak-rechten." + +#~ msgid "Currency Code" +#~ msgstr "Valutacode" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Valutacode (leeg)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Datum" + +#~ msgid "Delete Existing" +#~ msgstr "Bestaande verwijderen" + +#~ msgid "Delete Group" +#~ msgstr "Groep verwijderen" + +#~ msgid "Delete Only Source" +#~ msgstr "Alleen eerste verwijderen" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Ook alle opeenvolgende verwijderen" + +#~ msgid "Delete Transaction" +#~ msgstr "Transactie verwijderen" + +#~ msgid "Description" +#~ msgstr "Beschrijving" + +#~ msgid "Description (Empty)" +#~ msgstr "Beschrijving (blanco)" + +#~ msgid "Destination Account" +#~ msgstr "Bestemmingsrekening" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Bestemmingsrekening (ongeldig)" + +#~ msgid "Destination Account Password" +#~ msgstr "Wachtwoord van bestemmingsaccount" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Wachtwoord van bestemmingsaccount (ongeldig)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Wachtwoord van bestemmingsaccount (vereist)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Huidige loskoppelen" + +#~ msgid "Exported account to file successfully." +#~ msgstr "De rekening is geëxporteerd naar een bestand." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Gegenereerd: {0}" + +#~ msgid "Group" +#~ msgstr "Groep" + +#~ msgid "Group Name" +#~ msgstr "Groepsnaam" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Importeren uit account" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} transactie uit bestand geïmporteerd" +#~ msgstr[1] "{0} transacties uit bestand geïmporteerd" + +#~ msgid "N/A" +#~ msgstr "n/b" + +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgid "Name (Exists)" +#~ msgstr "Naam (bestaat)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Nee" + +#~ msgid "No End Date" +#~ msgstr "Geen einddatum" + +#~ msgid "No Transactions Found" +#~ msgstr "Geen transacties gevonden" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "" +#~ "Er zijn geen transacties gevonden die voldoen aan de opgegeven filters." + +#~ msgid "Notes" +#~ msgstr "Aantekeningen" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Niets om uit het bestand te importeren." + +#~ msgid "Page {0}" +#~ msgstr "Pagina {0}" + +#~ msgid "PDF Password" +#~ msgstr "PDF-wachtwoord" + +#~ msgid "Receipt" +#~ msgstr "Factuur" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Factuur (bestand niet toegankelijk)" + +#~ msgid "Receipts" +#~ msgstr "Facturen" + +#~ msgid "Repeat End Date" +#~ msgstr "Einddatum herhalen" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Einddatum herhaling (ongeldig)" + +#~ msgid "Repeat Interval" +#~ msgstr "Herhalingsinterval" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "De herhaalperiode is gewijzigd" + +#~ msgid "Select Account" +#~ msgstr "Account selecteren" + +#~ msgid "Select Backup Folder" +#~ msgstr "Back-up-map selecteren" + +#~ msgid "Sort By Amount" +#~ msgstr "Sorteren op hoeveelheid" + +#~ msgid "Sort By Date" +#~ msgstr "Sorteren op datum" + +#~ msgid "Sort By Id" +#~ msgstr "Sorteren op id" + +#~ msgid "Tags" +#~ msgstr "Tags" + +#~ msgid "The password of the account was changed." +#~ msgstr "Het wachtwoord van het account is gewijzigd" + +#~ msgid "The password of the account was removed." +#~ msgstr "Het wachtwoord van het account is verwijderd" + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "" +#~ "Het wachtwoord zal worden verwijderd bij het sluiten van deze dialoog" + +#~ msgid "The passwords do not match." +#~ msgstr "Wachtwoorden komen niet overeen" + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "De herhaalperiode is gewijzigd.\n" +#~ "Welke actie wilt u ondernemen op de huidige opeenvolgende transacties?\n" +#~ "\n" +#~ "Nieuwe opeenvolgende transacties worden op basis van de nieuwe periode " +#~ "ingepland." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Er staat geen geld op deze rekening." + +#, fuzzy +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Bij deze transactie is een herhaalperiode ingesteld.\n" +#~ "Welke actie wilt u ondernemen op de opeenvolgende transacties?\n" +#~ "\n" +#~ "Als u alleen de eerste transactie verwijdert, blijven\n" +#~ "de opeenvolgende aanpasbaar." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Bij deze transactie is een herhaalperiode ingesteld.\n" +#~ "Welke actie wilt u ondernemen op de opeenvolgende transacties?\n" +#~ "\n" +#~ "Als u alleen de eerste transactie bijwerkt, worden\n" +#~ "de opeenvolgende losgekoppeld.." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transactie" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Unable to export account to file." +#~ msgstr "De rekening kan niet worden geëxporteerd." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Kan trans­acties niet uit bestand importeren." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Kan bestaand account niet over­schrijven." + +#~ msgid "Untagged" +#~ msgstr "Ongetagd" + +#~ msgid "Upcoming transactions" +#~ msgstr "Aankomende transacties" + +#~ msgid "Update Only Source" +#~ msgstr "Alleen eerste bijwerken" + +#~ msgid "Update Source and Generated" +#~ msgstr "Ook alle opeenvolgende transacties bijwerken" + +#~ msgid "Update Transaction" +#~ msgstr "Transactie bijwerken" + +#~ msgid "Upload" +#~ msgstr "Uploaden" + +#~ msgid "View" +#~ msgstr "Bekijken" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Wilt u het PDF-bestand met een wachtwoord beschermen?\n" +#~ "\n" +#~ "Als het wachtwoord verloren is zal het PDF-bestand niet meer toegankelijk " +#~ "zijn." + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Beheer de valuta die door de rekening wordt gebruikt." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Stel een nieuw wachtwoord in of verwijder een wachtwoord" + +#~ msgid "Other" +#~ msgstr "Andere" + +#~ msgid "Unlimited" +#~ msgstr "Ongelimiteerd" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Huidige weergave exporteren" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Zoeken op beschrijving" + +#~ msgid "Today's Overview" +#~ msgstr "Dagoverzicht" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Alle overzichtfilters selecteren" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Nieuwe groep (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Groepen tonen/verbergen" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Alle groepsfilters selecteren" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Groepfilters deselecteren" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Tags tonen/verbergen" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Alle tag-filters selecteren" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Tag-filters deselecteren" + +#~ msgid "Calendar" +#~ msgstr "Agenda" + +#~ msgid "Select Current Month" +#~ msgstr "Huidige maand selecteren" + +#~ msgid "Reset To Today" +#~ msgstr "Terugzetten naar vandaag" + +#~ msgid "Today" +#~ msgstr "Vandaag" + +#~ msgid "Select Range" +#~ msgstr "Kies een datumbereik" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Begin" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Eind" + +#~ msgid "Sort From First To Last" +#~ msgstr "Oplopend sorteren" + +#~ msgid "Sort From Last To First" +#~ msgstr "Aflopend sorteren" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nieuwe overboeking (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nieuw" + +#~ msgid "Suggestions" +#~ msgstr "Suggesties" + +#~ msgid "Converter" +#~ msgstr "Conversie" + +#~ msgid "Loading..." +#~ msgstr "Laden…" + +#~ msgid "All Accounts" +#~ msgstr "Alle accounts" + +#~ msgid "Color" +#~ msgstr "Kleur" + +#~ msgid "Delete" +#~ msgstr "Verwijderen" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Dit is slechts een handig label dat de werking van het programma niet " +#~ "beïnvloedt" + +#~ msgid "Enter Password To Login:" +#~ msgstr "Voer wachtwoord in om in te loggen:" + +#~ msgid "Checking Account Color" +#~ msgstr "Kleur van betaal­rekening" + +#~ msgid "Savings Account Color" +#~ msgstr "Kleur van spaar­rekening" + +#~ msgid "Business Account Color" +#~ msgstr "Kleur van bedrijfs­rekening" + +#~ msgid "Use Native Digits" +#~ msgstr "Lokale decimale notatie gebruiken" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Of cijfertekens van uw taal moeten worden gebruikt in plaats van latijnse " +#~ "cijfers." + +#~ msgid "Backup" +#~ msgstr "Back-up" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV-back-up­map" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Onversleutelde acounts worden automatisch als CSV-bestanden naar deze map " +#~ "geëxporteerd wanneer een wijziging wordt aangebracht." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Back-up-map wissen" + +#~ msgid "No Reminders" +#~ msgstr "Geen herinneringen" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Overboeken" + +#~ msgid "New Transaction" +#~ msgstr "Nieuwe overboeking" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Zijbalk tonen/verbergen" + +#~ msgid "Make a Copy" +#~ msgstr "Kopie maken" + +#~ msgid "Clear End Date" +#~ msgstr "Einddatum wissen" + +#~ msgid "Daily" +#~ msgstr "Iedere dag" + +#~ msgid "Weekly" +#~ msgstr "Iedere week" + +#~ msgid "Biweekly" +#~ msgstr "Iedere twee weken" + +#~ msgid "Monthly" +#~ msgstr "Iedere maand" + +#~ msgid "Quarterly" +#~ msgstr "Ieder kwartaal" + +#~ msgid "Yearly" +#~ msgstr "Ieder jaar" + +#~ msgid "Biyearly" +#~ msgstr "Iedere twee jaar" + +#~ msgid "Use group color" +#~ msgstr "Groepskleur gebruiken" + +#~ msgid "Use unique color" +#~ msgstr "Unieke kleur gebruiken" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Voer nieuwe tag-naam in…" + +#~ msgid "Add Tag" +#~ msgstr "Tag toevoegen" + +#~ msgid "Extras" +#~ msgstr "Extra's" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Beheer extra velden van de transactie" + +#~ msgid "Enter notes here" +#~ msgstr "Voer aantekeningen hier in" + +#~ msgid "Edit Transaction" +#~ msgstr "Transactie bewerken" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Door geld over te maken wordt het bedrag in kwestie als uitgave op de " +#~ "oorspronkelijke rekening genoteerd en als inkomst op de andere." + +#~ msgid "Select a destination account" +#~ msgstr "Kies een bestemmingsrekening" + +#~ msgid "Recent Accounts" +#~ msgstr "Recente accounts" + +#~ msgid "Conversion Needed" +#~ msgstr "Conversie benodigd" + +#~ msgid "Use Custom Rates" +#~ msgstr "Aangepaste wissel­koersen gebruiken" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Voer wisselkoersen handmatig in" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Overboeken" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Nieuw" + +#~ msgid "Toggle Graphs" +#~ msgstr "Grafieken omschakelen" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Resultaat" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "money;finance;wallet;cash;bank;Nickvision;geld;financie;portemonnee;" +#~ "contant;pin;" + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Pas de vormgeving aan" + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Pas aan hoe Denaro regio-instellingen gebruikt" + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Pas back-up-locaties aan voor Denaro-accounts" + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Andere" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Hide" +#~ msgstr "Verbergen" + +#~ msgid "Show" +#~ msgstr "Tonen" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Datumfilters resetten" + +#~ msgid "Delete Group?" +#~ msgstr "Groep verwijderen?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Transactie verwijderen?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Rekeninginstellingen" + +#~ msgid "Version: {0}" +#~ msgstr "Versie: {0}" + +#~ msgid "About {0}" +#~ msgstr "Over {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors op GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "De vertalers op Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Geld overmaken (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importeren uit bestand (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filters" + +#~ msgid "Hide Groups" +#~ msgstr "Groepen verbergen" + +#~ msgid "Show Groups" +#~ msgstr "Groepen tonen" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Er zijn {0} transacties geïmporteerd." + +#~ msgid "Enter description here" +#~ msgstr "Voer een beschrijving in" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Money-rekening (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Beheer meerdere accounts tegelijk, met een vertrouwde tabblad-" +#~ "interface\n" +#~ "— Filter eenvoudig transacties op type, groep of datum\n" +#~ "— Herhaal eenvoudig transacties, zoals maandelijkse facturen\n" +#~ "— Maak geld over van de ene rekening naar de andere\n" +#~ "— Exporteer een account als een CSV-bestand of importeer een CSV-, OFX- " +#~ "of QIF-bestand om meerdere transacties in één keer aan een account toe te " +#~ "voegen" + +#~ msgid "New Window" +#~ msgstr "Nieuw venster" + +#~ msgid "Enter decimal separator" +#~ msgstr "Voer decimaal scheidingsteken in" + +#~ msgid "Enter group separator" +#~ msgstr "Voer groepsscheidingsteken in" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transacties ({0})" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transactie ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Geen back-up-map" + +#~ msgid "Reset All Filters" +#~ msgstr "Alle filters resetten" + +#~ msgid "Sort" +#~ msgstr "Sorteren" + +#~ msgid "Increasing" +#~ msgstr "Oplopend" + +#~ msgid "Order By" +#~ msgstr "Volgorde" + +#~ msgid "Sort By" +#~ msgstr "Sorteren op" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Accountinstellingen (Ctrl+.)" + +#~ msgid "Decreasing" +#~ msgstr "Aflopend" diff --git a/resources/po/oc.po b/resources/po/oc.po new file mode 100644 index 000000000..9933b464d --- /dev/null +++ b/resources/po/oc.po @@ -0,0 +1,1720 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Pas gropada" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transaccion sens grop" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transferir cap a {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transferir a partir de {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} de {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Segon vòstre sistèma vòstra devisa es" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Connexion al compte impossibla. Lo senhal fornit es invalid." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Gerissètz vòstras finanças personalas" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Chat Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Bonjorn" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Bonjorn" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Bon aprèp-miègjorn" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Bonser" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Bona jornada" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Aqueste compte es ja dobèrt." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Aqueste compte es ja dobèrt." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Aqueste compte es ja dobèrt." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importar d’un fichièr estant" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportar cap a un fichièr" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportar cap a un fichièr" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Vista d'ensemble" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Transferir d’argent" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Paramètres del compte" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Paramètres" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Revengut" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Despensa" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grops" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Grop novèl" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Novèla" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transaccions" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Compte" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +#, fuzzy +msgid "Account Name" +msgstr "Tipe de compte" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipe de compte" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Chècs" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Estalvis" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Afars" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tipe de transaccion per defaut" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Pas jamai" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Devisa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Utilizar una devisa personalizada" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +#, fuzzy +msgid "Decimal Separator" +msgstr "Inserir un separador decimal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Currency Symbol" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Senhal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Se lo senhal es perdut, i a pas cap de biais de restaurar lo compte !" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Senhal novèl" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Confirmar lo senhal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Cambiar lo senhal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Resultat" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Soma" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "Cap de compte recent" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Tornar" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Compte novèl" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +#, fuzzy +msgid "Let's Start" +msgstr "Debuta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Senhal del compte de destinacion (invalid)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +#, fuzzy +msgid "Select Folder" +msgstr "Seleccionar l’interval" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +#, fuzzy +msgid "Overwrite Existing Accounts" +msgstr "Compte de destinacion" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "Paramètres del compte" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +#, fuzzy +msgid "Account Currency" +msgstr "Menú del compte" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +#, fuzzy +msgid "Import File" +msgstr "Importar d’un fichièr estant" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +#, fuzzy +msgid "Select File" +msgstr "Seleccionar l’interval" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Preferéncias" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Acorchis de clavièr" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Ajuda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menú del compte" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Recents" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Compte novèl (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Dobrir compte (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Dobrir" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Cap de compte recent" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Levar" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menú principal" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Acuèlh" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Currency Code" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Comptes" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Tablèu de bòrd" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Creatz o dobrissètz un compte per començar. Podètz tanben far lissar un " +"fichièr dins l’aplicacion a partir de l’explorator de fichièrs." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipe de compte" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interfàcia utilizaire" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tèma" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +#, fuzzy +msgctxt "Theme" +msgid "Light" +msgstr "Clar" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +#, fuzzy +msgctxt "Theme" +msgid "Dark" +msgstr "Escur" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +#, fuzzy +msgctxt "Theme" +msgid "System" +msgstr "Sistèma" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Colors" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Personalizar las colors utilizadas per Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Color per defaut de las transaccions" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Una modificacion d’aqueste paramètre s’aplicarà sonque a las transaccions " +"apondudas recentament." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Color per defaut dels transferiments" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +#, fuzzy +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Una modificacion d’aqueste paramètre s’aplicarà sonque a las transaccions " +"apondudas recentament." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +#, fuzzy +msgid "Group Default Color" +msgstr "Color per defaut dels transferiments" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" +"Una modificacion d’aqueste paramètre s’aplicarà sonque a las transaccions " +"apondudas recentament." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Paramètres regionals" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Inserir un separador decimal" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Desactivat" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Ponch final" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Ponch e virgula" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Compte" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Dobrir compte" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplicacion" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplicacion" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Quitar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Tampar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Senhal" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Cambiar lo senhal" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Senhal" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Cap de transaccion" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Modificar lo grop" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importar d’un fichièr estant" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Depaus GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Compte Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Picatz lo senhal aquí" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Anullar" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Unlock" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "Dintratz lo nom aicí" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Dobrir" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Accions" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Estalvis" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Enter symbol here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Picatz un còdi aquí" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Soma" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importar d’un fichièr estant" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Cap de compte pas seleccionat" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Cap de compte pas dobèrt" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Currency Symbol (Empty)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nom (void)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +#, fuzzy +msgid "Decimal Separator (Empty)" +msgstr "Inserir un separador decimal" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +#, fuzzy +msgid "Decimal Separator (Invalid)" +msgstr "Inserir un separador decimal" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +#, fuzzy +msgid "Group Separator (Invalid)" +msgstr "Soma (invalida)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Currency Symbol (Empty)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Jornal de modificacions" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Senhalar una anomalia" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussions" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Crèdits" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Creatz o dobrissètz un compte per començar. Podètz tanben far lissar un " +"fichièr dins l’aplicacion a partir de l’explorator de fichièrs." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Impossible de subrecargar un compte dobèrt." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Tampar lo compte" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tipe de transaccion per defaut" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Color per defaut dels transferiments" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Color per defaut dels transferiments" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Dintratz la soma aicí" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "D'acòrdi" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Resultat" + +#~ msgid "(Copy)" +#~ msgstr "(Copiar)" + +#, fuzzy, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "Transaccion" +#~ msgstr[1] "Transaccion" + +#, fuzzy +#~ msgid "Account Name (Exists)" +#~ msgstr "Nom (existís)" + +#~ msgid "Add" +#~ msgstr "Ajustar" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "" +#~ "Ajustatz una transaccion novèla o importatz de transaccions a partir d’un " +#~ "fichièr." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Ajustar un senhal al document PDF ?" + +#~ msgid "All files" +#~ msgstr "Totes los fichièrs" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Soma (invalida)" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Volètz vertadièrament suprimir aqueste grop ?\n" +#~ "Aquesta accion se pòt pas anullar." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Volètz vertadièrament suprimir aquesta transaccion ?\n" +#~ "Aquesta accion se pòt pas anullar." + +#~ msgid "Currency Code" +#~ msgstr "Currency Code" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Currency Code (Empty)" + +#~ msgid "Date" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "Delete Existing" +#~ msgstr "Suprimir l’existent" + +#~ msgid "Delete Group" +#~ msgstr "Suprimir lo grop" + +#~ msgid "Delete Only Source" +#~ msgstr "Suprimir sonque la font" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Suprimir la font e las transaccions generadas" + +#~ msgid "Delete Transaction" +#~ msgstr "Suprimir la transaccion" + +#~ msgid "Description" +#~ msgstr "Descripcion" + +#~ msgid "Description (Empty)" +#~ msgstr "Descripcion (voida)" + +#~ msgid "Destination Account" +#~ msgstr "Compte de destinacion" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Compte de destinacion (invalid)" + +#~ msgid "Destination Account Password" +#~ msgstr "Senhal del compte de destinacion" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Senhal del compte de destinacion (invalid)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Senhal del compte de destinacion (obligatòri)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Dissociar l’existent" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Compte corrèctament exportat dins un fichièr." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Generat : {0}" + +#~ msgid "Group" +#~ msgstr "Grop" + +#~ msgid "Group Name" +#~ msgstr "Nom del grop" + +#~ msgid "Id" +#~ msgstr "Identificant" + +#, fuzzy +#~ msgid "Import from Account" +#~ msgstr "Importar d’un fichièr estant" + +#, fuzzy, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} transaccion importada del fichièr estant." +#~ msgstr[1] "{0} transaccion importada del fichièr estant." + +#~ msgid "N/A" +#~ msgstr "N/D" + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "Name (Exists)" +#~ msgstr "Nom (existís)" + +#~ msgid "No" +#~ msgstr "Non" + +#~ msgid "No End Date" +#~ msgstr "Cap de data de fin" + +#~ msgid "No Transactions Found" +#~ msgstr "Cap de transaccion pas trobada" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Cap de transaccion correspondenta als filtres especificats." + +#~ msgid "Notes" +#~ msgstr "Nòtas" + +#~ msgid "Page {0}" +#~ msgstr "Pagina {0}" + +#~ msgid "PDF Password" +#~ msgstr "Senhal PDF" + +#~ msgid "Receipt" +#~ msgstr "Recebut" + +#~ msgid "Receipts" +#~ msgstr "Recebuts" + +#~ msgid "Repeat End Date" +#~ msgstr "Repetir la data de fin" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Repetir la data de fin (invalida)" + +#~ msgid "Repeat Interval" +#~ msgstr "Interval de repeticion" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Interval de repeticion modificat" + +#, fuzzy +#~ msgid "Select Account" +#~ msgstr "Comptes recents" + +#~ msgid "Sort By Amount" +#~ msgstr "Triar per soma" + +#~ msgid "Sort By Date" +#~ msgstr "Triar per data" + +#~ msgid "Sort By Id" +#~ msgstr "Triar per identificant" + +#~ msgid "The password of the account was changed." +#~ msgstr "Lo senhal del compte es estat modificat." + +#~ msgid "The password of the account was removed." +#~ msgstr "Lo senhal del compte es estat tirat." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Serà tirat lo senhal a la tampadura de la bóstia de dialòg." + +#, fuzzy +#~ msgid "The passwords do not match." +#~ msgstr "Lo senhal del compte es estat modificat." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Aqueste compte a pas cap d’argent disponible per transferir." + +#~ msgid "Transaction" +#~ msgstr "Transaccion" + +#~ msgid "Type" +#~ msgstr "Tipe" + +#~ msgid "Unable to export account to file." +#~ msgstr "Exportacion dins un fichièr del compte impossible." + +#, fuzzy +#~ msgid "Unable to import transactions from the file." +#~ msgstr "" +#~ "Ajustatz una transaccion novèla o importatz de transaccions a partir d’un " +#~ "fichièr." + +#, fuzzy +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Impossible de subrecargar un compte dobèrt." + +#, fuzzy +#~ msgid "Upcoming transactions" +#~ msgstr "Cap de transaccion" + +#~ msgid "Update Only Source" +#~ msgstr "Actualizar sonque la font" + +#~ msgid "Update Source and Generated" +#~ msgstr "Actualizar la font e las transaccions generadas" + +#~ msgid "Update Transaction" +#~ msgstr "Actualizar la transaccion" + +#~ msgid "Upload" +#~ msgstr "Enviar" + +#~ msgid "View" +#~ msgstr "Afichatge" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Volètz protegir aqueste fichièr PDF amb un senhal ?\n" +#~ "\n" +#~ "En cas de pèrda del senhal lo document serà inaccessible." + +#~ msgid "Yes" +#~ msgstr "Òc" + +#~ msgid "Set a new password or remove one." +#~ msgstr "Causissètz un senhal novèl o suprimissètz-ne un." + +#, fuzzy +#~ msgid "Export Current View" +#~ msgstr "Exportar cap a un fichièr" + +#~ msgid "Search by description" +#~ msgstr "Recercar per descripcion" + +#~ msgid "Today's Overview" +#~ msgstr "Vista d’ensemble per uèi" + +#, fuzzy +#~ msgid "Select All Overview Filters" +#~ msgstr "Reïnicializar los filtres de la vista d’ensemble" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Grop novèl (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Bascular la visibilitat dels grops" + +#, fuzzy +#~ msgid "Select All Groups Filters" +#~ msgstr "Reïnicializar los filtres de grops" + +#, fuzzy +#~ msgid "Unselect Groups Filters" +#~ msgstr "Reïnicializar los filtres de grops" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Bascular la visibilitat dels grops" + +#, fuzzy +#~ msgid "Select All Tags Filters" +#~ msgstr "Reïnicializar los filtres de grops" + +#, fuzzy +#~ msgid "Unselect Tags Filters" +#~ msgstr "Reïnicializar los filtres de grops" + +#~ msgid "Calendar" +#~ msgstr "Calendièr" + +#~ msgid "Select Range" +#~ msgstr "Seleccionar l’interval" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Debuta" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Fin" + +#~ msgid "Sort From First To Last" +#~ msgstr "Triar del primièr al darnièr" + +#~ msgid "Sort From Last To First" +#~ msgstr "Triar del darnièr al primièr" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Transaccion novèla (Ctrl+Maj+N)" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Novèla" + +#~ msgid "All Accounts" +#~ msgstr "Totes los comptes" + +#~ msgid "Color" +#~ msgstr "Color" + +#~ msgid "Delete" +#~ msgstr "Suprimir" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Es sonque una etiqueta utila qu’afècta pas lo foncionament de " +#~ "l’aplicacion." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Picatz lo senhal per vos connectar :" + +#~ msgid "Checking Account Color" +#~ msgstr "Color del compte chèc" + +#~ msgid "Savings Account Color" +#~ msgstr "Color del compte d’estalvis" + +#~ msgid "Business Account Color" +#~ msgstr "Color del compte d’afars" + +#, fuzzy +#~ msgid "Backup" +#~ msgstr "Tornar" + +#, fuzzy +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#~ msgid "New Transaction" +#~ msgstr "Transaccion novèla" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Afichar o amagar lo panèl lateral" + +#~ msgid "Make a Copy" +#~ msgstr "Realizar una còpia" + +#~ msgid "Clear End Date" +#~ msgstr "Escafar la data de fin" + +#~ msgid "Daily" +#~ msgstr "Jornalièr" + +#~ msgid "Weekly" +#~ msgstr "Setmanièr" + +#~ msgid "Biweekly" +#~ msgstr "Bisetmanièr" + +#~ msgid "Monthly" +#~ msgstr "Mesadièr" + +#~ msgid "Quarterly" +#~ msgstr "Trimestral" + +#~ msgid "Yearly" +#~ msgstr "Annadièr" + +#~ msgid "Biyearly" +#~ msgstr "Biannal" + +#~ msgid "Extras" +#~ msgstr "Extras" + +#~ msgid "Edit Transaction" +#~ msgstr "Modificar la transaccion" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Lo transferiment d'argent debitarà del montant donat aquel compte e " +#~ "creditarà d’aqueste montant lo compte causit." + +#~ msgid "Select a destination account" +#~ msgstr "Seleccionatz un compte de destinacion" + +#~ msgid "Recent Accounts" +#~ msgstr "Comptes recents" + +#~ msgid "Conversion Needed" +#~ msgstr "Conversion requerida" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "Utilizar una devisa personalizada" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Picatz la conversion aicí" + +#, fuzzy +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Novèla" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Resultat" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "argent;finança;pòrtafuèlha;cash;GTK;Nickvision;" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Personalizatz l’interfàcia utilizaire." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Personalizar coma Denaro utiliza los paramètres regionals." + +#, fuzzy +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Personalizatz l’interfàcia utilizaire." + +#~ msgid "Save" +#~ msgstr "Enregistrar" + +#~ msgid "Hide" +#~ msgstr "Amagar" + +#~ msgid "Show" +#~ msgstr "Mostrar" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Reïnicializar los filtres de datas" + +#~ msgid "Delete Group?" +#~ msgstr "Suprimir lo grop ?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Suprimir la transaccion ?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Paramètres del compte" + +#~ msgid "Version: {0}" +#~ msgstr "Version : {0}" + +#~ msgid "About {0}" +#~ msgstr "A prepaus de {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors de GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Traductors sus Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Transferir d’argent (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importar d’un fichièr estant (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtres" + +#~ msgid "Hide Groups" +#~ msgstr "Amagar los grops" + +#~ msgid "Show Groups" +#~ msgstr "Mostrar los grops" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "{0} transaccions importadas del fichièr estant." + +#~ msgid "Enter description here" +#~ msgstr "Dintratz la descripcion aicí" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Compte bancari (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Gerissètz vòstras finanças personalas" + +#~ msgid "New Window" +#~ msgstr "Fenèstra novèla" + +#~ msgid "Transactions ({0})" +#~ msgstr "{0} transaccions" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transaccion ({0})" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Configuracion del compte (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Triar" + +#~ msgid "Order By" +#~ msgstr "Triar per" + +#~ msgid "Increasing" +#~ msgstr "Ascendent" + +#~ msgid "Decreasing" +#~ msgstr "Descendent" + +#~ msgid "Sort By" +#~ msgstr "Triar per" diff --git a/resources/po/pl.po b/resources/po/pl.po new file mode 100644 index 000000000..ab3225ae0 --- /dev/null +++ b/resources/po/pl.po @@ -0,0 +1,1947 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-11-15 07:06+0000\n" +"Last-Translator: Michał Dominik \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.2-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Bez grupy" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transakcje bez grupy" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Przelej do {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Przelej z {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} z {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Jutro" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Tydzień od dziś" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Miesiąc od dziś" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Dwa miesiące od dziś" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Dwa miesiące od dziś" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Twój system zgłasza, że twoją walutą jest" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Nie można zalogować się na konto. Podane hasło jest nieprawidłowe." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Zarządzaj swoimi finansami" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Czat na Matriksie" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Współautorzy z GitHuba ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Dominik Gęgotek , 2023" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Dzień dobry!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Dzień dobry!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Dzień dobry!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Dobry wieczór!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Dobrego dnia!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "To konto jest już otwarte." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "To konto jest już otwarte." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "To konto jest już otwarte." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Import z pliku" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Eksport do pliku" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Eksport do pliku" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Przegląd" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Przelew środków" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Ustawienia konta" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Ustawienia" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Łącznie" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Dochód" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Wydatek" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Przypomnienia" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupy" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Nowa grupa" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Nowa" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transakcje" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Wizualizuj" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Dalej" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nazwa konta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Rodzaj konta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Bieżące" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Oszczędnościowe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Firmowe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Rodzaj domyślnej transakcji" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Częstotliwość przypomnień o transakcji" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nigdy" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Dzień przed" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Tydzień przed" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Miesiąc przed" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Dwa miesiące przed" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Waluta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Użyj własnej waluty" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separator dziesiętny" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separator grup" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Brak" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Cyfry dziesiętne" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Dwa" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Trzy" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Cztery" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Pięć" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Sześć" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Styl wyświetlania kwoty" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Symbol waluty" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Hasło" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Jeśli zapomnisz hasła nie ma możliwości przywrócenia pliku!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nowe hasło" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Potwierdź hasło" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Zmień hasło" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Zmień waluty" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Zmień" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Źródło" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Wynik" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Kwota" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Kopiuj wynik kwoty" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Cofnij" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nowe konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Użyj kreatora, aby w pełni wykorzystać swoje konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Zacznijmy" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Lokalizacja pamięci" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Hasło konta (opcjonalne)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Folder" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Wybierz folder" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Nadpisuj istniejące konta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Opcje konta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Waluta konta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importuj istniejące informacje" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Prześlij odpowiedni plik, aby zaimportować istniejące informacje do nowego " +"konta." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Import pliku" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Wybierz plik" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Wyczyść plik" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Stwórz" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Opcje" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Skróty klawiszowe" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Pomoc" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "O Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menu konta" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Ostatnie" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nowe konto (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Otwórz konto (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Otwórz" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Brak ostatnich kont" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Usuń" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Główne menu" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Strona domowa" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Przelicznik walut" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Konta" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Panel" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Stwórz lub otwórz istniejące konto, aby zacząć. Możesz też przeciągnąć tu " +"plik z komputera." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Rodzaj konta" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interfejs użytkownika" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Motyw" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Jasny" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Ciemny" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Systemowy" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Kolory" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Dostosuj kolory używane przez Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Domyślny kolor transakcji" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "Zmiana tej opcji zostanie zastosowana wyłącznie do nowych transakcji." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Domyślny kolor przelewu" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Zmiana tej opcji zostanie zastosowana wyłącznie do nowych przelewów." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Domyślny kolor grupy" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Zmiana tej opcji zostanie zastosowana tylko do nowych grup." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Opcje regionalne" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Wstawianie separatora dziesiętnego" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Ustaw klawisze, które będą wstawiać regionalny separator dziesiętny w polu " +"kwoty." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Wyłączone" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Tylko kropka klaw. num." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Kropka i przecinek" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Otwórz konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplikacja" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplikacja" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Wyjdź" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Błąd" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Nie można załadować danych o walucie. Spróbuj ponownie. Jeśli to nie pomoże, " +"zgłoś błąd." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Zamknij" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Wynik skopiowany do schowka." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Siła hasła" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Zmień hasło" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Siła hasła" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Brak transakcji" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Edytuj grupę" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Import pliku" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repozytorium na GitHubie" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Konto Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Wpisz tutaj hasło" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Anuluj" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Odblokuj" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Lokalizacja pamięci" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Wpisz tutaj nazwę" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Otwórz" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Działania" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Oszczędnościowe" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Wpisz tutaj symbol" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Wpisz tutaj kod" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Styl wyświetlania kwoty" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Import pliku" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Nie wybrano konta" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nazwa konta (otwarte)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Symbol waluty (pusty)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nazwa (pusta)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separator dziesiętny (pusty)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separator dziesiętny (niepoprawny)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separator grup (niepoprawny)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Symbol waluty (niepoprawny)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Eksportuj wszystkie informacje" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Lista zmian" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Zgłoś błąd" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussions" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Zasługi" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Stwórz lub otwórz istniejące konto, aby zacząć. Możesz też przeciągnąć tu " +"plik z komputera." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Nie można nadpisać otwartego konta." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Wynik skopiowany do schowka." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Zamknij konto" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Rodzaj domyślnej transakcji" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Domyślny kolor przelewu" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Domyślny kolor grupy" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Wpisz tutaj kwotę" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Wynik" + +#~ msgid "(Copy)" +#~ msgstr "(Kopia)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} tag" +#~ msgstr[1] "{0} tagi" +#~ msgstr[2] "{0} tagów" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "transakcja" +#~ msgstr[1] "transakcje" +#~ msgstr[2] "transakcji" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Nazwa konta (już istnieje)" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Dodaj nową transakcję lub zaimportuj transakcje z pliku." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Dodać hasło do pliku PDF?" + +#~ msgid "All files" +#~ msgstr "Wszystkie pliki" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Kwota (niepoprawna)" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Czy na pewno chcesz usunąć tę grupę?\n" +#~ "Tej czynności nie można cofnąć." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Czy na pewno chcesz usunąć tę transakcję?\n" +#~ "Tej czynności nie można cofnąć." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Brak dostępu do wybranego folderu, sprawdź uprawnienia Flatpaka." + +#~ msgid "Currency Code" +#~ msgstr "Kod waluty" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Kod waluty (pusty)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Delete Existing" +#~ msgstr "Usuń istniejące" + +#~ msgid "Delete Group" +#~ msgstr "Usuń grupę" + +#~ msgid "Delete Only Source" +#~ msgstr "Usuń tylko źródłową" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Usuń źródłową i wygenerowane" + +#~ msgid "Delete Transaction" +#~ msgstr "Usuń transakcję" + +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgid "Description (Empty)" +#~ msgstr "Opis (pusty)" + +#~ msgid "Destination Account" +#~ msgstr "Konto docelowe" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Konto docelowe (niepoprawne)" + +#~ msgid "Destination Account Password" +#~ msgstr "Hasło konta docelowego" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Hasło konta docelowego (niepoprawne)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Hasło konta docelowego (wymagane)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Rozdziel istniejące" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Poprawnie wyeksportowano konto do pliku." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Stworzono: {0}" + +#~ msgid "Group" +#~ msgstr "Grupa" + +#~ msgid "Group Name" +#~ msgstr "Nazwa grupy" + +#~ msgid "Id" +#~ msgstr "Identyfikator (ID)" + +#~ msgid "Import from Account" +#~ msgstr "Import z konta" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Zaimportowano {0} transakcję z pliku." +#~ msgstr[1] "Zaimportowano {0} transakcje z pliku." +#~ msgstr[2] "Zaimportowano {0} transakcji z pliku." + +#~ msgid "N/A" +#~ msgstr "nd." + +#~ msgid "Name" +#~ msgstr "Nazwa" + +#~ msgid "Name (Exists)" +#~ msgstr "Nazwa (już istnieje)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Nie" + +#~ msgid "No End Date" +#~ msgstr "Bez daty końca" + +#~ msgid "No Transactions Found" +#~ msgstr "Nie znaleziono transakcji" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Żadna transakcja nie odpowiada zastosowanym filtrom." + +#~ msgid "Notes" +#~ msgstr "Uwagi" + +#~ msgid "Nothing to import from the file." +#~ msgstr "W pliku nie ma nic do zaimportowania." + +#~ msgid "Page {0}" +#~ msgstr "Strona {0}" + +#~ msgid "PDF Password" +#~ msgstr "Hasło do pliku PDF" + +#~ msgid "Receipt" +#~ msgstr "Potwierdzenie" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Potwierdzenie (plik niedostępny)" + +#~ msgid "Receipts" +#~ msgstr "Potwierdzenia" + +#~ msgid "Repeat End Date" +#~ msgstr "Data końca powtarzania" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Data końca powtarzania (niepoprawna)" + +#~ msgid "Repeat Interval" +#~ msgstr "Interwał powtarzania" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Zmieniono interwał powtarzania" + +#~ msgid "Select Account" +#~ msgstr "Wybierz konto" + +#~ msgid "Select Backup Folder" +#~ msgstr "Wybierz folder do kopii zapasowej" + +#~ msgid "Sort By Amount" +#~ msgstr "Sortuj po kwocie" + +#~ msgid "Sort By Date" +#~ msgstr "Sortuj po dacie" + +#~ msgid "Sort By Id" +#~ msgstr "Sortuj po ID" + +#~ msgid "Tags" +#~ msgstr "Tagi" + +#~ msgid "The password of the account was changed." +#~ msgstr "Zmieniono hasło do konta." + +#~ msgid "The password of the account was removed." +#~ msgstr "Usunięto hasło do konta." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Hasło zostanie usunięte po zamknięciu tego monitu." + +#~ msgid "The passwords do not match." +#~ msgstr "Hasła nie są jednakowe." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Zmieniono interwał powtarzania.\n" +#~ "Co chcesz zrobić z istniejącymi wygenerowanymi transakcjami?\n" +#~ "\n" +#~ "Nowe transakcje powtarzane będą generowane zgodnie z nowym interwałem." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "To konto nie ma dostępnych środków do przelewu." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "To jest źródłowa transakcja powtarzalna.\n" +#~ "Co chcesz zrobić z wygenerowanymi przez nią transakcjami?\n" +#~ "\n" +#~ "Usunięcie tylko transakcji źródłowej pozwoli na to,\n" +#~ "aby poszczególne wygenerowane transakcje były edytowalne." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "To jest źródłowa transakcja powtarzalna.\n" +#~ "Co chcesz zrobić z wygenerowanymi przez nią transakcjami?\n" +#~ "\n" +#~ "Zaktualizowanie tylko transakcji źródłowej \n" +#~ "rozdzieli od niej wygenerowane transakcje." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transakcja" + +#~ msgid "Type" +#~ msgstr "Rodzaj" + +#~ msgid "Unable to export account to file." +#~ msgstr "Nie można eksportować konta do pliku." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Nie można zaimportować informacji z pliku. Upewnij się, że aplikacja ma " +#~ "uprawnienia dostępu do pliku i spróbuj ponownie." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Nie można zaimportować transakcji z pliku." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Nie można utworzyć konta. Upewnij się, że aplikacja ma uprawnienia " +#~ "dostępu do pliku i spróbuj ponownie." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Nie można nadpisać istniejącego konta." + +#~ msgid "Untagged" +#~ msgstr "Nieotagowane" + +#~ msgid "Upcoming transactions" +#~ msgstr "Nadchodzące transakcje" + +#~ msgid "Update Only Source" +#~ msgstr "Zaktualizuj tylko źródłową" + +#~ msgid "Update Source and Generated" +#~ msgstr "Zaktualizuj źródłową i wygenerowane" + +#~ msgid "Update Transaction" +#~ msgstr "Zaktualizuj transakcję" + +#~ msgid "Upload" +#~ msgstr "Wgraj" + +#~ msgid "View" +#~ msgstr "Pokaż" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Czy chcesz zabezpieczyć plik PDF hasłem?\n" +#~ "\n" +#~ "Jeśli utracisz hasło, PDF będzie niedostępny." + +#~ msgid "Yes" +#~ msgstr "Tak" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Zarządzaj walutą używaną przez konto." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Ustaw nowe hasło lub usuń stare." + +#~ msgid "Other" +#~ msgstr "Inny" + +#~ msgid "Unlimited" +#~ msgstr "Bez limitu" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Eksportuj obecny widok" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Szukaj po opisie" + +#~ msgid "Today's Overview" +#~ msgstr "Przegląd za dziś" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Wybierz wszystkie filtry przeglądu" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Nowa grupa (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Ustaw widoczność grup" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Wybierz wszystkie filtry grup" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Odznacz filtry grup" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Ustaw widoczność tagów" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Wybierz wszystkie filtry tagów" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Odznacz filtry tagów" + +#~ msgid "Calendar" +#~ msgstr "Kalendarz" + +#~ msgid "Select Current Month" +#~ msgstr "Wybierz obecny miesiąc" + +#~ msgid "Reset To Today" +#~ msgstr "Zresetuj do dzisiaj" + +#~ msgid "Today" +#~ msgstr "Dziś" + +#~ msgid "Select Range" +#~ msgstr "Wybierz zakres" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Początek" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Koniec" + +#~ msgid "Sort From First To Last" +#~ msgstr "Sortuj od najnowszych" + +#~ msgid "Sort From Last To First" +#~ msgstr "Sortuj od najstarszych" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nowa transakcja (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Nowa" + +#~ msgid "Suggestions" +#~ msgstr "Sugestie" + +#~ msgid "Converter" +#~ msgstr "Przelicznik" + +#~ msgid "Loading..." +#~ msgstr "Ładowanie..." + +#~ msgid "All Accounts" +#~ msgstr "Wszystkie konta" + +#~ msgid "Color" +#~ msgstr "Kolor" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "To tylko przydatna etykieta, nie ma wpływu na działanie aplikacji." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Wpisz hasło, aby się zalogować:" + +#~ msgid "Checking Account Color" +#~ msgstr "Kolor konta bieżącego" + +#~ msgid "Savings Account Color" +#~ msgstr "Kolor konta oszczędnościowego" + +#~ msgid "Business Account Color" +#~ msgstr "Kolor konta firmowego" + +#~ msgid "Use Native Digits" +#~ msgstr "Używaj cyfr rodzimych" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "Zamiast cyfr łacińskich używaj cyfr rodzimych dla danego regionu." + +#~ msgid "Backup" +#~ msgstr "Kopia zapasowa" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Folder kopii zapasowych CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Nieszyfrowane konta będą automatycznie eksportowane jako pliki CSV do " +#~ "tego folderu po wprowadzeniu zmiany." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Wyczyść folder kopii zapasowej" + +#~ msgid "No Reminders" +#~ msgstr "Brak przypomnień" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Przelew" + +#~ msgid "New Transaction" +#~ msgstr "Nowa transakcja" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Pokaż/ukryj panel boczny" + +#~ msgid "Make a Copy" +#~ msgstr "Stwórz kopię" + +#~ msgid "Clear End Date" +#~ msgstr "Usuń datę końca" + +#~ msgid "Daily" +#~ msgstr "Codziennie" + +#~ msgid "Weekly" +#~ msgstr "Co tydzień" + +#~ msgid "Biweekly" +#~ msgstr "Co dwa tygodnie" + +#~ msgid "Monthly" +#~ msgstr "Co miesiąc" + +#~ msgid "Quarterly" +#~ msgstr "Co kwartał" + +#~ msgid "Yearly" +#~ msgstr "Co rok" + +#~ msgid "Biyearly" +#~ msgstr "Co dwa lata" + +#~ msgid "Use group color" +#~ msgstr "Użyj koloru grupy" + +#~ msgid "Use unique color" +#~ msgstr "Użyj unikalnego koloru" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Wpisz nową nazwę tagu..." + +#~ msgid "Add Tag" +#~ msgstr "Dodaj tag" + +#~ msgid "Extras" +#~ msgstr "Dodatkowe" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Zarządzaj dodatkowymi polami transakcji." + +#~ msgid "Enter notes here" +#~ msgstr "Wpisz tu uwagi" + +#~ msgid "Edit Transaction" +#~ msgstr "Edytuj transakcję" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Przelew środków stworzy wydatek o kwocie przelewu na tym koncie oraz " +#~ "dochód o kwocie przelewu na koncie, na które wykonywany jest przelew." + +#~ msgid "Select a destination account" +#~ msgstr "Wybierz konto docelowe" + +#~ msgid "Recent Accounts" +#~ msgstr "Ostatnie konta" + +#~ msgid "Conversion Needed" +#~ msgstr "Wymiana jest wymagana" + +#~ msgid "Use Custom Rates" +#~ msgstr "Użyj własnych przeliczników wymiany" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Wpisz ręcznie przelicznik wymiany" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Przelew" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Nowe" + +#~ msgid "Toggle Graphs" +#~ msgstr "Włącz wykresy" + +#~ msgid "result" +#~ msgstr "wynik" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "pieniądze;finanse;portfel;gotówka;bank;Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Zarządzaj wieloma kontami jednocześnie, korzystając ze znajomego " +#~ "interfejsu zakładek" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— Łatwo filtruj transakcje według typu, grupy lub daty" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Łatwo powtarzaj transakcje, takie jak rachunki, które występują co " +#~ "miesiąc" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Przelewaj pieniądze z jednego konta na drugie" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Eksportuj konto do pliku CSV i importuj pliki CSV, OFX lub QIF, aby " +#~ "zbiorczo dodawać transakcje do konta" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "Transakcje są importowane, proszę czekać..." + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Nie można zaimportować informacji z pliku. Nieobsługiwany typ pliku." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Dostosuj wygląd interfejsu użytkownika aplikacji." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Dosotsuj jak Denaro korzysta z ustawień regionalnych." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Dostosuje lokalizację kopii zapasowych kont Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Inny" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Hide" +#~ msgstr "Ukryj" + +#~ msgid "Show" +#~ msgstr "Pokaż" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Usuń filtry dat" + +#~ msgid "Delete Group?" +#~ msgstr "Usunąć grupę?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Usunąć transakcję?" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "- Naprawiono błąd, w wyniku którego Denaro zawieszało się na systemach z " +#~ "nieskonfigurowanymi ustawieniami lokalnymi" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "" +#~ "- Naprawiono błąd, w wyniku którego eksportowanie plików PDF nie powiodło " +#~ "się w przypadku kont z wieloma potwierdzeniami" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "" +#~ "- Naprawiono błąd, w wyniku którego filtr grupy był ponownie aktywowany " +#~ "po dodaniu transakcji do danej grupy" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "- Denaro będzie wyświetlać komunikaty o błędach przy próbie dostępu do " +#~ "niedostępnego pliku, zamiast zawieszać się" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "- Zaktualizowane tłumaczenia (Dzięki wszystkim z Weblate'a)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Ustawienia konta" + +#~ msgid "Version: {0}" +#~ msgstr "Wersja: {0}" + +#~ msgid "About {0}" +#~ msgstr "O {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Współautorzy z GitHuba ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Tłumacze z Weblate'a ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Przelew środków (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Import z pliku (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtry" + +#~ msgid "Hide Groups" +#~ msgstr "Ukryj grupy" + +#~ msgid "Show Groups" +#~ msgstr "Pokaż grupy" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Liczba zaimportowanych transakcji z pliku: {0}." + +#~ msgid "Enter description here" +#~ msgstr "Wpisz tutaj opis" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Zarządzaj wieloma kontami jednocześnie, korzystając ze znajomego " +#~ "interfejsu zakładek\n" +#~ "— Łatwo filtruj transakcje według typu, grupy lub daty\n" +#~ "— Łatwo powtarzaj transakcje, takie jak rachunki, które pojawiają się co " +#~ "miesiąc\n" +#~ "— Przelewaj pieniądze z jednego konta na drugie\n" +#~ "— Eksportuj konto jako plik CSV i importuj pliki CSV, OFX lub QIF, aby " +#~ "zbiorczo dodawać transakcje do konta" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Konto Money (*.nmoney)" + +#~ msgid "New Window" +#~ msgstr "Nowe okno" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transakcja ({0})" + +#~ msgid "Enter decimal separator" +#~ msgstr "Wprowadź separator dziesiętny" + +#~ msgid "Enter group separator" +#~ msgstr "Wprowadź separator grup" + +#~ msgid "No Backup Folder" +#~ msgstr "Brak folderu kopii zapasowej" + +#~ msgid "Reset All Filters" +#~ msgstr "Usuń wszystkie filtry" + +#~ msgid "Order By" +#~ msgstr "Ułóż" + +#~ msgid "Decreasing" +#~ msgstr "Malejąco" + +#~ msgid "Sort" +#~ msgstr "Sortuj" + +#~ msgid "Sort By" +#~ msgstr "Sortuj po" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Ustawienia konta (Ctrl+.)" + +#~ msgid "Increasing" +#~ msgstr "Rosnąco" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transakcje ({0})" diff --git a/resources/po/pt.po b/resources/po/pt.po new file mode 100644 index 000000000..2d12ba7a5 --- /dev/null +++ b/resources/po/pt.po @@ -0,0 +1,1880 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2024-03-24 18:44+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Sem Grupo" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transações sem grupo" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transferir Para {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transferir De {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} de {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Amanhã" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Daqui uma semana" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Daqui um mês" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Daqui a dois meses" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Daqui a dois meses" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Seu sistema relatou que sua moeda é" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Não foi possível conectar em sua conta. Senha inserida está incorreta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Gerencie suas finanças pessoais" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Chat Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Cassio Pereira " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Bom Dia!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Bom Dia!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Boa Tarde!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Boa Noite!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Bom Dia!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Esta conta já está aberta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Esta conta já está aberta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Esta conta já está aberta." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportar para Arquivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportar para Arquivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Visão Geral" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Transferir Dinheiro" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Configurações da Conta" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Configurações" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Rendimentos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Despesas" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Lembretes" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Novo Grupo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Novo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transações" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Visualizar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Próximo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nome da Conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Account Type" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Verificando" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Economias" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Negócio" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tipo de Transação Padrão" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Limite de Lembretes de Transação" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nunca" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Um dia antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Uma semana antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Um Mês Antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Dois Meses Antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Currency" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Usar Moeda Personalizada" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separador decimal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separador de grupo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +#, fuzzy +msgid "None" +msgstr "Nenhum" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Dígitos decimais" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Dois" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Três" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Quatro" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Cinco" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Seis" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Estilo de Exibição do Valor" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Currency Symbol" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" +"Se a palavra-passe for perdida, não será possível restaurar o ficheiro!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nova Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Confirmar Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Alterar Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Trocar moedas" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Trocar" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Origem" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Resultado" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Valor" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Copiar Resultado" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Voltar" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nova Conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Use este assistente para aproveitar a sua conta ao máximo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Vamos Começar" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Local de Armazenamento" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Palavra-passe da Conta (Opcional)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Pasta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Selecionar Pasta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Sobrescrever Contas Existentes" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "Configurações da Conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Moeda da Conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importar Todas as Informações" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Envie um ficheiro válido para importar informações existentes na nova conta." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +#, fuzzy +msgid "Import File" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +#, fuzzy +msgid "Select File" +msgstr "Selecione a Pasta de Backup" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +#, fuzzy +msgid "Clear File" +msgstr "Limpar a Pasta de Backup" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Criar" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Configurações" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Atalhos do Teclado" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Ajuda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +#, fuzzy +msgid "About Denaro" +msgstr "Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menu de contas" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Recente" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nova Conta (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Abrir Conta (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Abrir" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Nenhuma Conta Recente" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Remover" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menu principal" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Página Inicial" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Currency Code" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Contas" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Painel" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Crie ou abra uma conta para iniciar. Você também pode arrastar um ficheiro " +"do seu explorador de ficheiros para o aplicativo." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Account Type" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interface de usuário" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +#, fuzzy +msgctxt "Theme" +msgid "Light" +msgstr "Claro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +#, fuzzy +msgctxt "Theme" +msgid "Dark" +msgstr "Escuro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +#, fuzzy +msgctxt "Theme" +msgid "System" +msgstr "Sistema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Cores" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Customize as cores usadas no Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Cor padrão de transações" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Alterações nessa configuração serão aplicadas somente em novas transações." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Cor padrão de transferências" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Alterações nessa configuração serão aplicadas somente em novas " +"transferências." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Cor Padrão do Grupo" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Mudanças nesta configuração apenas serão aplicadas em novos grupos." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Localidade" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Inserir Separador Decimal" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Definir para quais teclas pressionadas o separador decimal da localidade " +"será inserido em um campo de valor." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Desligado" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Apenas ponto do teclado numérico" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Ponto Final e Vírgula" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Conta" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Abrir Conta" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplicação" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplicação" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Sair" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Erro" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Não foi possível carregar dados de moeda. Por favor, tente novamente. Se o " +"erro ainda persistir, relate um bug." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Fechar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Resultado copiado para a área de transferência." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Password" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Alterar Senha" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Password" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Nenhuma Transação" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Editar Grupo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repositório do GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Conta Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Insira a senha aqui" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Cancelar" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Desbloquear" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Local de Armazenamento" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Insira o nome aqui" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Abrir" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Ações" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Economias" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Insira o símbolo aqui" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Insira o código aqui" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Estilo de Exibição do Valor" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Nenhuma conta selecionada" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nome da Conta (Aberta)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Símbolo da Moeda (Vazio)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nome (vazio)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separador decimal (vazio)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separador decimal (inválido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separador de grupo (inválido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Símbolo da moeda (inválido)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Exportar Todas as Informações" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Registro de mudanças" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Relatar um Erro" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussões" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Créditos" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Crie ou abra uma conta para iniciar. Você também pode arrastar um ficheiro " +"do seu explorador de ficheiros para o aplicativo." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Não é possível substituir uma conta aberta." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Resultado copiado para a área de transferência." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Fechar conta" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tipo de Transação Padrão" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Cor padrão de transferências" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Cor Padrão do Grupo" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Insira o valor aqui" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Resultado" + +#~ msgid "(Copy)" +#~ msgstr "(Copiar)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} tag" +#~ msgstr[1] "{0} tags" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transação" +#~ msgstr[1] "{0} transações" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Nome da Conta (Existe)" + +#~ msgid "Add" +#~ msgstr "Adicionar" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Criar uma nova transação ou importar transações de um ficheiro." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Adicionar palavra-passe ao PDF?" + +#~ msgid "All files" +#~ msgstr "Todos os ficheiros" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Valor (inválido)" + +#~ msgid "Apply" +#~ msgstr "Salvar" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Tem certeza de que deseja excluir este grupo?\n" +#~ "Esta ação não pode ser desfeita." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Tem certeza de que deseja excluir esta transação?\n" +#~ "Esta ação não pode ser desfeita." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Não é possível acessar a pasta selecionada. Verifique as permissões do " +#~ "Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Currency Code" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Código da Moeda (Vazio)" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Delete Existing" +#~ msgstr "Apagar as Existentes" + +#~ msgid "Delete Group" +#~ msgstr "Remover Grupo" + +#~ msgid "Delete Only Source" +#~ msgstr "Apagar Apenas Origem" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Apagar Origem e Gerado" + +#~ msgid "Delete Transaction" +#~ msgstr "Apagar Transação" + +#~ msgid "Description" +#~ msgstr "Descrição" + +#~ msgid "Description (Empty)" +#~ msgstr "Descrição (vazia)" + +#~ msgid "Destination Account" +#~ msgstr "Conta de destino" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Conta de destino (inválida)" + +#~ msgid "Destination Account Password" +#~ msgstr "Destination Account Password" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Senha da Conta de Destino (Inválida)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Senha da Conta de Destino (Obrigatório)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Desassociar Existentes" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Conta exportada para ficheiro com sucesso." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Gerados: {0}" + +#~ msgid "Group" +#~ msgstr "Grupo" + +#~ msgid "Group Name" +#~ msgstr "Nome do Grupo" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Import from Account" +#~ msgstr "Importar de uma Conta" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} transação importada do ficheiro." +#~ msgstr[1] "{0} transações importadas do ficheiro." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Name (Exists)" +#~ msgstr "Nome (existe)" + +#~ msgid "No" +#~ msgstr "Não" + +#~ msgid "No End Date" +#~ msgstr "Sem Data Final" + +#~ msgid "No Transactions Found" +#~ msgstr "Nenhuma Transação Encontrada" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Nenhuma transação corresponde aos filtros especificados." + +#~ msgid "Notes" +#~ msgstr "Notas" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nada para importar do ficheiro." + +#~ msgid "Page {0}" +#~ msgstr "Page {0}" + +#~ msgid "PDF Password" +#~ msgstr "Palavra-passe do PDF" + +#~ msgid "Receipt" +#~ msgstr "Recibo" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Rebico (Ficheiro Inacessível)" + +#~ msgid "Receipts" +#~ msgstr "Recibos" + +#~ msgid "Repeat End Date" +#~ msgstr "Data final da recorrência" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Data final da recorrência (inválida)" + +#~ msgid "Repeat Interval" +#~ msgstr "Intervalo de recorrência" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Intervalo de Repetição Alterado" + +#~ msgid "Select Account" +#~ msgstr "Selecionar conta" + +#~ msgid "Select Backup Folder" +#~ msgstr "Selecione a Pasta de Backup" + +#~ msgid "Sort By Amount" +#~ msgstr "Organizar por Quantidade" + +#~ msgid "Sort By Date" +#~ msgstr "Organizar por Data" + +#~ msgid "Sort By Id" +#~ msgstr "Organizar por Id" + +#~ msgid "Tags" +#~ msgstr "Tags" + +#~ msgid "The password of the account was changed." +#~ msgstr "A senha da conta foi alterada." + +#~ msgid "The password of the account was removed." +#~ msgstr "A senha da conta foi removida." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "A senha será removida ao fechar esta caixa de diálogo." + +#~ msgid "The passwords do not match." +#~ msgstr "As palavras-passe não coincidem." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "O intervalo de repetição foi alterado.\n" +#~ "O que você gostaria de fazer com as transações geradas existentes?\n" +#~ "\n" +#~ "Novas transações recorrentes irão se basear no novo intervalo." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Esta conta não possui dinheiro disponível para transferência." + +#, fuzzy +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Esta transação é a origem de transações repetidas.\n" +#~ "O que você gostaria de fazer com as transações repetidas?\n" +#~ "\n" +#~ "Excluir somente a transação de origem permitirá\n" +#~ "modificar as transações geradas." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Esta transação é a origem de transações repetidas.\n" +#~ "O que você gostaria de fazer com as transações repetidas?\n" +#~ "\n" +#~ "Atualizar somente a transação de origem desassociará\n" +#~ "as transações geradas da de origem." + +#~ msgid "Transaction" +#~ msgstr "Transação" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Unable to export account to file." +#~ msgstr "Não foi possível exportar conta para o ficheiro." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Não é possível importar informações do ficheiro. Por favor, certifique de " +#~ "que a app tem permissão para aceder o ficheiro e tente novamente." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Não foi possível importar transações do ficheiro." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Não foi possível abrir a conta. Por favor, certifique-se de que a app tem " +#~ "permissão para aceder o ficheiro e tente novamente." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Não é possível substituir uma conta existente." + +#~ msgid "Untagged" +#~ msgstr "Sem Tag" + +#~ msgid "Upcoming transactions" +#~ msgstr "Próximas transações" + +#~ msgid "Update Only Source" +#~ msgstr "Atualizar Apenas Origem" + +#~ msgid "Update Source and Generated" +#~ msgstr "Atualizar as de origem e as geradas" + +#~ msgid "Update Transaction" +#~ msgstr "Atualizar Transação" + +#~ msgid "Upload" +#~ msgstr "Upload" + +#~ msgid "View" +#~ msgstr "Visualizar" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Gostaria de proteger o ficheiro PDF com palavra-passe?\n" +#~ "\n" +#~ "Se a palavra-passe for perdida, o PDF ficará inacessível." + +#~ msgid "Yes" +#~ msgstr "Sim" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Gerir a moeda usada pela conta." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Definir uma nova senha ou remover uma." + +#, fuzzy +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Unlimited" +#~ msgstr "Ilimitado" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Exportar Visualização Atual" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Pesquisar por descrição" + +#~ msgid "Today's Overview" +#~ msgstr "Resumo de Hoje" + +#, fuzzy +#~ msgid "Select All Overview Filters" +#~ msgstr "Redefinir filtros da Visão Geral" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Novo Grupo (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Alternar Visibilidade de Grupos" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Selecionar Todos os Filtros de Grupos" + +#, fuzzy +#~ msgid "Unselect Groups Filters" +#~ msgstr "Redefinir filtros dos Grupos" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Alternar Visibilidade de Grupos" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Selecionar Todos os Filtros de Tags" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Limpar Filtros de Tags" + +#~ msgid "Calendar" +#~ msgstr "Calendário" + +#~ msgid "Select Current Month" +#~ msgstr "Selecionar Mês Atual" + +#~ msgid "Reset To Today" +#~ msgstr "Redefinir para hoje" + +#~ msgid "Today" +#~ msgstr "Hoje" + +#~ msgid "Select Range" +#~ msgstr "Selecionar Intervalo" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Início" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Fim" + +#~ msgid "Sort From First To Last" +#~ msgstr "Classificar do Primeiro ao Último" + +#~ msgid "Sort From Last To First" +#~ msgstr "Classificar do Último ao Primeiro" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nova Transação (Ctrl+Shift+N)" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Novo" + +#~ msgid "Suggestions" +#~ msgstr "Sugestões" + +#~ msgid "Converter" +#~ msgstr "Conversor" + +#~ msgid "Loading..." +#~ msgstr "A carregar..." + +#~ msgid "All Accounts" +#~ msgstr "Todas as Contas" + +#~ msgid "Color" +#~ msgstr "Cor" + +#~ msgid "Delete" +#~ msgstr "Remover" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Esta é apenas uma etiqueta útil que não afeta o funcionamento do " +#~ "aplicativo." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Enter Password To Login:" + +#~ msgid "Checking Account Color" +#~ msgstr "Cor da Conta Corrente" + +#~ msgid "Savings Account Color" +#~ msgstr "Cor da Conta de Poupança" + +#~ msgid "Business Account Color" +#~ msgstr "Cor da Conta Empresarial" + +#~ msgid "Use Native Digits" +#~ msgstr "Usar Dígitos Nativos" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Caso deseja usar numerais que são nativos para sua localidade em vez de " +#~ "dígitos latinos." + +#~ msgid "Backup" +#~ msgstr "Backup" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Pasta de Backup para os CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Contas não criptografadas serão exportadas automaticamente como arquivos " +#~ "CSV para esta pasta quando uma alteração for feita." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Limpar a Pasta de Backup" + +#~ msgid "No Reminders" +#~ msgstr "Sem Lembretes" + +#, fuzzy +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#~ msgid "New Transaction" +#~ msgstr "Nova Transação" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Alternar barra lateral" + +#~ msgid "Make a Copy" +#~ msgstr "Criar uma Cópia" + +#~ msgid "Clear End Date" +#~ msgstr "Limpar data final" + +#~ msgid "Daily" +#~ msgstr "Diariamente" + +#~ msgid "Weekly" +#~ msgstr "Semanalmente" + +#~ msgid "Biweekly" +#~ msgstr "A cada duas semanas" + +#~ msgid "Monthly" +#~ msgstr "Mensalmente" + +#~ msgid "Quarterly" +#~ msgstr "A cada três meses" + +#~ msgid "Yearly" +#~ msgstr "Anualmente" + +#~ msgid "Biyearly" +#~ msgstr "A cada dois anos" + +#~ msgid "Use group color" +#~ msgstr "Usar cor do grupo" + +#~ msgid "Use unique color" +#~ msgstr "Usar cor específica" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Insira um novo nome de tag..." + +#~ msgid "Add Tag" +#~ msgstr "Adicionar tag" + +#~ msgid "Extras" +#~ msgstr "Extras" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Gerenciar campos extras da transação." + +#~ msgid "Enter notes here" +#~ msgstr "Insira notas aqui" + +#~ msgid "Edit Transaction" +#~ msgstr "Editar Transação" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Transferir dinheiro criará uma transação de gasto com o valor fornecido " +#~ "nessa conta e uma transação de renda com o valor fornecido na conta para " +#~ "a qual transferir." + +#~ msgid "Select a destination account" +#~ msgstr "Selecione uma conta de destino" + +#~ msgid "Recent Accounts" +#~ msgstr "Contas Recentes" + +#~ msgid "Conversion Needed" +#~ msgstr "Conversão Necessária" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "Usar Moeda Personalizada" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Insira a conversão aqui" + +#, fuzzy +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Novo" + +#~ msgid "Toggle Graphs" +#~ msgstr "Alternar gráficos" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Resultado" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "dinheiro;finanças;carteira;dinheiro em espécie;banco;GTK;Nickvision;" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Customizar a interface da aplicação." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Personalizar como o Denaro utiliza as configurações de localidade." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Personalize os locais de backup para as contas Denaro." + +#, fuzzy +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Save" +#~ msgstr "Salvar" + +#~ msgid "Hide" +#~ msgstr "Ocultar" + +#~ msgid "Show" +#~ msgstr "Exibir" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Redefinir filtros de Datas" + +#~ msgid "Delete Group?" +#~ msgstr "Apagar Grupo?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Apagar Transação?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Configurações da Conta" + +#~ msgid "Version: {0}" +#~ msgstr "Versão: {0}" + +#~ msgid "About {0}" +#~ msgstr "Sobre {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Colaboradores no GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Tradutores no Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Transferir Dinheiro (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importar de um Arquivo (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Hide Groups" +#~ msgstr "Ocultar Grupos" + +#~ msgid "Show Groups" +#~ msgstr "Mostrar Grupos" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Importadas {0} transações do ficheiro." + +#~ msgid "Enter description here" +#~ msgstr "Insira a descrição aqui" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Conta Denaro (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Manage your personal finances" + +#~ msgid "New Window" +#~ msgstr "Nova Janela" + +#~ msgid "Enter decimal separator" +#~ msgstr "Insira o separador decimal" + +#~ msgid "Enter group separator" +#~ msgstr "Insira o separador de grupo" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transação ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transações ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Nenhuma Pasta de Backup" + +#~ msgid "Reset All Filters" +#~ msgstr "Redefinir Todos os Filtros" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Configurações de Conta (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Ordenar" + +#~ msgid "Order By" +#~ msgstr "Ordenar por" + +#~ msgid "Increasing" +#~ msgstr "Ordem Crescente" + +#~ msgid "Decreasing" +#~ msgstr "Ordem Decrescente" + +#~ msgid "Sort By" +#~ msgstr "Ordenar por" diff --git a/resources/po/pt_BR.po b/resources/po/pt_BR.po new file mode 100644 index 000000000..24f5e4151 --- /dev/null +++ b/resources/po/pt_BR.po @@ -0,0 +1,1877 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2024-01-08 06:00+0000\n" +"Last-Translator: Cassio Gomes Pereira \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Sem grupo" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Transações sem um grupo" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transferir para {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transferir de {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} de {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Amanhã" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Daqui uma semana" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Daqui um mês" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Daqui a dois meses" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Daqui a dois meses" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Seu sistema informou que sua moeda é" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Não é possível entrar na conta. A senha fornecida é inválida." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Gerencie suas finanças pessoais" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Chat Matrix" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "" +"Cassio Pereira {0}\n" +"Contribuidor do GitHub ❤️ {1}" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Cassio Pereira " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Boa Noite!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Bom Dia!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Boa Tarde!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Boa Noite!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Olá!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Esta conta já está aberta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Esta conta já está aberta." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Esta conta já está aberta." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportar para um Arquivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportar para um Arquivo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Resumo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Transferir Dinheiro" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Configurações da Conta" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Configurações" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Renda" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Despesas" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Lembretes" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupos" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Novo Grupo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Novo" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transações" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Visualizar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Próximo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Nome da Conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipo de Conta" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Corrente" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Poupança" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Comercial" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Tipo Padrão das Transações" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Limite de Lembretes de Transação" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Nunca" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Um dia antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Uma semana antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Um Mês Antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "Dois Meses Antes" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Moeda" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Usar Moeda Personalizada" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separador decimal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separador de grupo" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +#, fuzzy +msgid "None" +msgstr "Nenhum" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Dígitos decimais" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Estilo de Exibição do Valor" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Símbolo da Moeda" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Se a senha for perdida, não será possível restaurar a sua conta!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Nova Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Confirmar Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Alterar Senha" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Trocar moedas" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Trocar" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Origem" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Resultado" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Valor" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Copiar Resultado" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Voltar" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nova Conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Use este assistente para aproveitar ao máximo sua conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Vamos Começar" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Local de Armazenamento" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Senha da Conta (Opcional)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Pasta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Selecionar Pasta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Sobrescrever Contas Existentes" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "Configurações da Conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Moeda da Conta" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Importar Todas as Informações" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +#, fuzzy +msgid "Import File" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +#, fuzzy +msgid "Select File" +msgstr "Selecione a Pasta de Backup" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +#, fuzzy +msgid "Clear File" +msgstr "Limpar a Pasta de Backup" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Configurações" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Atalhos do Teclado" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Ajuda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +#, fuzzy +msgid "About Denaro" +msgstr "Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Menu de Contas" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Recentes" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nova Conta (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Abrir Conta (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Abrir" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Nenhuma Conta Recente" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Remover" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Menu Principal" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Página Inicial" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Código da Moeda" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Contas" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Painel" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Crie ou abra uma conta para começar. Você também pode arrastar um arquivo do " +"seu gerenciador de arquivos para o aplicativo." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipo de Conta" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Interface de Usuário" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +#, fuzzy +msgctxt "Theme" +msgid "Light" +msgstr "Claro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +#, fuzzy +msgctxt "Theme" +msgid "Dark" +msgstr "Escuro" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +#, fuzzy +msgctxt "Theme" +msgid "System" +msgstr "Sistema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Cores" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Personalize as cores usadas no Denaro." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Cor Padrão das Transações" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Mudanças nessa configuração serão aplicadas somente às transações recém-" +"adicionadas." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Cor Padrão das Transferências" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" +"Mudanças nessa configuração serão aplicadas somente a novas transferências." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Cor Padrão do Grupo" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Mudanças nesta configuração apenas serão aplicadas em novos grupos." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Configurações Regionais" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Inserir Separador de Decimais" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Defina para quais teclas pressionadas o separador decimal regional será " +"inserido em um campo de valor." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Nenhuma" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Somente o ponto do teclado numérico" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Ponto e Vírgula" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Conta" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Abrir Conta" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Aplicativo" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Aplicativo" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Sair" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Erro" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Não foi possível carregar dados de moeda. Por favor, tente novamente. Se o " +"erro ainda persistir, relate um bug." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Fechar" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Resultado copiado para a área de transferência." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Senha" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Alterar Senha" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Senha" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Não Há Transações" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Editar Grupo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repositório do GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Conta Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Insira a senha aqui" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Cancelar" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Desbloquear" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Local de Armazenamento" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Insira o nome aqui" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Abrir" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Ações" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Poupança" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Insira o símbolo aqui" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Insira o código aqui" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Estilo de Exibição do Valor" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importar de um Arquivo" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Nenhuma Conta Selecionada" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Nome da Conta (Aberta)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Símbolo da Moeda (Vazio)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nome (Vazio)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separador decimal (vazio)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separador decimal (inválido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separador de grupo (inválido)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Símbolo da moeda (inválido)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Exportar Todas as Informações" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Registro de alterações" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Reportar um erro" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussões" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Créditos" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Crie ou abra uma conta para começar. Você também pode arrastar um arquivo do " +"seu gerenciador de arquivos para o aplicativo." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Não é possível substituir uma conta aberta." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Resultado copiado para a área de transferência." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Fechar Conta" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Tipo Padrão das Transações" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Cor Padrão das Transferências" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Cor Padrão do Grupo" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Insira o valor aqui" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Resultado" + +#~ msgid "(Copy)" +#~ msgstr "(Cópia)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} tag" +#~ msgstr[1] "{0} tags" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} transação" +#~ msgstr[1] "{0} transações" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Nome da Conta (Existe)" + +#~ msgid "Add" +#~ msgstr "Adicionar" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Crie uma nova transação ou importe transações de um arquivo." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Adicionar senha ao PDF?" + +#~ msgid "All files" +#~ msgstr "Todos os arquivos" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Valor (Inválido)" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Tem certeza de que quer excluir este grupo?\n" +#~ "Esta ação é irreversível." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Tem certeza de que quer excluir esta transação?\n" +#~ "Esta ação é irreversível." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Não é possível acessar a pasta selecionada. Verifique as permissões do " +#~ "Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Código da Moeda" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Código da Moeda (Vazio)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Delete Existing" +#~ msgstr "Excluir as Existentes" + +#~ msgid "Delete Group" +#~ msgstr "Excluir Grupo" + +#~ msgid "Delete Only Source" +#~ msgstr "Excluir Somente a de Origem" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Deletar a de Origem e as Geradas" + +#~ msgid "Delete Transaction" +#~ msgstr "Excluir Transação" + +#~ msgid "Description" +#~ msgstr "Descrição" + +#~ msgid "Description (Empty)" +#~ msgstr "Descrição (Vazia)" + +#~ msgid "Destination Account" +#~ msgstr "Conta de Destino" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Conta de Destino (Inválida)" + +#~ msgid "Destination Account Password" +#~ msgstr "Senha da Conta de Destino" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Senha da Conta de Destino (Inválida)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Senha da Conta de Destino (Obrigatória)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Desassociar as Existentes" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Conta exportada para o arquivo com sucesso." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Gerado: {0}" + +#~ msgid "Group" +#~ msgstr "Grupo" + +#~ msgid "Group Name" +#~ msgstr "Nome do Grupo" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Import from Account" +#~ msgstr "Importar de uma Conta" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Importada {0} transação do arquivo." +#~ msgstr[1] "Importadas {0} transações do arquivo." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Name (Exists)" +#~ msgstr "Nome (Existe)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Não" + +#~ msgid "No End Date" +#~ msgstr "Sem Data Final" + +#~ msgid "No Transactions Found" +#~ msgstr "Nenhuma Transação Encontrada" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Nenhuma transação corresponde aos filtros especificados." + +#~ msgid "Notes" +#~ msgstr "Notas" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nada para importar do arquivo." + +#~ msgid "Page {0}" +#~ msgstr "Página {0}" + +#~ msgid "PDF Password" +#~ msgstr "Senha do PDF" + +#~ msgid "Receipt" +#~ msgstr "Recibo" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Rebico (Arquivo Inacessível)" + +#~ msgid "Receipts" +#~ msgstr "Recibos" + +#~ msgid "Repeat End Date" +#~ msgstr "Data Final da Repetição" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Data Final da Repetição (Inválida)" + +#~ msgid "Repeat Interval" +#~ msgstr "Intervalo de Repetição" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Intervalo de Repetição Alterado" + +#~ msgid "Select Account" +#~ msgstr "Selecionar conta" + +#~ msgid "Select Backup Folder" +#~ msgstr "Selecione a Pasta de Backup" + +#~ msgid "Sort By Amount" +#~ msgstr "Ordenar por Valor" + +#~ msgid "Sort By Date" +#~ msgstr "Ordenar por Data" + +#~ msgid "Sort By Id" +#~ msgstr "Ordenar por Id" + +#~ msgid "Tags" +#~ msgstr "Tags" + +#~ msgid "The password of the account was changed." +#~ msgstr "A senha da conta foi alterada." + +#~ msgid "The password of the account was removed." +#~ msgstr "A senha da conta foi removida." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "A senha será removida ao fechar esta caixa de diálogo." + +#~ msgid "The passwords do not match." +#~ msgstr "As senhas não coincidem." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "O intervalo de repetição foi alterado.\n" +#~ "O que você gostaria de fazer com as transações geradas existentes?\n" +#~ "\n" +#~ "Novas transações repetidas serão geradas baseadas no novo intervalo." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Esta conta não tem dinheiro disponível para transferir." + +#, fuzzy +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Esta transação é a origem de transações repetidas.\n" +#~ "O que você gostaria de fazer com as transações geradas?\n" +#~ "\n" +#~ "Excluir apenas a transação de origem permitirá modificar\n" +#~ "as transações geradas." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Esta transação é a origem de transações repetidas.\n" +#~ "O que você gostaria de fazer com as transações geradas?\n" +#~ "\n" +#~ "Atualizar apenas a transação de origem desassociará\n" +#~ "as transações geradas dela." + +#, fuzzy +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Transação" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Unable to export account to file." +#~ msgstr "Não é possível exportar a conta para um arquivo." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Não é possível importar informações do arquivo. Por favor, certifique-se " +#~ "de que o aplicativo tem permissão para acessar o arquivo e tente " +#~ "novamente." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Não foi possível importar transações do arquivo." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Não foi possível abrir a conta. Por favor, certifique-se de que o " +#~ "aplicativo tem permissão para acessar o arquivo e tente novamente." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Não é possível substituir uma conta existente." + +#~ msgid "Untagged" +#~ msgstr "Sem Tag" + +#~ msgid "Upcoming transactions" +#~ msgstr "Próximas transações" + +#~ msgid "Update Only Source" +#~ msgstr "Atualizar Somente a de Origem" + +#~ msgid "Update Source and Generated" +#~ msgstr "Atualizar a de Origem e as Geradas" + +#~ msgid "Update Transaction" +#~ msgstr "Atualizar Transação" + +#~ msgid "Upload" +#~ msgstr "Carregar" + +#~ msgid "View" +#~ msgstr "Abrir" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Gostaria de proteger o arquivo PDF com senha?\n" +#~ "\n" +#~ "Se a senha for perdida, o PDF ficará inacessível." + +#~ msgid "Yes" +#~ msgstr "Sim" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Gerenciar a moeda usada pela conta." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Defina uma nova senha ou remova uma." + +#, fuzzy +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Unlimited" +#~ msgstr "Ilimitado" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Exportar Visualização Atual" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Pesquisar por descrição" + +#~ msgid "Today's Overview" +#~ msgstr "Resumo de Hoje" + +#, fuzzy +#~ msgid "Select All Overview Filters" +#~ msgstr "Selecione Todos os Filtros do Overview" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Novo Grupo (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Alternar Visibilidade dos Grupos" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Selecionar Todos os Filtros de Grupos" + +#, fuzzy +#~ msgid "Unselect Groups Filters" +#~ msgstr "Limpar Filtros de Grupos" + +#, fuzzy +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Alternar Visibilidade dos Grupos" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Selecionar Todos os Filtros de Tags" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Limpar Filtros de Tags" + +#~ msgid "Calendar" +#~ msgstr "Calendário" + +#~ msgid "Select Current Month" +#~ msgstr "Selecionar Mês Atual" + +#~ msgid "Reset To Today" +#~ msgstr "Redefinir para hoje" + +#~ msgid "Today" +#~ msgstr "Hoje" + +#~ msgid "Select Range" +#~ msgstr "Selecionar Intervalo" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Início" + +#, fuzzy +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Final" + +#~ msgid "Sort From First To Last" +#~ msgstr "Ordenar do Primeiro ao Último" + +#~ msgid "Sort From Last To First" +#~ msgstr "Ordenar do Último ao Primeiro" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Nova Transação (Ctrl+Shift+N)" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Novo" + +#~ msgid "Suggestions" +#~ msgstr "Sugestões" + +#~ msgid "Converter" +#~ msgstr "Conversor" + +#~ msgid "Loading..." +#~ msgstr "Carregando..." + +#~ msgid "All Accounts" +#~ msgstr "Todas as Contas" + +#~ msgid "Color" +#~ msgstr "Cor" + +#~ msgid "Delete" +#~ msgstr "Excluir" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Este é só um rótulo útil que não afeta o funcionamento do aplicativo." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Insira a Senha para Entrar:" + +#~ msgid "Checking Account Color" +#~ msgstr "Cor de Contas Corrente" + +#~ msgid "Savings Account Color" +#~ msgstr "Cor de Contas Poupança" + +#~ msgid "Business Account Color" +#~ msgstr "Cor de Contas Comerciais" + +#~ msgid "Use Native Digits" +#~ msgstr "Usar Dígitos Nativos" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Caso deseja usar numerais que são nativos para sua localidade em vez de " +#~ "dígitos latinos." + +#~ msgid "Backup" +#~ msgstr "Backup" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Pasta de Backup para os CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Contas não criptografadas serão exportadas automaticamente como arquivos " +#~ "CSV para esta pasta quando uma alteração for feita." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Limpar a Pasta de Backup" + +#, fuzzy +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#~ msgid "New Transaction" +#~ msgstr "Nova Transação" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Alternar Barra Lateral" + +#~ msgid "Make a Copy" +#~ msgstr "Criar Cópia" + +#~ msgid "Clear End Date" +#~ msgstr "Limpar Data Final" + +#~ msgid "Daily" +#~ msgstr "Diariamente" + +#~ msgid "Weekly" +#~ msgstr "Semanalmente" + +#~ msgid "Biweekly" +#~ msgstr "Quinzenalmente" + +#~ msgid "Monthly" +#~ msgstr "Mensalmente" + +#~ msgid "Quarterly" +#~ msgstr "Trimestralmente" + +#~ msgid "Yearly" +#~ msgstr "Anualmente" + +#~ msgid "Biyearly" +#~ msgstr "Bienalmente" + +#~ msgid "Use group color" +#~ msgstr "Usar cor do grupo" + +#~ msgid "Use unique color" +#~ msgstr "Usar cor específica" + +#~ msgid "Extras" +#~ msgstr "Extras" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Gerenciar campos extras da transação." + +#~ msgid "Enter notes here" +#~ msgstr "Insira notas aqui" + +#~ msgid "Edit Transaction" +#~ msgstr "Editar Transação" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Transferir dinheiro criará uma transação de despesa nesta conta com o " +#~ "valor fornecido e uma transação de renda na conta de destino com o valor " +#~ "fornecido." + +#~ msgid "Select a destination account" +#~ msgstr "Selecione uma conta de destino" + +#~ msgid "Recent Accounts" +#~ msgstr "Contas Recentes" + +#~ msgid "Conversion Needed" +#~ msgstr "Conversão Necessária" + +#, fuzzy +#~ msgid "Use Custom Rates" +#~ msgstr "Usar Moeda Personalizada" + +#, fuzzy +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Insira a conversão aqui" + +#, fuzzy +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Novo" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Resultado" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "dinheiro;finanças;carteira;moeda;banco;GTK;Nickvision;" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Personalize a interface do aplicativo." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Personalize como o Denaro usa as configurações regionais." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Personalize os locais de backup para as contas Denaro." + +#, fuzzy +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Save" +#~ msgstr "Salvar" + +#~ msgid "Hide" +#~ msgstr "Ocultar" + +#~ msgid "Show" +#~ msgstr "Mostrar" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Limpar Filtros de Datas" + +#~ msgid "Delete Group?" +#~ msgstr "Excluir Grupo?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Excluir Transação?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Configurações da Conta" + +#~ msgid "Version: {0}" +#~ msgstr "Versão: {0}" + +#~ msgid "About {0}" +#~ msgstr "Sobre {0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Colaboradores no GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Tradutores no Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Transferir Dinheiro (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importar de um Arquivo (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Hide Groups" +#~ msgstr "Ocultar Grupos" + +#~ msgid "Show Groups" +#~ msgstr "Mostrar Grupos" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Importadas {0} transações do arquivo." + +#~ msgid "Enter description here" +#~ msgstr "Insira a descrição aqui" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Gerencie suas finanças pessoais" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Conta Denaro (*.nmoney)" + +#~ msgid "New Window" +#~ msgstr "Nova Janela" + +#~ msgid "Enter decimal separator" +#~ msgstr "Insira o separador decimal" + +#~ msgid "Enter group separator" +#~ msgstr "Insira o separador de grupo" + +#~ msgid "Transaction ({0})" +#~ msgstr "Transação ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "Transações ({0})" + +#~ msgid "No Backup Folder" +#~ msgstr "Nenhuma Pasta de Backup" + +#~ msgid "Reset All Filters" +#~ msgstr "Redefinir Todos os Filtros" + +#~ msgid "Sort By" +#~ msgstr "Ordenar por" + +#~ msgid "Order By" +#~ msgstr "Ordenar por" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Configurações de Conta (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Ordenar" + +#~ msgid "Increasing" +#~ msgstr "Ordem Crescente" + +#~ msgid "Decreasing" +#~ msgstr "Ordem Decrescente" diff --git a/resources/po/ro.po b/resources/po/ro.po new file mode 100644 index 000000000..ae6405418 --- /dev/null +++ b/resources/po/ro.po @@ -0,0 +1,1360 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-08-27 17:36+0000\n" +"Last-Translator: Victor Mihalache \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Tranzacții fără grup" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Transferă către {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Transferă din {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} din {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Mâine" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Peste o săptămână" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Peste o lună" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Peste două luni" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Peste două luni" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Gestionați-vă finanțele personale" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Contribuitorii de pe GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Victor Mihalache " + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Bună după-amiaza!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Bună seara!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Bună ziua!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Acest cont este deja deschis." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Acest cont este deja deschis." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Acest cont este deja deschis." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Import din fișier" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportați în fișier" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportați în fișier" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Panoramică" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Setările contului" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "Setările contului" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Venituri" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Cheltuieli" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupe" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +msgid "New" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Tranzacții" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Numele contului" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Tipul contului" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Cont curent" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Cont de depozit" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Afacere" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Niciodată" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Monedă" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Separator zecimal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Separator de grupe" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Simbolul monedei" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Schimbă parola" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Sumă" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Parola contului de destinație" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Selectați folderul" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Ajutor" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Deschide" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +#, fuzzy +msgid "Currency Converter" +msgstr "Codul monedei" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "Sumă" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Tipul contului" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +msgid "Off" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Sumă" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Deschideți un cont" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +msgctxt "Shortcut" +msgid "Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +msgid "About Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Schimbă parola" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Nicio tranzacție" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Import din fișier" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Repertoriu GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Cont de Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Anulează" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Deschide" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +msgid "Options" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Cont de depozit" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Sumă" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +msgid "No File Selected" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Numele contului (deschis)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Simbolul monedei (gol)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Nume (gol)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Separator zecimal (gol)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Separator zecimal (invalid)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Separator de grupe (invalid)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Simbolul monedei (invalid)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Selectați contul" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Șterge tranzacția" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +msgid "Default Transfer Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Șterge grupul" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" + +#~ msgid "(Copy)" +#~ msgstr "(Copie)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} etichetă" +#~ msgstr[1] "{0} etichete" +#~ msgstr[2] "{0} de etichete" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} tranzacție" +#~ msgstr[1] "{0} tranzacții" +#~ msgstr[2] "{0} de tranzacții" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Numele contului (existent)" + +#~ msgid "Add" +#~ msgstr "Adaugă" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Adaugă o tranzacție nouă sau importă tranzacții dintr-un fișier." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Adaugă parola la PDF?" + +#~ msgid "All files" +#~ msgstr "Toate fișierele" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Sumă (invalid)" + +#~ msgid "Apply" +#~ msgstr "Aplică" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Sunteți sigur că doriți să ștergeți acest grup?\n" +#~ "Această acțiune este ireversibilă." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Sunteți sigur că doriți să ștergeți această tranzacție?\n" +#~ "Această acțiune este ireversibilă." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "" +#~ "Nu se poate accesa folderul selectat, verificați permisiunile Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Codul monedei" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Codul monedei (gol)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Delete Existing" +#~ msgstr "Șterge existente" + +#~ msgid "Delete Only Source" +#~ msgstr "Șterge doar originalul" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Șterge originalul și cele generate" + +#~ msgid "Description" +#~ msgstr "Descriere" + +#~ msgid "Description (Empty)" +#~ msgstr "Descriere (goală)" + +#~ msgid "Destination Account" +#~ msgstr "Cont de destinație" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Cont de destinație (invalid)" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Parola contului de destinație (invalid)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Parola contului de destinație (obligatorie)" + +#, fuzzy +#~ msgid "Disassociate Existing" +#~ msgstr "Disociați existent" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Contul a fost exportat în fișier cu succes." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Fișier creat: {0}" + +#~ msgid "Group" +#~ msgstr "Grupă" + +#~ msgid "Group Name" +#~ msgstr "Numele grupei" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "Importați din cont" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Importat {0} tranzacție din fișier." +#~ msgstr[1] "Importat {0} tranzacții din fișier." +#~ msgstr[2] "Importat {0} de tranzacții din fișier." + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "Nume" + +#~ msgid "Name (Exists)" +#~ msgstr "Nume (existent)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Nu" + +#~ msgid "No End Date" +#~ msgstr "Nicio dată limită" + +#~ msgid "No Transactions Found" +#~ msgstr "Nicio tranzacție găsită" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "" +#~ "Nu a fost găsită nicio tranzacție care să corespundă filtrelor selectate." + +#~ msgid "Notes" +#~ msgstr "Note" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Nimic de importat din fișier." + +#~ msgid "Page {0}" +#~ msgstr "Pagina {0}" + +#~ msgid "PDF Password" +#~ msgstr "Parola PDF-ului" + +#~ msgid "Receipt" +#~ msgstr "Chitanță" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Chitanță (fișier inaccesibil)" + +#~ msgid "Receipts" +#~ msgstr "Chitanțe" + +#~ msgid "Repeat End Date" +#~ msgstr "Data sfârșitul repetiției" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Data sfârșitul repetiției (invalid)" + +#~ msgid "Repeat Interval" +#~ msgstr "Interval de repetare" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Interval de repetare modificat" + +#~ msgid "Select Backup Folder" +#~ msgstr "Selectați dosarul de backup" + +#~ msgid "Sort By Amount" +#~ msgstr "Sortează după sumă" + +#~ msgid "Sort By Date" +#~ msgstr "Sortează după dată" + +#~ msgid "Sort By Id" +#~ msgstr "Sortează după ID" + +#~ msgid "Tags" +#~ msgstr "Etichete" + +#~ msgid "The password of the account was changed." +#~ msgstr "Parola contului a fost schimbată." + +#~ msgid "The password of the account was removed." +#~ msgstr "Parola contului a fost scoasă." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Parola va fi eliminată la închiderea acestei ferestre de dialog." + +#~ msgid "The passwords do not match." +#~ msgstr "Parolele nu se potrivesc." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Intervalul de repetare a fost modificat.\n" +#~ "Ce ați dori să faceți cu tranzacțiile generate existente?\n" +#~ "\n" +#~ "Noi tranzacții repetate vor fi generate pe baza noului interval." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Acest cont nu are bani necesari pentru transfer." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Această tranzacție este o tranzacție de repetare.\n" +#~ "Ce ați dori să faceți cu tranzacțiile repetate?\n" +#~ "\n" +#~ "Ștergerea doar a tranzacției de sursă va permite ca tranzacțiile " +#~ "individuale\n" +#~ "generate să poată fi modificate." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Tranzacție" + +#~ msgid "Type" +#~ msgstr "Gen" + +#~ msgid "Unable to export account to file." +#~ msgstr "Exportul în fișierul de cont a eșuat." diff --git a/resources/po/ru.po b/resources/po/ru.po new file mode 100644 index 000000000..4f5c41328 --- /dev/null +++ b/resources/po/ru.po @@ -0,0 +1,1920 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-09-08 14:21+0000\n" +"Last-Translator: Fyodor Sobolev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Несгруппированные" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Транзакции без группы" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Перевод на {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Перевод из {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} в {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Завтра" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Через неделю" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Через месяц" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Через два месяца" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Через два месяца" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Ваша система сообщила, что ваша валюта" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Невозможно открыть счёт. Неправильный пароль." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Управляйте своими личными финансами" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix Чат" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Соавторы на GitHub ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Фёдор Соболев" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "Давид Лапшин" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "Фёдор Соболев https://github.com/fsobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Доброй ночи!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Доброе утро!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Добрый день!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Добрый вечер!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "Здравствуйте!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Этот счёт уже открыт." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Этот счёт уже открыт." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Этот счёт уже открыт." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Импорт из файла" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Экспорт в файл" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Экспорт в файл" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Обзор" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Перевод средств" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Настройки счёта" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Настройки" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Сумма" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Доходы" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Расходы" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Напоминания" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Группы" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Новая группа" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Новая" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Транзакции" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Визуализация" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Далее" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Счёт" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Имя счёта" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Тип счёта" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Расчётный" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Сберегательный" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Бизнес" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Тип транзакций по умолчанию" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "Порог напоминаний для транзакций" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Никогда" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "За день" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "За неделю" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "За месяц" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "За два месяца" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Валюта" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Использовать свою валюту" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Десятичный разделитель" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Разделитель групп разрядов" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Отсутствует" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Цифры в дробной части" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "Две" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Три" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Четыре" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Пять" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Шесть" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Стиль отображения сумм" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Символ валюты" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Пароль" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Если вы забудете пароль, данные будет невозможно восстановить!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Новый пароль" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Повторите новый пароль" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Изменить пароль" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Поменять валюты местами" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Поменять местами" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Исходная валюта" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Результат" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Сумма" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Скопировать результат" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Назад" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Новый счёт" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "" +"Используйте этот мастер настройки, чтобы извлечь максимум пользы из вашего " +"счёта" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Давайте начнём" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Место сохранения" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Пароль счёта (Необязательно)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Папка" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Выбрать папку" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Перезаписывать существующие счета" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Настройки счёта" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Валюта счёта" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Импорт существующей информации" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "Загрузите файл для импорта существующей информации в новый счёт." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Импортируемый файл" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Выбрать файл" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Сбросить файл" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Создать" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Параметры" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Комбинации клавиш" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Справка" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "О приложении" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Меню счёта" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Недавние" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Новый счёт (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Открыть счёт (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Открыть" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Нет недавних счетов" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Удалить" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Главное меню" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Домашняя страница" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Конвертер валют" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Счета" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Обзор" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Создайте или откройте счёт, чтобы начать. Вы также можете перетащить файл " +"счёта из файлового менеджера." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Тип счёта" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Интерфейс" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Тема" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Светлая" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Тёмная" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Системная" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Цвета" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Настройте цвета, используемые приложением." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Цвет транзакции по умолчанию" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "Изменение этой настройки затронет только новые транзакции." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Цвет перевода средств по умолчанию" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Изменение этой настройки затронет только новые переводы." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Цвет группы по умолчанию" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Изменение этой настройки затронет только новые группы." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Региональные настройки" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Вставка десятичного разделителя" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Установите, нажатия каких кнопок будут вставлять десятичный разделитель в " +"поля сумм." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Выключено" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Только точка на Numpad" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Точка и запятая" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Счёт" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Открыть счёт" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Приложение" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Приложение" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Выход" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Ошибка" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Невозможно загрузить данные о валютах. Пожалуйста, попробуйте снова. Если " +"ошибка не проходит, сообщите о ней." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Закрыть" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Результат скопирован в буфер обмена." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Надёжность пароля" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Изменить пароль" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Надёжность пароля" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Нет транзакций" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Редактировать группу" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Импортируемый файл" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "Репозиторий GitHub" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Счёт Nickvision Denaro" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Введите пароль" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Отмена" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Разблокировать" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Место сохранения" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Введите имя" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Открыть" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Действия" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Сберегательный" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Введите символ здесь" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Введите код здесь" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Стиль отображения сумм" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Импортируемый файл" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Счёт не выбран" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Имя счёта (Открыт)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Символ валюты (Пустой)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Имя (Пусто)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Десятичный разделитель (Пустой)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Десятичный разделитель (Некорректный)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Разделитель групп разрядов (Некорректный)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Символ валюты (Некорректный)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Экспортировать всю информацию" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Список изменений" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Сообщить об ошибке" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Обсуждения" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Авторы" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Создайте или откройте счёт, чтобы начать. Вы также можете перетащить файл " +"счёта из файлового менеджера." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Невозможно перезаписать открытый счёт." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Результат скопирован в буфер обмена." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Закрыть счёт" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Тип транзакций по умолчанию" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Цвет перевода средств по умолчанию" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Цвет группы по умолчанию" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Введите сумму" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "ОК" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Результат" + +#~ msgid "(Copy)" +#~ msgstr "(Копия)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} метка" +#~ msgstr[1] "{0} метки" +#~ msgstr[2] "{0} меток" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} транзакция" +#~ msgstr[1] "{0} транзакции" +#~ msgstr[2] "{0} транзакций" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Имя счёта (Занято)" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Добавьте транзакцию или импортируйте транзакции из файла." + +#~ msgid "Add Password To PDF?" +#~ msgstr "Зашифровать PDF паролем?" + +#~ msgid "All files" +#~ msgstr "Все файлы" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Сумма (Некорректная)" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Вы уверены, что хотите удалить эту группу?\n" +#~ "Это действие необратимо." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Вы уверены, что хотите удалить эту транзакцию?\n" +#~ "Это действие необратимо." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Невозможно получить доступ к папке, проверьте разрешения Flatpak." + +#~ msgid "Currency Code" +#~ msgstr "Код валюты" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Код валюты (Пусто)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Дата" + +#~ msgid "Delete Existing" +#~ msgstr "Удалить существующие" + +#~ msgid "Delete Group" +#~ msgstr "Удалить группу" + +#~ msgid "Delete Only Source" +#~ msgstr "Удалить только источник" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Удалить всё" + +#~ msgid "Delete Transaction" +#~ msgstr "Удалить транзакцию" + +#~ msgid "Description" +#~ msgstr "Описание" + +#~ msgid "Description (Empty)" +#~ msgstr "Описание (Пусто)" + +#~ msgid "Destination Account" +#~ msgstr "Целевой счёт" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Целевой счёт (Некорректный)" + +#~ msgid "Destination Account Password" +#~ msgstr "Пароль целевого счёта" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Пароль целевого счёта (Некорректный)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Пароль целевого счёта (Требуется)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Отвязать существующие" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Счёт успешно экспортирован в файл." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Файл создан: {0}" + +#~ msgid "Group" +#~ msgstr "Группа" + +#~ msgid "Group Name" +#~ msgstr "Имя группы" + +#~ msgid "Id" +#~ msgstr "Номер" + +#~ msgid "Import from Account" +#~ msgstr "Импорт из счёта" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "Импортировано {0} транзакция из файла." +#~ msgstr[1] "Импортировано {0} транзакции из файла." +#~ msgstr[2] "Импортировано {0} транзакций из файла." + +#~ msgid "N/A" +#~ msgstr "Н/Д" + +#~ msgid "Name" +#~ msgstr "Имя" + +#~ msgid "Name (Exists)" +#~ msgstr "Имя (Занято)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Нет" + +#~ msgid "No End Date" +#~ msgstr "Без даты окончания" + +#~ msgid "No Transactions Found" +#~ msgstr "Не найдено транзакций" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Нет транзакций, соответствующих заданным фильтрам." + +#~ msgid "Notes" +#~ msgstr "Заметки" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Нечего импортировать из файла." + +#~ msgid "Page {0}" +#~ msgstr "Страница {0}" + +#~ msgid "PDF Password" +#~ msgstr "Пароль PDF" + +#~ msgid "Receipt" +#~ msgstr "Чек" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Чек (Файл недоступен)" + +#~ msgid "Receipts" +#~ msgstr "Чеки" + +#~ msgid "Repeat End Date" +#~ msgstr "Дата окончания повтора" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Дата окончания повтора (Некорректная)" + +#~ msgid "Repeat Interval" +#~ msgstr "Интервал повтора" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Изменение интервала повтора" + +#~ msgid "Select Account" +#~ msgstr "Выбрать счёт" + +#~ msgid "Select Backup Folder" +#~ msgstr "Выбрать папку для резервных копий" + +#~ msgid "Sort By Amount" +#~ msgstr "Сортировать по сумме" + +#~ msgid "Sort By Date" +#~ msgstr "Сортировать по дате" + +#~ msgid "Sort By Id" +#~ msgstr "Сортировать по номеру" + +#~ msgid "Tags" +#~ msgstr "Метки" + +#~ msgid "The password of the account was changed." +#~ msgstr "Пароль счёта был изменён." + +#~ msgid "The password of the account was removed." +#~ msgstr "Пароль счёта был удалён." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Пароль будет удалён после закрытия этого диалога." + +#~ msgid "The passwords do not match." +#~ msgstr "Пароли не совпадают." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Интервал повтора был изменён.\n" +#~ "Что вы хотите сделать с существующими повторяющимися тразакциями?\n" +#~ "\n" +#~ "Новые повторяющиеся транзакции будут сгенерированы с использованием " +#~ "нового интервала." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "На этом счёте нет средств для перевода." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Эта транзакция является источником повторяющихся транзакций.\n" +#~ "Что вы хотите сделать с повторяющимися тразакциями?\n" +#~ "\n" +#~ "Удаление только источника позволит изменять\n" +#~ "сгенерированные транзакции индивидуально." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Эта транзакция является источником повторяющихся транзакций.\n" +#~ "Что вы хотите сделать с повторяющимися тразакциями?\n" +#~ "\n" +#~ "Применение изменений только к источнику отвяжет\n" +#~ "от него сгенерированные транзакции." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "Транзакция" + +#~ msgid "Type" +#~ msgstr "Тип" + +#~ msgid "Unable to export account to file." +#~ msgstr "Невозможно экспортировать счёт в файл." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Невозможно импортировать данные из файла. Убедитесь, что у приложения " +#~ "есть необходимые разрешения и попробуйте снова." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Невозможно импортировать транзакции из файла." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Невозможно открыть счёт. Убедитесь, что у приложения есть необходимые " +#~ "разрешения и попробуйте снова." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Невозможно перезаписать существующий счёт." + +#~ msgid "Untagged" +#~ msgstr "Без меток" + +#~ msgid "Upcoming transactions" +#~ msgstr "Грядущие транзакции" + +#~ msgid "Update Only Source" +#~ msgstr "Применить только к источнику" + +#~ msgid "Update Source and Generated" +#~ msgstr "Применить ко всем" + +#~ msgid "Update Transaction" +#~ msgstr "Изменение транзакции" + +#~ msgid "Upload" +#~ msgstr "Загрузить" + +#~ msgid "View" +#~ msgstr "Просмотр" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "Хотите ли вы защитить PDF-файл с помощью пароля?\n" +#~ "\n" +#~ "Если пароль будет утерян, содержимое файла будет недоступно." + +#~ msgid "Yes" +#~ msgstr "Да" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Управляйте валютой, используемой для этого счёта." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Установите новый пароль или удалите существующий." + +#~ msgid "Other" +#~ msgstr "Другой" + +#~ msgid "Unlimited" +#~ msgstr "Неограниченно" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Экспортировать текущий вид" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Поиск по описанию" + +#~ msgid "Today's Overview" +#~ msgstr "Обзор на сегодня" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Выбрать все фильтры обзора" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Новая группа (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Переключить отображение групп" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Выбрать все фильтры групп" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Снять выделение фильтров групп" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Переключить отображение меток" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Выбрать все фильтры меток" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Снять выделение фильтров меток" + +#~ msgid "Calendar" +#~ msgstr "Календарь" + +#~ msgid "Select Current Month" +#~ msgstr "Выбрать текущий месяц" + +#~ msgid "Reset To Today" +#~ msgstr "Сбросить на сегодняшний день" + +#~ msgid "Today" +#~ msgstr "Сегодня" + +#~ msgid "Select Range" +#~ msgstr "Выбрать период" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Начало" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Конец" + +#~ msgid "Sort From First To Last" +#~ msgstr "Сортировать от первой к последней" + +#~ msgid "Sort From Last To First" +#~ msgstr "Сортировать от последней к первой" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Новая транзакция (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Новая" + +#~ msgid "Suggestions" +#~ msgstr "Предложения" + +#~ msgid "Converter" +#~ msgstr "Конвертер" + +#~ msgid "Loading..." +#~ msgstr "Загрузка..." + +#~ msgid "All Accounts" +#~ msgstr "Все счета" + +#~ msgid "Color" +#~ msgstr "Цвет" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Это лишь вспомогательная метка, которая не влияет на работу приложения." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Введите пароль, чтобы открыть счёт:" + +#~ msgid "Checking Account Color" +#~ msgstr "Цвет расчётного счёта" + +#~ msgid "Savings Account Color" +#~ msgstr "Цвет сберегательного счёта" + +#~ msgid "Business Account Color" +#~ msgstr "Цвет бизнес счёта" + +#~ msgid "Use Native Digits" +#~ msgstr "Использовать местные цифры" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Должно ли приложение использовать цифры, родные для вашего региона, " +#~ "вместо арабских цифр." + +#~ msgid "Backup" +#~ msgstr "Резервные копии" + +#~ msgid "CSV Backup Folder" +#~ msgstr "Папка резервных копий CSV" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Счета, не зашифрованные паролем, будут автоматически экспортироваться в " +#~ "CSV в указанную папку после каждого изменения." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Сбросить папку для резервных копий" + +#~ msgid "No Reminders" +#~ msgstr "Нет напоминаний" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Перевод средств" + +#~ msgid "New Transaction" +#~ msgstr "Новая транзакция" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Переключить отображение боковой панели" + +#~ msgid "Make a Copy" +#~ msgstr "Создать копию" + +#~ msgid "Clear End Date" +#~ msgstr "Очистить дату окончания" + +#~ msgid "Daily" +#~ msgstr "Ежедневно" + +#~ msgid "Weekly" +#~ msgstr "Еженедельно" + +#~ msgid "Biweekly" +#~ msgstr "Раз в две недели" + +#~ msgid "Monthly" +#~ msgstr "Ежемесячно" + +#~ msgid "Quarterly" +#~ msgstr "Ежеквартально" + +#~ msgid "Yearly" +#~ msgstr "Ежегодно" + +#~ msgid "Biyearly" +#~ msgstr "Раз в два года" + +#~ msgid "Use group color" +#~ msgstr "Использовать цвет группы" + +#~ msgid "Use unique color" +#~ msgstr "Использовать собственный цвет" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Введите новое имя метки..." + +#~ msgid "Add Tag" +#~ msgstr "Добавить метку" + +#~ msgid "Extras" +#~ msgstr "Прочее" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "Управление дополнительными данными транзакции." + +#~ msgid "Enter notes here" +#~ msgstr "Введите здесь ваши заметки" + +#~ msgid "Edit Transaction" +#~ msgstr "Редактировать транзакцию" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Перевод средств создаст расходную транзакцию на указанную сумму на этом " +#~ "счёте и доходную транзакцию на указанную сумму на целевом счёте." + +#~ msgid "Select a destination account" +#~ msgstr "Выберите целевой счёт" + +#~ msgid "Recent Accounts" +#~ msgstr "Недавние счета" + +#~ msgid "Conversion Needed" +#~ msgstr "Требуется конвертация" + +#~ msgid "Use Custom Rates" +#~ msgstr "Указать свой курс валют" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Введите курс валют для конвертации" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Перевести" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Новый" + +#~ msgid "Toggle Graphs" +#~ msgstr "Переключить отображение графиков" + +#~ msgid "result" +#~ msgstr "результат" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "деньги;финансы;кошелёк;наличные;банк;Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Управляйте несколькими счетами одновременно, используя знакомый " +#~ "интерфейс с вкладками" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— С лёгкостью фильтруйте транзакции по типу, группе или дате" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "" +#~ "— Создавайте повторяющиеся транзакции, например для счетов, которые " +#~ "приходят каждый месяц" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Переводите средства с одного счёта на другой" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Экспортируйте данные в CSV и импортируйте из CSV, OFX или QIF файла для " +#~ "массового добавления транзакций" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "Пожалуйста, подождите окончания импорта транзакций..." + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "" +#~ "Невозможно импортировать данные из файла. Неподдерживаемый тип файла." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Фёдор Соболев {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Настройте интерфейс приложения." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Выберите, как Denaro будет использовать региональные настройки." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Настройте создание резервных копий для счетов Denaro." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Другой" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Hide" +#~ msgstr "Скрыть" + +#~ msgid "Show" +#~ msgstr "Показать" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Сбросить фильтры дат" + +#~ msgid "Delete Group?" +#~ msgstr "Удалить группу?" + +#~ msgid "Delete Transaction?" +#~ msgstr "Удалить транзакцию?" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Настройки счёта" + +#~ msgid "Version: {0}" +#~ msgstr "Версия: {0}" + +#~ msgid "About {0}" +#~ msgstr "О приложении" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Соавторы на GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Фёдор Соболев https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Переводчики на Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/\n" +#~ "Фёдор Соболев https://hosted.weblate.org/user/fsobolev/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Перевод средств (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Импорт из файла (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Фильтры" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "Импортировано транзакций из файла: {0}." + +#~ msgid "Enter description here" +#~ msgstr "Введите описание" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Управляйте несколькими счетами одновременно, используя привычный " +#~ "интерфейс с вкладками\n" +#~ "— Легко сортируйте транзакции по типу, группе или дате\n" +#~ "— Создавайте повторяющиеся транзакции, например, по ежемесячным платежам\n" +#~ "— Переводите деньги с одного счёта на другой\n" +#~ "— Экспортируйте данные в файл CSV и импортируйте из CSV, OFX или QIF " +#~ "файла для массового добавления транзакций на счёт" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Счёт Money (*.nmoney)" + +#~ msgid "Hide Groups" +#~ msgstr "Скрыть группы" + +#~ msgid "Show Groups" +#~ msgstr "Показать группы" + +#~ msgid "New Window" +#~ msgstr "Новое окно" + +#~ msgid "Transaction ({0})" +#~ msgstr "Транзакция ({0})" + +#~ msgid "Reset All Filters" +#~ msgstr "Сбросить все фильтры" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Настройки счёта (Ctrl+.)" + +#~ msgid "Sort" +#~ msgstr "Сортировать" + +#~ msgid "Sort By" +#~ msgstr "Свойство" + +#~ msgid "Enter group separator" +#~ msgstr "Введите разделитель групп разрядов" + +#~ msgid "No Backup Folder" +#~ msgstr "Папка не указана" + +#~ msgid "Enter decimal separator" +#~ msgstr "Введите десятичный разделитель" + +#~ msgid "Transactions ({0})" +#~ msgstr "Транзакции ({0})" + +#~ msgid "Order By" +#~ msgstr "Порядок" + +#~ msgid "Increasing" +#~ msgstr "По возрастанию" + +#~ msgid "Decreasing" +#~ msgstr "По убыванию" diff --git a/resources/po/sv.po b/resources/po/sv.po new file mode 100644 index 000000000..041fb94b8 --- /dev/null +++ b/resources/po/sv.po @@ -0,0 +1,1350 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +#, fuzzy +msgid "Transactions without a group" +msgstr "Hittade Inga Transaktioner" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Överför Pengar" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Överför Pengar" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Kan inte logga in till konto. Tilldelat lösenord är fel." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix Chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "God Morgon!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "God Morgon!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "God Eftermiddag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "Go kväll!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "God Dag!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Detta konto är redan öppet." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Detta konto är redan öppet." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Detta konto är redan öppet." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Importera från Fil" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Exportera till Fil" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Exportera till Fil" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Översikt" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Överför Pengar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +#, fuzzy +msgid "Account Settings" +msgstr "Inställningar" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "Inställningar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Total" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Inkomst" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Kostnad" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Grupper" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Ny Grupp" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Ny" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "Transaktioner" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +#, fuzzy +msgid "Account Name" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +#, fuzzy +msgid "Account Type" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +#, fuzzy +msgid "Savings" +msgstr "Inställningar" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +#, fuzzy +msgid "Default Transaction Type" +msgstr "Ny Transaktion" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +#, fuzzy +msgid "Decimal Separator" +msgstr "Insert Decimal Separator" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +msgid "$ is the currency's symbol." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "If the password is lost, there is no way to restore your account!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "New Password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Confirm Password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Change Password" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +#, fuzzy +msgid "Amount" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "Senaste Konton" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Tillbaka" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Nytt Konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Destination Account Password (Invalid)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +#, fuzzy +msgid "Overwrite Existing Accounts" +msgstr "Destination Account Password" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "Inställningar" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +#, fuzzy +msgid "Account Currency" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +#, fuzzy +msgid "Import File" +msgstr "Importera från Fil" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Preferenser" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Tangentbordsgenvägar" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Hjälp" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +#, fuzzy +msgid "Account Menu" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +#, fuzzy +msgid "Recents" +msgstr "Senaste Konton" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Nytt Konto (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Öppna ett konto (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Öppna" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +#, fuzzy +msgid "No Recent Accounts" +msgstr "Senaste Konton" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Ta bort" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Hem" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Skapa eller öppna ett konto för att börja. Du kan också dra in en fil från " +"din filhanterare." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Locale" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Insert Decimal Separator" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Set for which keys pressed will the locale's decimal separator be inserted " +"into an amount field." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Off" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Numpad period only" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Period and Comma" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Öppna ett konto" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Handlingar" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Handlingar" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Quit" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Stäng" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Password" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Change Password" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Password" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "Inga Transaktioner" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +#, fuzzy +msgid "Edit Group" +msgstr "Ny Grupp" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Importera från Fil" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub Repo" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Inga Senaste Konton" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +#, fuzzy +msgid "Enter password here" +msgstr "Enter password here" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "Avbryt" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Unlock" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "Enter password here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Öppna" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Handlingar" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Inställningar" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +#, fuzzy +msgid "Enter symbol here" +msgstr "Enter password here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +#, fuzzy +msgid "Enter code here" +msgstr "Enter password here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Konto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Importera från Fil" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Inget konto är öppnat" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Konto" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +msgid "Symbol (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +msgid "Code (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +#, fuzzy +msgid "Decimal Separator (Empty)" +msgstr "Insert Decimal Separator" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +#, fuzzy +msgid "Decimal Separator (Invalid)" +msgstr "Insert Decimal Separator" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +msgid "Symbol (Invalid)" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Vad är nytt" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Rapportera en Bugg" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Diskussioner" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Tack till" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Skapa eller öppna ett konto för att börja. Du kan också dra in en fil från " +"din filhanterare." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Kan inte skriva över ett öppet konto." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Nytt Konto" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Ny Transaktion" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Ny Transaktion" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Ny Grupp" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" + +#~ msgid "(Copy)" +#~ msgstr "(Copy)" + +#, fuzzy, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "Transaktioner" +#~ msgstr[1] "Transaktioner" + +#, fuzzy +#~ msgid "Account Name (Exists)" +#~ msgstr "Konto" + +#~ msgid "Add" +#~ msgstr "Add" + +#~ msgid "All files" +#~ msgstr "Alla filer" + +#~ msgid "Apply" +#~ msgstr "Tillämpa" + +#, fuzzy +#~ msgid "Delete Existing" +#~ msgstr "Ny Transaktion" + +#, fuzzy +#~ msgid "Delete Transaction" +#~ msgstr "Ny Transaktion" + +#, fuzzy +#~ msgid "Destination Account" +#~ msgstr "Destination Account Password" + +#, fuzzy +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Destination Account Password (Invalid)" + +#~ msgid "Destination Account Password" +#~ msgstr "Destination Account Password" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Destination Account Password (Invalid)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Destination Account Password (Required)" + +#, fuzzy +#~ msgid "Group" +#~ msgstr "Grupper" + +#, fuzzy +#~ msgid "Group Name" +#~ msgstr "Grupper" + +#, fuzzy +#~ msgid "Import from Account" +#~ msgstr "Importera från Fil" + +#~ msgid "No" +#~ msgstr "Nej" + +#~ msgid "No Transactions Found" +#~ msgstr "Hittade Inga Transaktioner" + +#, fuzzy +#~ msgid "PDF Password" +#~ msgstr "Password" + +#, fuzzy +#~ msgid "Select Account" +#~ msgstr "Senaste Konton" + +#~ msgid "The password of the account was changed." +#~ msgstr "The password of the account was changed." + +#~ msgid "The password of the account was removed." +#~ msgstr "The password of the account was removed." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "The password will be removed upon closing this dialog." + +#, fuzzy +#~ msgid "The passwords do not match." +#~ msgstr "The password of the account was changed." + +#, fuzzy +#~ msgid "Transaction" +#~ msgstr "Transaktioner" + +#, fuzzy +#~ msgid "Unable to export account to file." +#~ msgstr "Kan inte skriva över ett öppet konto." + +#, fuzzy +#~ msgid "Unable to import transactions from the file." +#~ msgstr "Kan inte skriva över ett öppet konto." + +#, fuzzy +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Kan inte skriva över ett öppet konto." + +#, fuzzy +#~ msgid "Upcoming transactions" +#~ msgstr "Inga Transaktioner" + +#, fuzzy +#~ msgid "Update Transaction" +#~ msgstr "Ny Transaktion" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "Set a new password or remove one." +#~ msgstr "Set a new password or remove one." + +#, fuzzy +#~ msgid "Export Current View" +#~ msgstr "Exportera till Fil" + +#~ msgid "Today's Overview" +#~ msgstr "Dagens Översikt" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Ny Grupp (Ctrl+G)" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Ny Transaktion (Ctrl+Shift+N)" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Ny" + +#, fuzzy +#~ msgid "All Accounts" +#~ msgstr "Konto" + +#~ msgid "Enter Password To Login:" +#~ msgstr "Enter Password To Login:" + +#, fuzzy +#~ msgid "Checking Account Color" +#~ msgstr "Öppna ett konto (Ctrl+O)" + +#, fuzzy +#~ msgid "Backup" +#~ msgstr "Tillbaka" + +#, fuzzy +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Överför Pengar" + +#~ msgid "New Transaction" +#~ msgstr "Ny Transaktion" + +#~ msgid "Make a Copy" +#~ msgstr "Make a Copy" + +#, fuzzy +#~ msgid "Edit Transaction" +#~ msgstr "Transaktioner" + +#, fuzzy +#~ msgid "Select a destination account" +#~ msgstr "Destination Account Password" + +#~ msgid "Recent Accounts" +#~ msgstr "Senaste Konton" + +#, fuzzy +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Överför Pengar" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Ny" + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Customize how Denaro uses locale settings." + +#~ msgid "Save" +#~ msgstr "Spara" + +#, fuzzy +#~ msgid "Delete Group?" +#~ msgstr "Ny Grupp" + +#, fuzzy +#~ msgid "Delete Transaction?" +#~ msgstr "Ny Transaktion" + +#~ msgid "Version: {0}" +#~ msgstr "Version: {0}" + +#~ msgid "About {0}" +#~ msgstr "Om {0}" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Överför Pengar (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Importera från Fil (Ctrl+I)" diff --git a/resources/po/ta.po b/resources/po/ta.po new file mode 100644 index 000000000..f5623bb04 --- /dev/null +++ b/resources/po/ta.po @@ -0,0 +1,1080 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "" + +#: libdenaro/src/models/account.cpp:495 +#, c++-format +msgid "Transfer to {}" +msgstr "" + +#: libdenaro/src/models/account.cpp:512 +#, c++-format +msgid "Transfer from {}" +msgstr "" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +msgid "This account already exists." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +msgid "This account cannot be overwritten." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +msgid "The account is already open." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +msgid "Export to CSV" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +msgid "Export to PDF" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +msgid "New" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +msgid "$ is the currency's symbol." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +msgid "Account Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +msgid "No Accounts Open" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +msgid "Off" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +msgctxt "Shortcut" +msgid "Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +msgctxt "Shortcut" +msgid "Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +msgid "About Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +msgid "Unable to change password" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +msgid "No Transaction Reminders" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +msgid "Select Import File" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +msgid "On" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +msgid "Options" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +msgid "Saving" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +msgid "Amount Style" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +msgid "No File Selected" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +msgid "Account Name (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +msgid "Symbol (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +msgid "Code (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +msgid "Symbol (Invalid)" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +msgid "Unlock Account" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +msgid "Default Transaction Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +msgid "Default Transfer Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +msgid "Default Group Color" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" diff --git a/resources/po/tr.po b/resources/po/tr.po new file mode 100644 index 000000000..2f839ad49 --- /dev/null +++ b/resources/po/tr.po @@ -0,0 +1,1943 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2023-09-10 21:21+0000\n" +"Last-Translator: Sabri Ünal \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "Grupsuz" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "Grupsuz işlemler" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "Şuraya Aktar: {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "Şuradan Aktar: {0}" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} / {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "Yarın" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "Bu günden, bir hafta sonra" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "Bu günden, bir ay sonra" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "Bu günden, iki ay sonra" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "Bu günden, iki ay sonra" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "Sisteminiz para biriminizin şu olduğunu bildirdi" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "Hesaba giriş yapılamıyor. Sağlanan parola geçersiz." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "Kişisel mali durumunuzu yönetin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix Chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "Github Katkıcıları ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" +"Sabri Ünal \n" +"Weblate Üstünden Katkı Sağlayan Gönüllüler" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "Günaydın!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "Günaydın!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "Tünaydın!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "İyi Akşamlar!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "İyi Günler!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "Bu hesap zaten açıldı." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "Bu hesap zaten açıldı." + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "Bu hesap zaten açıldı." + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "Dosyadan İçe Aktar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "Dosyaya Dışa Aktar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "Dosyaya Dışa Aktar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "Genel Görünüm" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "Para Aktarımı" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "Hesap Ayarları" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "Ayarlar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "Toplam" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "Gelir" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "Gider" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "Hatırlatıcılar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "Gruplar" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "Yeni Grup" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "Yeni" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "İşlemler" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "Görselleştir" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "Sonraki" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "Hesap" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "Hesap Adı" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "Hesap Türü" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "Çek" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "Tasarruf" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "Kurumsal" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "Öntanımlı İşlem Türü" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "İşlem Hatırlatma Eşiği" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "Asla" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "Bir Gün Önce" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "Bir Hafta Önce" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "Bir Ay Önce" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "İki Ay Önce" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "Para Birimi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "Özel Para Birimi Kullan" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "Ondalık Ayırıcı" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "Grup Ayırıcı" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "Hiçbiri" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "Ondalık Basamaklar" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "İki" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "Üç" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "Dört" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "Beş" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "Altı" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "Miktar Gösterim Biçimi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "Para Birimi Simgesi" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "Parola" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "Parola kaybolursa, dosyayı geri yüklemenin bir yolu yoktur!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "Yeni Parola" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "Parolayı Onayla" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "Parola Değiştir" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "Para birimleri arasında geçiş yap" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "Geçiş yap" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "Kaynak" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "Sonuç" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "Tutar" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "Sonuç Miktarı Kopyala" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "Geri" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "Yeni Hesap" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "Hesabınızdan en iyi şekilde yararlanmak için bu sihirbazı kullanın" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "Hadi Başlayalım" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "Depolama Konumu" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "Hesap Parolası (İsteğe bağlı)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "Klasör" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "Klasör Seç" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "Var Olan Hesapların Üzerine Yaz" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "Hesap Seçenekleri" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "Hesap Para Birimi" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "Var Olan Bilgileri İçe Aktar" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" +"Var olan bilgileri yeni hesaba içe aktarmak için kullanılacak geçerli bir " +"dosya yükleyin." + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "Dosya İçe Aktar" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "Dosya Seç" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "Dosya Temizle" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "Oluştur" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "Tercihler" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "Klavye Kısayolları" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "Yardım" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "Denaro Hakkında" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "Hesap Menüsü" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "Son Kullanılanlar" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "Yeni Hesap (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "Hesap Aç (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "Aç" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "Son Hesap Yok" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "Kaldır" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "Ana Menü" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "Ev" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "Para Birimi Dönüştürücü" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +msgid "Accounts" +msgstr "Hesaplar" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "Tablo" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"Başlamak için bir hesap oluşturun veya açın. Bir dosyayı dosya " +"tarayıcınızdan uygulamaya da sürükleyebilirsiniz." + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "Hesap Türü" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "Kullanıcı Arayüzü" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "Tema" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "Açık" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "Koyu" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "Sistem" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "Renkler" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "Denaro tarafından kullanılan renkleri özelleştirin." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "Öntanımlı İşlem Rengi" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" +"Bu ayardaki bir değişiklik yalnızca yeni eklenen işlemlere uygulanacaktır." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "Öntanımlı Aktarım Rengi" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "Bu ayardaki bir değişiklik yalnızca yeni aktarımlara uygulanacaktır." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "Öntanımlı Grup Rengi" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "Bu ayardaki bir değişiklik yalnızca yeni gruplara uygulanacaktır." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "Yerel" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "Ondalık Ayırıcı Ekle" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" +"Yerel ayarın ondalık ayırıcısının bir tutar alanına hangi tuşlara " +"basıldığında ekleneceğini ayarlayın." + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "Kapalı" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "Sayısal klavye noktası" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "Nokta ve Virgül" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "Hesap" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "Hesap Aç" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "Uygulama" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "Uygulama" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "Çık" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "Hata" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" +"Para birimi verileri yüklenemedi. Lütfen tekrar deneyin. Hata devam ediyorsa " +"hatayı bildirin." + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "Kapat" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "Sonuç panoya kopyalandı." + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "Parola Kuvveti" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "Parola Değiştir" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "Parola Kuvveti" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "İşlem Yok" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "Grubu Düzenle" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "Dosya İçe Aktar" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub Deposu" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision Denaro Hesabı" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Parolayı buraya girin" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "İptal Et" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "Kilidi Aç" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "Depolama Konumu" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "Buraya ad girin" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "Aç" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "Eylemler" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "Tasarruf" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Simgeyi buraya girin" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Kodu buraya girin" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "Miktar Gösterim Biçimi" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "Dosya İçe Aktar" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "Hesap Seçilmedi" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "Hesap Adı (Açıldı)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "Para Birimi Simgesi (Boş)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "Ad (Boş)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "Ondalık Ayırıcı (Boş)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "Ondalık Ayırıcı (Geçersiz)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "Grup Ayırıcı (Geçersiz)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "Para Birimi Simgesi (Geçersiz)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "Tüm Bilgileri Dışa Aktar" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "Değişim günlüğü" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Hata Raporla" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Tartışmalar" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "Geliştirenler" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"Başlamak için bir hesap oluşturun veya açın. Bir dosyayı dosya " +"tarayıcınızdan uygulamaya da sürükleyebilirsiniz." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "Açılmış bir hesabın üzerine yazılamıyor." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "Sonuç panoya kopyalandı." + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "Hesabı Kapat" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "Öntanımlı İşlem Türü" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "Öntanımlı Aktarım Rengi" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "Öntanımlı Grup Rengi" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "Tutarı buraya girin" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "Tamam" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "Sonuç" + +#~ msgid "(Copy)" +#~ msgstr "(Kopya)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0} etiket" +#~ msgstr[1] "{0} tags" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0} işlem" +#~ msgstr[1] "{0} işlem" + +#~ msgid "Account Name (Exists)" +#~ msgstr "Hesap Adı (Var)" + +#~ msgid "Add" +#~ msgstr "Ekle" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "Yeni bir işlem ekleyin veya bir dosyadan işlemleri içe aktarın." + +#~ msgid "Add Password To PDF?" +#~ msgstr "PDFʼye Parola Eklensin mi?" + +#~ msgid "All files" +#~ msgstr "Tüm dosyalar" + +#~ msgid "Amount (Invalid)" +#~ msgstr "Tutar (Geçersiz)" + +#~ msgid "Apply" +#~ msgstr "Uygula" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Bu grubu silmek istediğinizden emin misiniz?\n" +#~ "Bu eylem geri alınamaz." + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "Bu işlemi silmek istediğinizden emin misiniz?\n" +#~ "Bu eylem geri alınamaz." + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "Seçili klasöre erişilemiyor, Flatpak izinlerini denetleyin." + +#~ msgid "Currency Code" +#~ msgstr "Para Birimi Kodu" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "Para Birimi Kodu (Boş)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "Tarih" + +#~ msgid "Delete Existing" +#~ msgstr "Mevcut Olanı Sil" + +#~ msgid "Delete Group" +#~ msgstr "Grubu Sil" + +#~ msgid "Delete Only Source" +#~ msgstr "Yalnızca Kaynağı Sil" + +#~ msgid "Delete Source and Generated" +#~ msgstr "Kaynağı ve Oluşturulanı Sil" + +#~ msgid "Delete Transaction" +#~ msgstr "İşlemi Sil" + +#~ msgid "Description" +#~ msgstr "Açıklama" + +#~ msgid "Description (Empty)" +#~ msgstr "Açıklama (Boş)" + +#~ msgid "Destination Account" +#~ msgstr "Hedef Hesap" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "Hedef Hesap (Geçersiz)" + +#~ msgid "Destination Account Password" +#~ msgstr "Hedef Hesap Parolası" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "Hedef Hesap Parolası (Geçersiz)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "Hedef Hesap Parolası (Gerekli)" + +#~ msgid "Disassociate Existing" +#~ msgstr "Mevcut İlişkiyi Kes" + +#~ msgid "Exported account to file successfully." +#~ msgstr "Hesap dosyaya başarıyla dışa aktarıldı." + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "Oluşturuldu: {0}" + +#~ msgid "Group" +#~ msgstr "Grup" + +#~ msgid "Group Name" +#~ msgstr "Grup Adı" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Import from Account" +#~ msgstr "Hesaptan İçe Aktar" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "{0} işlem dosyadan içe aktarıldı." +#~ msgstr[1] "{0} işlem dosyadan içe aktarıldı." + +#~ msgid "N/A" +#~ msgstr "Yok" + +#~ msgid "Name" +#~ msgstr "Ad" + +#~ msgid "Name (Exists)" +#~ msgstr "Ad (Var)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "Hayır" + +#~ msgid "No End Date" +#~ msgstr "Bitiş Tarihi Yok" + +#~ msgid "No Transactions Found" +#~ msgstr "İşlem Bulunamadı" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "Hiçbir işlem belirtilen süzgeçlerle eşleşmiyor." + +#~ msgid "Notes" +#~ msgstr "Notlar" + +#~ msgid "Nothing to import from the file." +#~ msgstr "Dosyadan içe aktarılacak bir şey yok." + +#~ msgid "Page {0}" +#~ msgstr "Sayfa {0}" + +#~ msgid "PDF Password" +#~ msgstr "PDF Parolası" + +#~ msgid "Receipt" +#~ msgstr "Makbuz" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "Makbuz (Dosyaya Erişilemez)" + +#~ msgid "Receipts" +#~ msgstr "Makbuzlar" + +#~ msgid "Repeat End Date" +#~ msgstr "Tekrarlama Bitiş Tarihi" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "Tekrarlama Bitiş Tarihi (Geçersiz)" + +#~ msgid "Repeat Interval" +#~ msgstr "Tekrarlama Aralığı" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "Tekrarlama Aralığı Değiştirildi" + +#~ msgid "Select Account" +#~ msgstr "Hesap Seç" + +#~ msgid "Select Backup Folder" +#~ msgstr "Yedekleme Klasörü Seç" + +#~ msgid "Sort By Amount" +#~ msgstr "Tutara Göre Sırala" + +#~ msgid "Sort By Date" +#~ msgstr "Tarihe Göre Sırala" + +#~ msgid "Sort By Id" +#~ msgstr "Kimliğe Göre Sırala" + +#~ msgid "Tags" +#~ msgstr "Etiketler" + +#~ msgid "The password of the account was changed." +#~ msgstr "Hesabın parolası değiştirildi." + +#~ msgid "The password of the account was removed." +#~ msgstr "Hesabın parolası kaldırıldı." + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "Bu iletişim kutusu kapatıldıktan sonra şifre kaldırılacaktır." + +#~ msgid "The passwords do not match." +#~ msgstr "Parolalar eşleşmiyor." + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "Tekrarlama aralığı değiştirildi.\n" +#~ "Mevcut oluşturulmuş işlemlerle ne yapmak istersiniz?\n" +#~ "\n" +#~ "Yeni aralık baz alınarak yeni tekrarlama işlemleri oluşturulacaktır." + +#~ msgid "This account has no money available to transfer." +#~ msgstr "Bu hesapta aktarılacak para yok." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "Bu işlem bir kaynak tekrarlama işlemidir.\n" +#~ "Tekrarlanan işlemlerle ne yapmak istersiniz?\n" +#~ "\n" +#~ "Yalnızca kaynak işlemin silinmesi, bireysel olarak oluşturulan\n" +#~ "işlemlerin düzenlenebilir olmasını sağlayacaktır." + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "Bu işlem bir kaynak tekrarlama işlemidir.\n" +#~ "Tekrarlanan işlemlerle ne yapmak istersiniz?\n" +#~ "\n" +#~ "Yalnızca kaynak işlemin güncellenmesi, \n" +#~ "oluşturulan işlemlerin kaynakla ilişkisini kesecektir." + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "İşlem" + +#~ msgid "Type" +#~ msgstr "Tür" + +#~ msgid "Unable to export account to file." +#~ msgstr "Hesap dosyaya dışa aktarılamıyor." + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "" +#~ "Dosyadan bilgiler içe aktarılamıyor. Lütfen uygulamanın dosyaya erişim " +#~ "izni olduğundan emin olun ve tekrar deneyin." + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "İşlemler dosyadan içe aktarılamıyor." + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "" +#~ "Hesap açılamıyor. Uygulamanın dosyaya erişim izni olduğundan emin olun ve " +#~ "tekrar deneyin." + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "Var olan hesabın üzerine yazılamıyor." + +#~ msgid "Untagged" +#~ msgstr "Etiketsiz" + +#~ msgid "Upcoming transactions" +#~ msgstr "Yaklaşan işlemler" + +#~ msgid "Update Only Source" +#~ msgstr "Yalnızca Kaynağı Güncelle" + +#~ msgid "Update Source and Generated" +#~ msgstr "Kaynağı ve Oluşturulanı Güncelle" + +#~ msgid "Update Transaction" +#~ msgstr "İşlemi Güncelle" + +#~ msgid "Upload" +#~ msgstr "Yükle" + +#~ msgid "View" +#~ msgstr "Görünüm" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "PDF dosyasını parola ile korumak ister misiniz?\n" +#~ "\n" +#~ "Parola kaybedilirse PDFʼye erişilemez." + +#~ msgid "Yes" +#~ msgstr "Evet" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "Hesap tarafından kullanılan para birimini yönetin." + +#~ msgid "Set a new password or remove one." +#~ msgstr "Yeni bir parola belirleyin veya birini kaldırın." + +#~ msgid "Other" +#~ msgstr "Diğer" + +#~ msgid "Unlimited" +#~ msgstr "Sınırsız" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "Geçerli Görünümü Dışa Aktar" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "Açıklamaya göre ara" + +#~ msgid "Today's Overview" +#~ msgstr "Bugünün Genel Görünümü" + +#~ msgid "Select All Overview Filters" +#~ msgstr "Tüm Genel Görünüm Süzgeçlerini Seç" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "Yeni Grup (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "Grupların Görünürlüğünü Değiştir" + +#~ msgid "Select All Groups Filters" +#~ msgstr "Tüm Grup Süzgeçlerini Seç" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "Tüm Grup Süzgeçlerinin Seçimini Kaldır" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "Etiketlerin Görünürlüğünü Değiştir" + +#~ msgid "Select All Tags Filters" +#~ msgstr "Tüm Etiket Süzgeçlerini Seç" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "Etiket Süzgeçlerinin Seçimini Kaldır" + +#~ msgid "Calendar" +#~ msgstr "Takvim" + +#~ msgid "Select Current Month" +#~ msgstr "Geçerli Ayı Seç" + +#~ msgid "Reset To Today" +#~ msgstr "Bugüne Sıfırla" + +#~ msgid "Today" +#~ msgstr "Bugün" + +#~ msgid "Select Range" +#~ msgstr "Aralık Seç" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "Başlangıç" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "Bitiş" + +#~ msgid "Sort From First To Last" +#~ msgstr "Baştan Sona Sırala" + +#~ msgid "Sort From Last To First" +#~ msgstr "Sondan Başa Sırala" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "Yeni İşlem (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "Yeni" + +#~ msgid "Suggestions" +#~ msgstr "Öneriler" + +#~ msgid "Converter" +#~ msgstr "Dönüştürücü" + +#~ msgid "Loading..." +#~ msgstr "Yükleniyor..." + +#~ msgid "All Accounts" +#~ msgstr "Tüm Hesaplar" + +#~ msgid "Color" +#~ msgstr "Renk" + +#~ msgid "Delete" +#~ msgstr "Sil" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "" +#~ "Bu sadece uygulamanın nasıl çalıştığını etkilemeyen kullanışlı bir " +#~ "etikettir." + +#~ msgid "Enter Password To Login:" +#~ msgstr "Giriş Yapmak İçin Parolayı Girin:" + +#~ msgid "Checking Account Color" +#~ msgstr "Çek Hesabı Rengi" + +#~ msgid "Savings Account Color" +#~ msgstr "Tasarruf Hesabı Rengi" + +#~ msgid "Business Account Color" +#~ msgstr "Kurumsal Hesap Rengi" + +#~ msgid "Use Native Digits" +#~ msgstr "Yerel Rakamları Kullan" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "" +#~ "Latin rakamları yerine yerel ayarınız için yerel olan rakamların " +#~ "kullanılıp kullanılmayacağı." + +#~ msgid "Backup" +#~ msgstr "Yedekleme" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CSV Yedekleme Klasörü" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "" +#~ "Şifrelenmemiş hesaplar, bir değişiklik yapıldığında kendiliğinden CSV " +#~ "dosyaları olarak bu klasöre dışa aktarılır." + +#~ msgid "Clear Backup Folder" +#~ msgstr "Yedekleme Klasörünü Temizle" + +#~ msgid "No Reminders" +#~ msgstr "Hatırlatıcı Yok" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "Aktar" + +#~ msgid "New Transaction" +#~ msgstr "Yeni İşlem" + +#~ msgid "Toggle Sidebar" +#~ msgstr "Kenar Çubuğunu Aç/Kapa" + +#~ msgid "Make a Copy" +#~ msgstr "Kopya Oluştur" + +#~ msgid "Clear End Date" +#~ msgstr "Temizleme Bitiş Tarihi" + +#~ msgid "Daily" +#~ msgstr "Günlük" + +#~ msgid "Weekly" +#~ msgstr "Haftalık" + +#~ msgid "Biweekly" +#~ msgstr "İki Haftada Bir" + +#~ msgid "Monthly" +#~ msgstr "Aylık" + +#~ msgid "Quarterly" +#~ msgstr "Üç Aylık" + +#~ msgid "Yearly" +#~ msgstr "Yıllık" + +#~ msgid "Biyearly" +#~ msgstr "İki Yılda Bir" + +#~ msgid "Use group color" +#~ msgstr "Grup rengini kullan" + +#~ msgid "Use unique color" +#~ msgstr "Benzersiz renk kullan" + +#~ msgid "Enter a new tag name..." +#~ msgstr "Yeni etiket adı gir..." + +#~ msgid "Add Tag" +#~ msgstr "Etiket Ekle" + +#~ msgid "Extras" +#~ msgstr "Ekler" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "İşlemin ek alanlarını yönetin." + +#~ msgid "Enter notes here" +#~ msgstr "Notları buraya girin" + +#~ msgid "Edit Transaction" +#~ msgstr "İşlemi Düzenle" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "Para aktarımı, bu hesapta verilen tutarda bir gider işlemi ve aktarılacak " +#~ "hesapta verilen tutarda bir gelir işlemi oluşturacaktır." + +#~ msgid "Select a destination account" +#~ msgstr "Hedef hesabı seçin" + +#~ msgid "Recent Accounts" +#~ msgstr "Son Hesaplar" + +#~ msgid "Conversion Needed" +#~ msgstr "Dönüşüm Gerekli" + +#~ msgid "Use Custom Rates" +#~ msgstr "Özel Oran Kullan" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "Dönüşüm oranını elle girin" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "Aktar" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "Yeni" + +#~ msgid "Toggle Graphs" +#~ msgstr "Grafikleri Aç/Kapa" + +#~ msgid "result" +#~ msgstr "sonuç" + +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "" +#~ "para;finans;cüzdan;nakit;banka;Nickvision;money;finance;wallet;cash;bank;" +#~ "Nickvision;" + +#~ msgid "— Manage multiple accounts at a time, with a familiar tab interface" +#~ msgstr "" +#~ "— Tanıdık bir sekme arayüzü ile aynı anda birden fazla hesabı yönetin" + +#~ msgid "— Easily filter transactions by type, group, or date" +#~ msgstr "— İşlemleri türe, gruba veya tarihe göre kolayca süzün" + +#~ msgid "— Easily repeat transactions, such as bills that occur every month" +#~ msgstr "— Her ay gerçekleşen faturalar gibi işlemleri kolayca tekrarlayın" + +#~ msgid "— Transfer money from one account to another" +#~ msgstr "— Bir hesaptan diğerine para aktarın" + +#~ msgid "" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "— Hesabı CSV dosyası olarak dışa aktarın ya da hesaba toplu işlem eklemek " +#~ "için CSV, OFX veya QIF dosyası kullanın" + +#~ msgid "Unable to import information from the file. Unsupported file type." +#~ msgstr "Dosyadan bilgiler içe aktarılamadı. Desteklenmeyen dosya türü." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Nickvision" +#~ msgstr "Nickvision" + +#~ msgid "Customize the application's user interface." +#~ msgstr "Uygulamanın kullanıcı arayüzünü özelleştir." + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Denaroʼnun yerel ayarları nasıl kullanacağını özelleştirin." + +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "Denaro hesapları için yedekleme konumlarını özelleştirin." + +#~ msgctxt "GroupSeparator" +#~ msgid "Other" +#~ msgstr "Diğer" + +#~ msgid "Save" +#~ msgstr "Kaydet" + +#~ msgid "Hide" +#~ msgstr "Gizle" + +#~ msgid "Show" +#~ msgstr "Göster" + +#~ msgid "Reset Dates Filters" +#~ msgstr "Tarih Süzgeçlerini Sıfırla" + +#~ msgid "Delete Group?" +#~ msgstr "Grup Silinsin mi?" + +#~ msgid "Delete Transaction?" +#~ msgstr "İşlem Silinsin mi?" + +#~ msgid "" +#~ "- Fixed an issue where Denaro would crash on systems with unconfigured " +#~ "locales" +#~ msgstr "" +#~ "- Yapılandırılmamış yerel ayarlara sahip sistemlerde Denaro'nun çökmesine " +#~ "neden olan bir sorun düzeltildi" + +#~ msgid "" +#~ "- Fixed an issue where PDF exporting failed for accounts with many " +#~ "receipts" +#~ msgstr "" +#~ "- Çok sayıda makbuz içeren hesaplar için PDF dışa aktarmanın başarısız " +#~ "olmasına neden olan bir sorun düzeltildi" + +#~ msgid "" +#~ "- Fixed an issue where a group's filter was reactivated when a " +#~ "transaction was added to that group" +#~ msgstr "" +#~ "- Bir gruba bir işlem eklendiğinde grubun süzgecinin yeniden " +#~ "etkinleştirilmesine neden olan bir sorun düzeltildi" + +#~ msgid "" +#~ "- Error messages will be shown if Denaro attempts to access inaccessible " +#~ "files instead of crashing" +#~ msgstr "" +#~ "- Denaro erişilemeyen dosyalara erişmeye çalışırsa çökmek yerine artık " +#~ "hata mesajları gösteriliyor" + +#~ msgid "- Updated translations (Thanks to everyone on Weblate)!" +#~ msgstr "- Güncellenmiş çeviriler (Weblate'deki herkese teşekkürler)!" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Hesap Ayarları" + +#~ msgid "Version: {0}" +#~ msgstr "Sürüm: {0}" + +#~ msgid "About {0}" +#~ msgstr "{0} Hakkında" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "GitHub Katkıcıları ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" + +#~ msgid "" +#~ "Translators on Weblate ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" +#~ msgstr "" +#~ "Weblateʼteki Çevirmenler ❤️ https://hosted.weblate.org/projects/nickvision-" +#~ "money/app/" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "Para Aktarımı (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "Dosyadan İçe Aktar (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "Süzgeçler" + +#~ msgid "Hide Groups" +#~ msgstr "Grupları Gizle" + +#~ msgid "Show Groups" +#~ msgstr "Grupları Göster" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "{0} işlem dosyadan içe aktarıldı." + +#~ msgid "Enter description here" +#~ msgstr "Açıklamayı buraya girin" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "Para Hesabı (*.nmoney)" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "" +#~ "- Tanıdık bir sekme arayüzü ile aynı anda birden fazla hesabı yönetin\n" +#~ "- İşlemleri türe, gruba veya tarihe göre kolayca süzün\n" +#~ "- Her ay gerçekleşen faturalar gibi işlemleri kolayca tekrarlayın\n" +#~ "- Bir hesaptan diğerine para aktarın\n" +#~ "- Hesabı CSV dosyası olarak dışa aktarın ve hesaba toplu işlem eklemek " +#~ "için CSV, OFX veya QIF dosyasını içe aktarın" + +#~ msgid "New Window" +#~ msgstr "Yeni Pencere" + +#~ msgid "Sort" +#~ msgstr "Sırala" + +#~ msgid "Order By" +#~ msgstr "Sırala" + +#~ msgid "Transaction ({0})" +#~ msgstr "İşlem ({0})" + +#~ msgid "Transactions ({0})" +#~ msgstr "İşlemler ({0})" + +#~ msgid "Reset All Filters" +#~ msgstr "Tüm Süzgeçleri Sıfırla" + +#~ msgid "Account Settings (Ctrl+.)" +#~ msgstr "Hesap Ayarları (Ctrl+.)" + +#~ msgid "Increasing" +#~ msgstr "Artan" + +#~ msgid "Decreasing" +#~ msgstr "Azalan" + +#~ msgid "Sort By" +#~ msgstr "Sırala" + +#~ msgid "Enter decimal separator" +#~ msgstr "Ondalık ayırıcıyı girin" + +#~ msgid "Enter group separator" +#~ msgstr "Grup ayırıcıyı girin" + +#~ msgid "No Backup Folder" +#~ msgstr "Yedekleme Klasörü Yok" diff --git a/resources/po/ur.po b/resources/po/ur.po new file mode 100644 index 000000000..17c951b94 --- /dev/null +++ b/resources/po/ur.po @@ -0,0 +1,1152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "" + +#: libdenaro/src/models/account.cpp:495 +#, c++-format +msgid "Transfer to {}" +msgstr "" + +#: libdenaro/src/models/account.cpp:512 +#, c++-format +msgid "Transfer from {}" +msgstr "" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, c++-format +msgid "{} from {}" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, c++-format +msgid "{} days from now" +msgstr "" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "ذاتی مالیات کا منتظم" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "میٹرکس چیٹ" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +msgid "Contributors on GitHub" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "میزان" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +msgid "This account cannot be overwritten." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +msgid "The account is already open." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +msgid "Export to CSV" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +msgid "Export to PDF" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +#, fuzzy +msgid "Account Settings" +msgstr "ترتیبات" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +#, fuzzy +msgid "Settings" +msgstr "ترتیبات" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "نیا" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +#, fuzzy +msgid "Account Name" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +#, fuzzy +msgid "Account Type" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +#, fuzzy +msgid "Savings" +msgstr "ترتیبات" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +msgid "$ is the currency's symbol." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +msgid "Switch Currencies" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +#, fuzzy +msgid "Amount" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +#, fuzzy +msgid "Copy Result Amount" +msgstr "میزانیں" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "پیچھے" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +#, fuzzy +msgid "New Account" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +msgid "Use this wizard to get the most out of your new account" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +#, fuzzy +msgid "Account Options" +msgstr "ترتیبات" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +#, fuzzy +msgid "Account Currency" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "مدد" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +#, fuzzy +msgid "Account Menu" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "کھولیں" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +#, fuzzy +msgid "No Recent Accounts" +msgstr "میزانیں" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "اڑا دیں" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "مرکز" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "ڈیش بورڈ" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +msgid "A change in this setting will only be applied to newly added groups." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +msgid "Off" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +#, fuzzy +msgid "Open Account" +msgstr "میزان" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +msgctxt "Shortcut" +msgid "Application" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "ترتیبات" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "بند کریں" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +msgid "Password changed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +msgid "Unable to change password" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +msgid "Password removed" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +msgid "No Transaction Reminders" +msgstr "" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +msgid "Select Import File" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "گٹہب ریپو" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "منسوخ کریں" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +msgid "Storage" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +msgid "Enter name here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "کھولیں" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "ترتیبات" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "ترتیبات" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "میزان" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +msgid "Import" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +msgid "No File Selected" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "میزان" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +msgid "Symbol (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +msgid "Code (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +msgid "Symbol (Invalid)" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +msgid "Copy Debug Information" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "تبدیلیاں" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "ایک خرابی کی رپورٹ کریں" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "بحث" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +msgid "Drop here to open account" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +msgid "Debug information copied to clipboard." +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "میزان" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +msgid "Default Transaction Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +msgid "Default Transfer Color" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +msgid "Default Group Color" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +msgid "Enter source amount" +msgstr "" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "ٹھیک ہے" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +msgid "Result (Error)" +msgstr "" + +#~ msgid "Add" +#~ msgstr "شامل کریں" + +#~ msgid "Apply" +#~ msgstr "لاگو کریں" + +#~ msgid "No" +#~ msgstr "نہیں" + +#, fuzzy +#~ msgid "Select Account" +#~ msgstr "میزان" + +#~ msgid "Yes" +#~ msgstr "ہاں" + +#, fuzzy +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "نیا" + +#, fuzzy +#~ msgid "All Accounts" +#~ msgstr "میزانیں" + +#, fuzzy +#~ msgid "Backup" +#~ msgstr "پیچھے" + +#, fuzzy +#~ msgid "Recent Accounts" +#~ msgstr "میزانیں" + +#, fuzzy +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "نیا" + +#~ msgid "Save" +#~ msgstr "محفوظ کریں" + +#~ msgid "Version: {0}" +#~ msgstr "ورژن: {0}" + +#~ msgid "About {0}" +#~ msgstr "{0} کے متعلق" diff --git a/resources/po/zh_CN.po b/resources/po/zh_CN.po new file mode 100644 index 000000000..bb0bbc130 --- /dev/null +++ b/resources/po/zh_CN.po @@ -0,0 +1,1807 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-24 21:54-0400\n" +"PO-Revision-Date: 2024-02-02 03:01+0000\n" +"Last-Translator: aerowolf \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: libdenaro/src/models/account.cpp:53 +#: org.nickvision.money.gnome/src/views/accountpage.cpp:89 +msgid "Ungrouped" +msgstr "無組群" + +#: libdenaro/src/models/account.cpp:54 +msgid "Transactions without a group" +msgstr "暫無組群之交易" + +#: libdenaro/src/models/account.cpp:495 +#, fuzzy, c++-format +msgid "Transfer to {}" +msgstr "轉帳到 {0}" + +#: libdenaro/src/models/account.cpp:512 +#, fuzzy, c++-format +msgid "Transfer from {}" +msgstr "從 {0} 轉帳" + +#: libdenaro/src/models/dashboardgroup.cpp:23 +#: libdenaro/src/models/dashboardgroup.cpp:27 +#, fuzzy, c++-format +msgid "{} from {}" +msgstr "{0} 从 {1}" + +#: libdenaro/src/models/transactionreminder.cpp:61 +msgid "Tomorrow" +msgstr "明天" + +#: libdenaro/src/models/transactionreminder.cpp:65 +msgid "One week from now" +msgstr "从现在起一周" + +#: libdenaro/src/models/transactionreminder.cpp:69 +msgid "One month from now" +msgstr "从现在起一个月" + +#: libdenaro/src/models/transactionreminder.cpp:73 +msgid "Two months from now" +msgstr "从现在起二个月" + +#: libdenaro/src/models/transactionreminder.cpp:77 +#, fuzzy, c++-format +msgid "{} days from now" +msgstr "从现在起二个月" + +#: libdenaro/src/controllers/accountsettingsdialogcontroller.cpp:22 +#: libdenaro/src/controllers/newaccountdialogcontroller.cpp:31 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:54 +msgid "Your system reported that your currency is" +msgstr "系统报告,您的货币类型为" + +#: libdenaro/src/controllers/accountviewcontroller.cpp:20 +#, fuzzy +msgid "Unable to login to the account. The provided password may be invalid." +msgstr "不能登录到账号。密码无效。" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:33 +msgid "Denaro" +msgstr "Denaro" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:34 +msgid "Manage your personal finances" +msgstr "管理你的个人财务" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:38 +msgid "Matrix Chat" +msgstr "Matrix Chat" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:40 +#, fuzzy +msgid "Contributors on GitHub" +msgstr "GitHub 上的贡献者 ❤️" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:42 +msgid "Fyodor Sobolev" +msgstr "Fyodor Sobolev" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:45 +msgid "David Lapshin" +msgstr "David Lapshin" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:47 +msgid "translator-credits" +msgstr "翻译者荣誉榜" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:147 +msgctxt "Night" +msgid "Good Morning!" +msgstr "早上好!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:151 +msgctxt "Morning" +msgid "Good Morning!" +msgstr "早上好!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:155 +msgid "Good Afternoon!" +msgstr "下午好!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:159 +msgid "Good Evening!" +msgstr "晚上好!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:161 +msgid "Good Day!" +msgstr "祝你有美好的一天!" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:226 +msgid "New update available" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:254 +msgid "Unable to download and install update" +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:309 +#, fuzzy +msgid "This account already exists." +msgstr "此账户已经开启。" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:316 +#, fuzzy +msgid "This account cannot be overwritten." +msgstr "此账户已经开启。" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:359 +msgid "The file is not a Denaro account file." +msgstr "" + +#: libdenaro/src/controllers/mainwindowcontroller.cpp:365 +#, fuzzy +msgid "The account is already open." +msgstr "此账户已经开启。" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:6 +msgid "Import from File" +msgstr "从文件导入" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:10 +#, fuzzy +msgid "Export to CSV" +msgstr "导出到文件" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:11 +#, fuzzy +msgid "Export to PDF" +msgstr "导出到文件" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:17 +msgid "Overview" +msgstr "概要" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:31 +msgid "Transfer Money" +msgstr "转账" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:37 +msgid "Import and Export" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:44 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:7 +msgid "Account Settings" +msgstr "账户设置" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/account_page.blp:48 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:84 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:21 +msgid "Settings" +msgstr "設定" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:56 +msgid "Total" +msgstr "總額" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:64 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:44 +msgid "Income" +msgstr "收入" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:77 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:29 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:139 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:45 +msgid "Expense" +msgstr "支出" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:91 +msgid "Reminders" +msgstr "提醒" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:95 +msgid "Groups" +msgstr "群组" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:101 +msgid "New Group" +msgstr "新建群组" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:105 +#: org.nickvision.money.gnome/blueprints/main_window.blp:343 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:85 +#, fuzzy +msgid "New" +msgstr "新建" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:117 +msgid "Transactions" +msgstr "交易" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:125 +msgid "Visualize" +msgstr "可见" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:143 +msgid "Previous" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_page.blp:155 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:104 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:157 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:252 +msgid "Next" +msgstr "继续" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:10 +msgid "Account" +msgstr "账户" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:14 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:71 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:29 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:225 +msgid "Account Name" +msgstr "账户名称" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:18 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:130 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:39 +msgid "Account Type" +msgstr "账户类型" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:367 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:368 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:40 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:429 +msgid "Checking" +msgstr "支票" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:371 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:372 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:432 +msgid "Savings" +msgstr "储蓄" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:20 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:132 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:375 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:376 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:42 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:435 +msgid "Business" +msgstr "商务" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:27 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:137 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:43 +msgid "Default Transaction Type" +msgstr "默认的交易类型" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:34 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:144 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:46 +msgid "Transaction Reminders Threshold" +msgstr "交易提醒阈值" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:35 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:145 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:47 +msgid "" +"Determines how far in advanced Denaro should remind users of upcoming " +"transactions in the account." +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:48 +msgid "Never" +msgstr "永不" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:49 +msgid "One Day Before" +msgstr "一天前" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:50 +msgid "One Week Before" +msgstr "一周前" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:51 +msgid "One Month Before" +msgstr "一月前" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:38 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:148 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:52 +msgid "Two Months Before" +msgstr "两月前" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:45 +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:53 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:23 +msgid "Currency" +msgstr "货币" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:56 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:188 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:56 +msgid "Use Custom Currency" +msgstr "使用自定义货币" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:61 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:193 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:59 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:226 +msgid "Symbol" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:65 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:197 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:61 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:227 +msgid "Code" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:69 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:201 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:63 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:228 +msgid "Decimal Separator" +msgstr "小数点分隔符" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:71 +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:203 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:66 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:72 +msgid "Custom" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:84 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:216 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:67 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:229 +msgid "Group Separator" +msgstr "组别分隔符" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:86 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:218 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:71 +msgid "None" +msgstr "无" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:99 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:231 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:73 +msgid "Decimal Digits" +msgstr "十进制数字" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:74 +msgid "Two" +msgstr "2" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:75 +msgid "Three" +msgstr "3" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:76 +msgid "Four" +msgstr "4" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:77 +msgid "Five" +msgstr "5" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:101 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:233 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:78 +msgid "Six" +msgstr "6" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:106 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:238 +msgid "Amount Display Style" +msgstr "金额显示样式" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:107 +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:239 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:80 +#, fuzzy +msgid "$ is the currency's symbol." +msgstr "货币符号" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:118 +msgid "Password" +msgstr "密码" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:122 +msgid "If the password is lost, there is no way to restore the file!" +msgstr "如果忘记密码,将无法恢复为您的账号!" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:125 +msgid "New Password" +msgstr "新的密码" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:131 +msgid "Confirm Password" +msgstr "确认密码" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:137 +msgid "Change Password" +msgstr "更改密码" + +#: org.nickvision.money.gnome/blueprints/account_settings_dialog.blp:148 +msgid "Remove Current Password" +msgstr "" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:24 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:26 +#, fuzzy +msgid "Switch Currencies" +msgstr "切换货币" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:27 +msgid "Switch" +msgstr "切换" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:36 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:24 +msgid "Source" +msgstr "源交易" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:40 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:25 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:101 +msgid "Result" +msgstr "结果" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:45 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:27 +msgid "Amount" +msgstr "金额" + +#: org.nickvision.money.gnome/blueprints/currency_converter_page.blp:55 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:30 +msgid "Copy Result Amount" +msgstr "复制结果金额" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:19 +msgid "Back" +msgstr "后退" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:39 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:16 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:25 +msgid "New Account" +msgstr "新建账户" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:40 +#, fuzzy +msgid "Use this wizard to get the most out of your new account" +msgstr "使用此向导可更好利用你的账户" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:45 +msgid "Let's Start" +msgstr "开始!" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:62 +msgid "Storage Location" +msgstr "存储位置" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:75 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:31 +#, fuzzy +msgid "Account Password" +msgstr "账户密码(可选)" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:79 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:33 +msgid "Folder" +msgstr "文件夹" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:86 +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:121 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:34 +msgid "Select Folder" +msgstr "选择文件夹" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:95 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:35 +msgid "Overwrite Existing Accounts" +msgstr "覆盖已有账户" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:121 +msgid "Account Options" +msgstr "账户选项" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:174 +msgid "Account Currency" +msgstr "账户货币" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:269 +msgid "Import Existing Information" +msgstr "导入已有信息" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:278 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:86 +#, fuzzy +msgid "" +"Upload a supported file to use to import existing information into the new " +"account. Denaro supports CSV, OFX, and QIF files." +msgstr "上传一个有效文件,用于将现有信息导入新账户。" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:285 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:87 +msgid "Import File" +msgstr "导入文件" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:295 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:89 +msgid "Select File" +msgstr "选择文件" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:304 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:90 +msgid "Clear File" +msgstr "清除文件" + +#: org.nickvision.money.gnome/blueprints/new_account_dialog.blp:318 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:27 +msgid "Create" +msgstr "创建" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:5 +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:8 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:30 +msgid "Preferences" +msgstr "偏好設定" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:6 +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:35 +msgid "Keyboard Shortcuts" +msgstr "键盘快捷键" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:7 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:75 +msgid "Help" +msgstr "帮助" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:8 +msgid "About Denaro" +msgstr "关于Denaro" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:40 +msgid "Account Menu" +msgstr "账户菜单" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:58 +msgid "Recents" +msgstr "近期" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:68 +#: org.nickvision.money.gnome/blueprints/main_window.blp:344 +msgid "New Account (Ctrl+N)" +msgstr "新建账户 (Ctrl+N)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:73 +#: org.nickvision.money.gnome/blueprints/main_window.blp:353 +msgid "Open Account (Ctrl+O)" +msgstr "打开账户 (Ctrl+O)" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:77 +#: org.nickvision.money.gnome/blueprints/main_window.blp:352 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:154 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:86 +msgid "Open" +msgstr "开启" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:90 +#: org.nickvision.money.gnome/blueprints/main_window.blp:274 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:403 +msgid "No Recent Accounts" +msgstr "无近期账户" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:110 +#: org.nickvision.money.gnome/blueprints/main_window.blp:128 +#: org.nickvision.money.gnome/blueprints/main_window.blp:146 +#: org.nickvision.money.gnome/blueprints/main_window.blp:294 +#: org.nickvision.money.gnome/blueprints/main_window.blp:312 +#: org.nickvision.money.gnome/blueprints/main_window.blp:330 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:422 +msgid "Remove" +msgstr "删除" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:160 +msgid "Main Menu" +msgstr "主菜单" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:183 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:247 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:72 +msgid "Home" +msgstr "目錄" + +#. Localize Strings +#: org.nickvision.money.gnome/blueprints/main_window.blp:200 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:252 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:83 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:21 +msgid "Currency Converter" +msgstr "汇率换算" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:210 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:74 +#, fuzzy +msgid "Accounts" +msgstr "账户" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:229 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:258 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:73 +msgid "Dashboard" +msgstr "显示看板" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:262 +#, fuzzy +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser" +msgstr "" +"要开始,请创建或打开账户。您也可以从文件浏览器中拖动一个文件到此应用中。" + +#: org.nickvision.money.gnome/blueprints/main_window.blp:370 +#, fuzzy +msgid "No Accounts Open" +msgstr "账户类型" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:12 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:22 +msgid "User Interface" +msgstr "用户界面" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:15 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:23 +msgid "Theme" +msgstr "主题" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:24 +msgctxt "Theme" +msgid "Light" +msgstr "亮色" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:25 +msgctxt "Theme" +msgid "Dark" +msgstr "暗色" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:17 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:26 +msgctxt "Theme" +msgid "System" +msgstr "跟随系统" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:27 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:30 +msgid "Colors" +msgstr "颜色" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:28 +msgid "Customize the colors used by Denaro." +msgstr "自定义界面颜色。" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:36 +msgid "Transaction Default Color" +msgstr "默认交易颜色" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:37 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:32 +msgid "" +"A change in this setting will only be applied to newly added transactions." +msgstr "对此设置的修改仅影响后续新的交易。" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:47 +msgid "Transfer Default Color" +msgstr "默认转账颜色" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:48 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:34 +msgid "A change in this setting will only be applied to new transfers." +msgstr "对此设置的修改仅影响新的交易。" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:58 +msgid "Group Default Color" +msgstr "群组默认颜色" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:59 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:36 +#, fuzzy +msgid "A change in this setting will only be applied to newly added groups." +msgstr "对此设置的修改将仅影响以后新建的群组。" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:71 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:37 +msgid "Locale" +msgstr "本地" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:74 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:38 +msgid "Insert Decimal Separator" +msgstr "插入十进制分隔符" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:75 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:39 +#, fuzzy +msgid "" +"For the selected keys, the account's decimal separator will be inserted " +"instead of the keyboard's value." +msgstr "设置按键,用于将区域设置的十进制分隔符插入金额字段。" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:37 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:58 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:29 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:40 +#, fuzzy +msgid "Off" +msgstr "关闭" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:41 +msgid "Numpad period only" +msgstr "仅数字键盘区域的句号" + +#: org.nickvision.money.gnome/blueprints/preferences_dialog.blp:78 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:42 +msgid "Period and Comma" +msgstr "句号和逗号" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:13 +#, fuzzy +msgctxt "Shortcut" +msgid "Account" +msgstr "账户" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:21 +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:325 +msgid "Open Account" +msgstr "开设账户" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:27 +#, fuzzy +msgctxt "Shortcut" +msgid "Application" +msgstr "应用" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:40 +#, fuzzy +msgid "About Application" +msgstr "应用" + +#: org.nickvision.money.gnome/blueprints/shortcuts_dialog.blp:45 +msgid "Quit" +msgstr "退出" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:40 +msgid "Error" +msgstr "错误" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:27 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:41 +msgid "" +"Unable to load currency data. Please try again. If the error still persists, " +"report a bug." +msgstr "不能载入货币数据。请重试。如果错误依旧,请报告bug。" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:28 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:26 +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:22 +msgid "Close" +msgstr "关闭" + +#: org.nickvision.money.gnome/src/controls/currencyconverterpage.cpp:102 +msgid "Result was copied to clipboard." +msgstr "结果已复制到剪贴板。" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:209 +#, fuzzy +msgid "Password changed" +msgstr "密码强度" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:215 +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:228 +#, fuzzy +msgid "Unable to change password" +msgstr "更改密码" + +#: org.nickvision.money.gnome/src/views/accountsettingsdialog.cpp:224 +#, fuzzy +msgid "Password removed" +msgstr "密码强度" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:60 +#, fuzzy +msgid "No Transaction Reminders" +msgstr "没有交易" + +#: org.nickvision.money.gnome/src/views/accountpage.cpp:92 +msgid "Edit Group" +msgstr "编辑群组" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:238 +#, fuzzy +msgid "Select Import File" +msgstr "导入文件" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:240 +msgid "All Files (*.csv, *.ofx, *.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:248 +msgid "CSV (*.csv)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:252 +msgid "Open Financial Exchange (*.ofx)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/newaccountdialog.cpp:256 +msgid "Quicken Interchange Format (*.qif)" +msgstr "" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:206 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:79 +msgid "GitHub Repo" +msgstr "GitHub 仓库" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:327 +#, fuzzy +msgid "Nickvision Denaro Account (*.nmoney)" +msgstr "Nickvision的Denaro账户" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:406 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:32 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:460 +msgid "Enter password here" +msgstr "Enter password here" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:469 +msgid "Cancel" +msgstr "取消" + +#: org.nickvision.money.gnome/src/views/mainwindow.cpp:414 +#: org.nickvision.money.winui/MainWindow.xaml.cpp:468 +msgid "Unlock" +msgstr "解锁" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:28 +#, fuzzy +msgid "Storage" +msgstr "存储位置" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:30 +#, fuzzy +msgid "Enter name here" +msgstr "在此处输入备注" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:36 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:57 +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:28 +#, fuzzy +msgid "On" +msgstr "开启" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:38 +#, fuzzy +msgid "Options" +msgstr "操作" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:41 +#, fuzzy +msgid "Saving" +msgstr "储蓄" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:60 +msgid "Enter symbol here" +msgstr "Enter symbol here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:62 +msgid "Enter code here" +msgstr "Enter code here" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:64 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:68 +msgid "." +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:65 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:69 +msgid "," +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:70 +msgid "'" +msgstr "" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:79 +#, fuzzy +msgid "Amount Style" +msgstr "金额显示样式" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:85 +#, fuzzy +msgid "Import" +msgstr "导入文件" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:88 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:152 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:199 +#, fuzzy +msgid "No File Selected" +msgstr "未选择账户" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:235 +#, fuzzy +msgid "Account Name (Invalid)" +msgstr "账户名称(已启用)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:296 +#, fuzzy +msgid "Symbol (Empty)" +msgstr "货币符号 (空)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:300 +#, fuzzy +msgid "Code (Empty)" +msgstr "名称 (空)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:304 +msgid "Decimal Separator (Empty)" +msgstr "小数点分隔符 (空)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:308 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:314 +msgid "Decimal Separator (Invalid)" +msgstr "小数点分隔符 (无效)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:309 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:319 +msgid "Group Separator (Invalid)" +msgstr "组别分隔符 (无效)" + +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:313 +#: org.nickvision.money.winui/NewAccountDialog.xaml.cpp:318 +#, fuzzy +msgid "Symbol (Invalid)" +msgstr "货币符号 (无效)" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:71 +msgid "Search" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:76 +msgid "Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:77 +#, fuzzy +msgid "Copy Debug Information" +msgstr "导出所有信息" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:78 +msgid "Changelog" +msgstr "變更日誌" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:80 +msgid "Report a Bug" +msgstr "Report a Bug" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:81 +msgid "Discussions" +msgstr "Discussions" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:82 +msgid "Credits" +msgstr "鳴謝" + +#. Localize Strings +#: org.nickvision.money.winui/MainWindow.xaml.cpp:100 +msgid "PREVIEW" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:107 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:111 +#, c++-format +msgid "" +"Developers:\n" +"{}\n" +"Designers:\n" +"{}\n" +"Artists:\n" +"{}\n" +"Translators:\n" +"{}" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:114 +msgid "" +"Create or open an account to get started. You may also drag a file into the " +"app from your file browser." +msgstr "" +"要开始,请创建或打开账户。您也可以从文件浏览器中拖动一个文件到此应用中。" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:175 +#, fuzzy +msgid "Drop here to open account" +msgstr "不能覆盖打开的账号。" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:239 +msgid "Update" +msgstr "" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:309 +#, fuzzy +msgid "Debug information copied to clipboard." +msgstr "结果已复制到剪贴板。" + +#: org.nickvision.money.winui/MainWindow.xaml.cpp:466 +#, fuzzy +msgid "Unlock Account" +msgstr "关闭账户" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:27 +msgid "Automatically Check for Updates" +msgstr "" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:31 +#, fuzzy +msgid "Default Transaction Color" +msgstr "默认的交易类型" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:33 +#, fuzzy +msgid "Default Transfer Color" +msgstr "默认转账颜色" + +#: org.nickvision.money.winui/SettingsPage.xaml.cpp:35 +#, fuzzy +msgid "Default Group Color" +msgstr "群组默认颜色" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:28 +#, fuzzy +msgid "Enter source amount" +msgstr "請在此輸入數額" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:42 +msgid "OK" +msgstr "OK" + +#: org.nickvision.money.winui/Controls/CurrencyConverterDialog.xaml.cpp:118 +#, fuzzy +msgid "Result (Error)" +msgstr "结果" + +#~ msgid "(Copy)" +#~ msgstr "(复制)" + +#, csharp-format +#~ msgid "{0} tag" +#~ msgid_plural "{0} tags" +#~ msgstr[0] "{0}个标签" + +#, csharp-format +#~ msgid "{0} transaction" +#~ msgid_plural "{0} transactions" +#~ msgstr[0] "{0}笔交易" + +#~ msgid "Account Name (Exists)" +#~ msgstr "账户名称 (已存在)" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Add a new transaction or import transactions from a file." +#~ msgstr "添加交易或从文件中导入交易。" + +#~ msgid "Add Password To PDF?" +#~ msgstr "添加密码至PDF?" + +#~ msgid "All files" +#~ msgstr "所有文件" + +#~ msgid "Amount (Invalid)" +#~ msgstr "金额 (无效)" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "" +#~ "Are you sure you want to delete this group?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "是否确认删除此组?\n" +#~ "该操作不可逆。" + +#~ msgid "" +#~ "Are you sure you want to delete this transaction?\n" +#~ "This action is irreversible." +#~ msgstr "" +#~ "確認刪除交易?\n" +#~ "此操作不可逆轉。" + +#~ msgid "Can't access the selected folder, check Flatpak permissions." +#~ msgstr "没有所选文件夹的权限,请检查Flatpak权限。" + +#~ msgid "Currency Code" +#~ msgstr "货币代码" + +#~ msgid "Currency Code (Empty)" +#~ msgstr "货币代码 (空)" + +#~ msgid "DaPigGuy" +#~ msgstr "DaPigGuy" + +#~ msgid "Date" +#~ msgstr "日期" + +#~ msgid "Delete Existing" +#~ msgstr "删除已存在的" + +#~ msgid "Delete Group" +#~ msgstr "删除组" + +#~ msgid "Delete Only Source" +#~ msgstr "删除唯一源" + +#~ msgid "Delete Source and Generated" +#~ msgstr "删除源和内容" + +#~ msgid "Delete Transaction" +#~ msgstr "删除交易" + +#~ msgid "Description" +#~ msgstr "描述" + +#~ msgid "Description (Empty)" +#~ msgstr "描述 (空)" + +#~ msgid "Destination Account" +#~ msgstr "目标账户" + +#~ msgid "Destination Account (Invalid)" +#~ msgstr "目标账户 (无效)" + +#~ msgid "Destination Account Password" +#~ msgstr "目标账户密码" + +#~ msgid "Destination Account Password (Invalid)" +#~ msgstr "目标账户密码 (无效)" + +#~ msgid "Destination Account Password (Required)" +#~ msgstr "目标账户密码 (必要)" + +#~ msgid "Disassociate Existing" +#~ msgstr "解除已有关联" + +#~ msgid "Exported account to file successfully." +#~ msgstr "成功将账户导出到文件。" + +#, csharp-format +#~ msgid "Generated: {0}" +#~ msgstr "已生成: {0}" + +#~ msgid "Group" +#~ msgstr "群组" + +#~ msgid "Group Name" +#~ msgstr "组名" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Import from Account" +#~ msgstr "从账户导入" + +#, csharp-format +#~ msgid "Imported {0} transaction from file." +#~ msgid_plural "Imported {0} transactions from file." +#~ msgstr[0] "从文件导入 {0} 笔交易。" + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Name" +#~ msgstr "名称" + +#~ msgid "Name (Exists)" +#~ msgstr "名称 (已存在)" + +#~ msgid "Nicholas Logozzo" +#~ msgstr "Nicholas Logozzo" + +#~ msgid "No" +#~ msgstr "否" + +#~ msgid "No End Date" +#~ msgstr "没有结束日期" + +#~ msgid "No Transactions Found" +#~ msgstr "没有找到交易" + +#~ msgid "No transactions match the specified filters." +#~ msgstr "没有符合条件的交易。" + +#~ msgid "Notes" +#~ msgstr "注释" + +#~ msgid "Nothing to import from the file." +#~ msgstr "从文件未能导入内容。" + +#~ msgid "Page {0}" +#~ msgstr "第 {0} 页" + +#~ msgid "PDF Password" +#~ msgstr "PDF 密码" + +#~ msgid "Receipt" +#~ msgstr "收据" + +#~ msgid "Receipt (File Inaccessible)" +#~ msgstr "收据(文件无法访问)" + +#~ msgid "Receipts" +#~ msgstr "收据" + +#~ msgid "Repeat End Date" +#~ msgstr "重复结束日期" + +#~ msgid "Repeat End Date (Invalid)" +#~ msgstr "重复结束日期(无效)" + +#~ msgid "Repeat Interval" +#~ msgstr "重复间隔" + +#~ msgid "Repeat Interval Changed" +#~ msgstr "重复间隔已更改" + +#~ msgid "Select Account" +#~ msgstr "选择账户" + +#~ msgid "Select Backup Folder" +#~ msgstr "选择备份文件夹" + +#~ msgid "Sort By Amount" +#~ msgstr "按金额排序" + +#~ msgid "Sort By Date" +#~ msgstr "按日期排序" + +#~ msgid "Sort By Id" +#~ msgstr "按 ID 排序" + +#~ msgid "Tags" +#~ msgstr "标签" + +#~ msgid "The password of the account was changed." +#~ msgstr "账户密码已更改。" + +#~ msgid "The password of the account was removed." +#~ msgstr "账户密码已被删除。" + +#~ msgid "The password will be removed upon closing this dialog." +#~ msgstr "关闭此对话框后,密码将被删除。" + +#~ msgid "The passwords do not match." +#~ msgstr "密码不匹配。" + +#~ msgid "" +#~ "The repeat interval was changed.\n" +#~ "What would you like to do with existing generated transactions?\n" +#~ "\n" +#~ "New repeat transactions will be generated based off the new interval." +#~ msgstr "" +#~ "重复间隔已更改。\n" +#~ "您想如何处理已生成的交易?\n" +#~ "\n" +#~ "新的重复交易将是使用新的间隔。" + +#~ msgid "This account has no money available to transfer." +#~ msgstr "该账户没有足够资金完成转账。" + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Deleting only the source transaction will allow individual\n" +#~ "generated transactions to be modifiable." +#~ msgstr "" +#~ "此交易是重复交易的来源。\n" +#~ "希望如何更改重复交易?\n" +#~ "\n" +#~ "只删去此源交易,将保留后续生成的交易。" + +#~ msgid "" +#~ "This transaction is a source repeat transaction.\n" +#~ "What would you like to do with the repeat transactions?\n" +#~ "\n" +#~ "Updating only the source transaction will disassociate\n" +#~ "generated transactions from the source." +#~ msgstr "" +#~ "此交易是重复交易的来源。\n" +#~ "想要如何处理已经生成的交易?\n" +#~ "\n" +#~ "仅更新源交易,会将后续生成的交易与源交易分开。" + +#~ msgid "Tobias Bernard" +#~ msgstr "Tobias Bernard" + +#~ msgid "Transaction" +#~ msgstr "交易" + +#~ msgid "Type" +#~ msgstr "类型" + +#~ msgid "Unable to export account to file." +#~ msgstr "无法将账号导出到文件。" + +#~ msgid "" +#~ "Unable to import information from the file. Please ensure that the app " +#~ "has permissions to access the file and try again." +#~ msgstr "不能从文件导入信息。请确定应用具有访问该文件的权限,然后重试。" + +#~ msgid "Unable to import transactions from the file." +#~ msgstr "不能从文件中导入交易。" + +#~ msgid "" +#~ "Unable to open the account. Please ensure that the app has permissions to " +#~ "access the file and try again." +#~ msgstr "不能打开账号。请确定此应用有文件访问权限,然后重试。" + +#~ msgid "Unable to overwrite an existing account." +#~ msgstr "不能覆盖已有的账号。" + +#~ msgid "Untagged" +#~ msgstr "未加标签" + +#~ msgid "Upcoming transactions" +#~ msgstr "即将发生的交易" + +#~ msgid "Update Only Source" +#~ msgstr "仅更新源交易" + +#~ msgid "Update Source and Generated" +#~ msgstr "更新源交易和后续交易" + +#~ msgid "Update Transaction" +#~ msgstr "更新交易" + +#~ msgid "Upload" +#~ msgstr "上传" + +#~ msgid "View" +#~ msgstr "查看" + +#~ msgid "" +#~ "Would you like to password-protect the PDF file?\n" +#~ "\n" +#~ "If the password is lost, the PDF will be inaccessible." +#~ msgstr "" +#~ "想要给PDF文件添加密码保护吗?\n" +#~ "\n" +#~ "如果忘记密码,就无法访问该PDF文件了。" + +#~ msgid "Yes" +#~ msgstr "是" + +#~ msgid "Manage the currency used by the account." +#~ msgstr "管理账号使用的货币。" + +#~ msgid "Set a new password or remove one." +#~ msgstr "设置新密码或者删除原密码。" + +#~ msgid "Other" +#~ msgstr "其他" + +#~ msgid "Unlimited" +#~ msgstr "无限制" + +#~ msgid "CSV" +#~ msgstr "CSV" + +#~ msgid "Export Current View" +#~ msgstr "导出当前视图" + +#~ msgid "PDF" +#~ msgstr "PDF" + +#~ msgid "Search by description" +#~ msgstr "按详情搜索" + +#~ msgid "Today's Overview" +#~ msgstr "今日概况" + +#~ msgid "Select All Overview Filters" +#~ msgstr "选择所有概况筛选器" + +#~ msgid "New Group (Ctrl+G)" +#~ msgstr "新建群組 (Ctrl+G)" + +#~ msgid "Toggle Groups Visibility" +#~ msgstr "切换群组可见性" + +#~ msgid "Select All Groups Filters" +#~ msgstr "选择所有群组筛选器" + +#~ msgid "Unselect Groups Filters" +#~ msgstr "取消选择群组筛选器" + +#~ msgid "Toggle Tags Visibility" +#~ msgstr "切换标签可见性" + +#~ msgid "Select All Tags Filters" +#~ msgstr "选择所有标签筛选器" + +#~ msgid "Unselect Tags Filters" +#~ msgstr "取消选择标签筛选器" + +#~ msgid "Calendar" +#~ msgstr "日历" + +#~ msgid "Select Current Month" +#~ msgstr "选择当前月" + +#~ msgid "Reset To Today" +#~ msgstr "重置到今天" + +#~ msgid "Today" +#~ msgstr "今天" + +#~ msgid "Select Range" +#~ msgstr "选择范围" + +#~ msgctxt "DateRange" +#~ msgid "Start" +#~ msgstr "开始" + +#~ msgctxt "DateRange" +#~ msgid "End" +#~ msgstr "结束" + +#~ msgid "Sort From First To Last" +#~ msgstr "排序:从最先到最后" + +#~ msgid "Sort From Last To First" +#~ msgstr "排序:从最后到最先" + +#~ msgid "New Transaction (Ctrl+Shift+N)" +#~ msgstr "新建交易 (Ctrl+Shift+N)" + +#~ msgctxt "Transaction" +#~ msgid "New" +#~ msgstr "新建" + +#~ msgid "Suggestions" +#~ msgstr "建议" + +#~ msgid "Converter" +#~ msgstr "换算器" + +#~ msgid "Loading..." +#~ msgstr "正在载入……" + +#~ msgid "All Accounts" +#~ msgstr "所有账户" + +#~ msgid "Color" +#~ msgstr "顏色" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "This is only a useful label that doesn't affect how the app works." +#~ msgstr "这是一个有用的标签,不影响应用运行。" + +#~ msgid "Enter Password To Login:" +#~ msgstr "输入登录密码:" + +#~ msgid "Checking Account Color" +#~ msgstr "支票账户颜色" + +#~ msgid "Savings Account Color" +#~ msgstr "储蓄账户颜色" + +#~ msgid "Business Account Color" +#~ msgstr "商务账户颜色" + +#~ msgid "Use Native Digits" +#~ msgstr "使用原生数字" + +#~ msgid "" +#~ "Whether to use numerals that are native for your locale instead of latin " +#~ "digits." +#~ msgstr "是否使用您所在地区的原生数字,而不是拉丁数字。" + +#~ msgid "Backup" +#~ msgstr "备份" + +#~ msgid "CSV Backup Folder" +#~ msgstr "CVS备份文件夹" + +#~ msgid "" +#~ "Unencrypted accounts will automatically export as CSV files to this " +#~ "folder when a change is made." +#~ msgstr "修改之后,未加密的账户将自动导出为CVS文件,保存到此文件夹中。" + +#~ msgid "Clear Backup Folder" +#~ msgstr "清除备份文件夹" + +#~ msgid "No Reminders" +#~ msgstr "不提醒" + +#~ msgctxt "Title" +#~ msgid "Transfer" +#~ msgstr "转账" + +#~ msgid "New Transaction" +#~ msgstr "新建交易" + +#~ msgid "Toggle Sidebar" +#~ msgstr "切换侧边栏" + +#~ msgid "Make a Copy" +#~ msgstr "制作复本" + +#~ msgid "Clear End Date" +#~ msgstr "清除结束日期" + +#~ msgid "Daily" +#~ msgstr "每日" + +#~ msgid "Weekly" +#~ msgstr "每周" + +#~ msgid "Biweekly" +#~ msgstr "双周" + +#~ msgid "Monthly" +#~ msgstr "每月" + +#~ msgid "Quarterly" +#~ msgstr "每季" + +#~ msgid "Yearly" +#~ msgstr "每年" + +#~ msgid "Biyearly" +#~ msgstr "每两年" + +#~ msgid "Use group color" +#~ msgstr "使用群组颜色" + +#~ msgid "Use unique color" +#~ msgstr "使用独特颜色" + +#~ msgid "Enter a new tag name..." +#~ msgstr "请输入新的标签名称……" + +#~ msgid "Add Tag" +#~ msgstr "添加标签" + +#~ msgid "Extras" +#~ msgstr "额外" + +#~ msgid "Manage extra fields of the transaction." +#~ msgstr "管理交易的额外字段。" + +#~ msgid "Edit Transaction" +#~ msgstr "编辑交易" + +#~ msgid "" +#~ "Transferring money will create an expense transaction with the given " +#~ "amount in this account and an income transaction with the given amount in " +#~ "the account to transfer to." +#~ msgstr "" +#~ "转账将会在此账户的收入合计中产生一笔支出,并在转入的账户的收入合计中产生一" +#~ "笔收入。" + +#~ msgid "Select a destination account" +#~ msgstr "选择目标账户" + +#~ msgid "Recent Accounts" +#~ msgstr "近期账户" + +#~ msgid "Conversion Needed" +#~ msgstr "需要换算" + +#~ msgid "Use Custom Rates" +#~ msgstr "使用自定义费率" + +#~ msgid "Enter the conversion rates manually" +#~ msgstr "手动输入换算费率" + +#~ msgctxt "Button" +#~ msgid "Transfer" +#~ msgstr "转账" + +#~ msgctxt "Account" +#~ msgid "New" +#~ msgstr "新建" + +#~ msgid "Toggle Graphs" +#~ msgstr "切换图表" + +#, fuzzy +#~ msgid "result" +#~ msgstr "Result" + +#, fuzzy +#~ msgid "money;finance;wallet;cash;bank;Nickvision;" +#~ msgstr "money;finance;wallet;cash;bank;GTK;Nickvision;" + +#~ msgid "Please wait while transactions import..." +#~ msgstr "正在导入交易,请稍候..." + +#, csharp-format +#~ msgid "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" +#~ msgstr "" +#~ "David Lapshin {0}\n" +#~ "Tobias Bernard {1}" + +#, csharp-format +#~ msgid "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" +#~ msgstr "" +#~ "Nicholas Logozzo {0}\n" +#~ "Fyodor Sobolev {1}\n" +#~ "DaPigGuy {2}" + +#~ msgid "Customize the application's user interface." +#~ msgstr "自訂介面" + +#~ msgid "Customize how Denaro uses locale settings." +#~ msgstr "Customize how Denaro uses locale settings." + +#, fuzzy +#~ msgid "Customize backup locations for Denaro accounts." +#~ msgstr "自訂介面" + +#~ msgid "Save" +#~ msgstr "儲存" + +#~ msgid "Hide" +#~ msgstr "隱藏" + +#~ msgid "Show" +#~ msgstr "Show" + +#~ msgid "Reset Dates Filters" +#~ msgstr "重置時間篩選條件" + +#~ msgid "Delete Group?" +#~ msgstr "刪除組群?" + +#~ msgid "Delete Transaction?" +#~ msgstr "刪除此交易?" + +#, fuzzy +#~ msgid "AccountSettings" +#~ msgstr "Account Settings" + +#~ msgid "Version: {0}" +#~ msgstr "版本: {0}" + +#~ msgid "About {0}" +#~ msgstr "關於{0}" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Contributors on GitHub ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "GitHub上的開發者 ❤️ https://github.com/NickvisionApps/Denaro/graphs/" +#~ "contributors" + +#~ msgid "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev\n" +#~ "DaPigGuy https://github.com/DaPigGuy" +#~ msgstr "" +#~ "Nicholas Logozzo https://github.com/nlogozzo\n" +#~ "Fyodor Sobolev https://github.com/fsobolev" + +#~ msgid "" +#~ "David Lapshin https://github.com/daudix-UFO\n" +#~ "Tobias Bernard https://github.com/bertob" +#~ msgstr "David Lapshin https://github.com/daudix-UFO" + +#~ msgid "Transfer Money (Ctrl+T)" +#~ msgstr "轉帳 (Ctrl+T)" + +#~ msgid "Import from File (Ctrl+I)" +#~ msgstr "從檔案導入 (Ctrl+I)" + +#~ msgid "Filters" +#~ msgstr "篩選" + +#~ msgid "Imported {0} transactions from file." +#~ msgstr "從檔案中導入 {0} 筆交易" + +#~ msgid "Enter description here" +#~ msgstr "請在此輸入資料" + +#~ msgid "Money Account (*.nmoney)" +#~ msgstr "軟體Money的帳戶 (*.nmoney)" + +#~ msgid "Hide Groups" +#~ msgstr "Hide Groups" + +#~ msgid "Show Groups" +#~ msgstr "Show Groups" + +#~ msgid "" +#~ "— Manage multiple accounts at a time, with a familiar tab interface\n" +#~ "— Easily filter transactions by type, group, or date\n" +#~ "— Easily repeat transactions, such as bills that occur every month\n" +#~ "— Transfer money from one account to another\n" +#~ "— Export an account as a CSV file and import a CSV, OFX or QIF file to " +#~ "bulk add transactions to an account" +#~ msgstr "Manage your personal finances" + +#~ msgid "New Window" +#~ msgstr "New Window" diff --git a/snap/denaro.patch b/snap/denaro.patch deleted file mode 100644 index df6b2a9ae..000000000 --- a/snap/denaro.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in ---- a/NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in -+++ b/NickvisionMoney.Shared/Linux/org.nickvision.money.desktop.in -@@ -3,7 +3,7 @@ - Name=Denaro - Comment=Manage your personal finances - Exec=@EXEC@ %F --Icon=org.nickvision.money -+Icon=snap.denaro.org.nickvision.money - Terminal=false - Type=Application - MimeType=application/x-nmoney -diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in ---- a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in -+++ b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in -@@ -1,6 +1,7 @@ - - - org.nickvision.money -+ snap.denaro.org.nickvision.money - CC0-1.0 - MIT - Denaro diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index a1251603e..6dabf8d30 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,76 +1,150 @@ name: denaro -base: core22 +base: core22 adopt-info: denaro -source-code: https://github.com/nlogozzo/NickvisionMoney -issues: https://github.com/nlogozzo/NickvisionMoney/issues -donation: https://github.com/sponsors/nlogozzo -contact: https://matrix.to/#/#nickvision:matrix.org -grade: stable -confinement: strict -architectures: - - build-on: amd64 - - build-on: arm64 - - build-on: armhf +grade: stable +confinement: strict +compression: lzo + +package-repositories: + - type: apt + ppa: ubuntu-toolchain-r/test + priority: always + +lint: + ignore: + - classic + - library parts: - # When the snap of `blueprint-compiler` comes up, we can remove this part upto L21 - blueprint-compiler: + build-deps: + plugin: nil + build-packages: + - g++-13 + - gcc-13 + - libjsoncpp-dev + - libidn-dev + - libjpeg-dev + - libtiff-dev + - libpng-dev + - libfreetype-dev + - libblas-dev + - liblapack-dev + override-build: | + cp -r ${CRAFT_PART_SRC}/ ${CRAFT_STAGE}/ + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100 --slave /usr/bin/g++ g++ /usr/bin/g++-13 --slave /usr/bin/gcov gcov /usr/bin/gcov-13 + + deps: + after: [build-deps] + plugin: nil + stage-packages: + - libjsoncpp25 + - libboost-date-time1.74.0 + - libstdc++6 + - gnuplot + prime: + - usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/libstdc++*.so* + - usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/libjsoncpp* + - usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/libboost_date_time.so.1.74.0 + - usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/libboost_thread.so.1.74.0 + + maddy: + after: [build-deps] + source: https://github.com/progsource/maddy.git + source-tag: '1.3.0' + plugin: dump + source-depth: 1 + override-prime: '' + + libnick: + after: [maddy, build-deps] + source: https://github.com/nickvisionapps/libnick.git + source-tag: '2024.5.1' + source-depth: 1 + plugin: cmake + cmake-parameters: + - -DCMAKE_INSTALL_PREFIX=/usr + - -DBUILD_TESTING=OFF + - -DCMAKE_BUILD_TYPE=Release + build-environment: + - CPLUS_INCLUDE_PATH: ${CRAFT_STAGE}/include + build-packages: + - libboost-all-dev + - libssl-dev + - uuid-dev + override-prime: '' + + libxmlplusplus: + after: [build-deps] + source: https://github.com/libxmlplusplus/libxmlplusplus.git + source-tag: '5.2.0' source-depth: 1 - source: https://gitlab.gnome.org/jwestman/blueprint-compiler.git - source-tag: 'v0.10.0' plugin: meson + build-packages: + - libicu-dev meson-parameters: - --prefix=/usr - override-prime: '' + - -Dmaintainer-mode=false + prime: + - usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/libxml++-5.0*.so* + + podofo: + after: [build-deps] + source: https://github.com/podofo/podofo.git + source-tag: '0.10.3' + source-depth: 1 + plugin: cmake + cmake-parameters: + - -DCMAKE_INSTALL_PREFIX=/usr + - -DCMAKE_BUILD_TYPE=Release + - -DPODOFO_BUILD_TEST=OFF + - -DPODOFO_BUILD_EXAMPLES=OFF + build-environment: + - CPLUS_INCLUDE_PATH: ${CRAFT_STAGE}/include + + rapidcsv: + after: [build-deps] + source: https://github.com/d99kris/rapidcsv.git + source-tag: 'v8.82' + source-depth: 1 + plugin: cmake + cmake-parameters: + - -DCMAKE_INSTALL_PREFIX=/usr + - -DCMAKE_BUILD_TYPE=Release + build-environment: + - CPLUS_INCLUDE_PATH: ${CRAFT_STAGE}/include + denaro: - after: # remove this and next line too when the snap of `blueprint-compiler` comes up - - blueprint-compiler - plugin: nil + after: [build-deps, maddy, libnick, libxmlplusplus, matplotplusplus, podofo, rapidcsv] + plugin: cmake source: . - parse-info: [ usr/share/metainfo/org.nickvision.money.metainfo.xml ] + build-snaps: + - cmake + - blueprint-compiler + cmake-parameters: + - -DCMAKE_INSTALL_PREFIX=/snap/denaro/current/usr + - -DCMAKE_BUILD_TYPE=Release + - -DBUILD_TESTING=OFF + stage-packages: + - libstdc++6 build-environment: - - DOTNET_CLI_TELEMETRY_OPTOUT: '1' - - PATH: $HOME/.dotnet:$HOME/.dotnet/tools:$HOME/.cargo/bin:$PATH - - DOTNET_ROOT: $HOME/.dotnet - - PYTHONPATH: $CRAFT_STAGE/usr/lib/python3/dist-packages:$PYTHONPATH - - GI_TYPELIB_PATH: /snap/gnome-42-2204-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET/girepository-1.0:/snap/gnome-42-2204-sdk/current/usr/lib/girepository-1.0 - build-packages: - - wget - override-pull: | - craftctl default - wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh - chmod +x ./dotnet-install.sh - ./dotnet-install.sh --channel 8.0 - patch -p1 < $CRAFT_PROJECT_DIR/snap/denaro.patch - override-build: | - craftctl default - cd $CRAFT_PART_SRC - dotnet tool restore - dotnet cake --target=Publish --prefix=/snap/denaro/current/usr --ui=gnome --self-contained - dotnet cake --target=Install --destdir=$CRAFT_PART_INSTALL - mkdir -p $CRAFT_PART_INSTALL/meta/gui - cp -r $CRAFT_PART_INSTALL/snap/denaro/current/usr/share/icons $CRAFT_PART_INSTALL/meta/gui/ - for i in `find $CRAFT_PART_INSTALL/meta/gui/icons -name "*.svg" -o -name "*.png"`; do - mv $i "`dirname $i`/snap.$CRAFT_PROJECT_NAME.`basename $i`" - done + - CMAKE_PREFIX_PATH: ${CRAFT_STAGE}/usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/cmake${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH} + parse-info: [usr/share/metainfo/org.nickvision.money.metainfo.xml] organize: snap/denaro/current: . - prime: - - -snap/current slots: denaro: interface: dbus bus: session - name: org.nickvision.denaro - + name: org.nickvision.money apps: denaro: - command: usr/bin/org.nickvision.money - extensions: [gnome] + command: usr/lib/org.nickvision.money/org.nickvision.money.gnome + desktop: usr/share/money/org.nickvision.money.desktop common-id: org.nickvision.money + extensions: [gnome] plugs: - - home + - unity7 - network - network-status